conception de macro sur excel

conception de macro sur excel - VB/VBA/VBS - Programmation

Marsh Posté le 20-04-2006 à 11:46:15    

Bonjour,
 
je souhaite écrire une macro qui me permettra d'effectuer la tâche suivante:
 
1) j'ai une liste de 210 noms de salariés
2) je dois lire chaque nom et le copier l'un après l'autre dans une cellule inclusedans un  document situé sur la même feuille excel
cette copie déclanche la recherche d'éléments individuels puis
3) impression du document
 
merci de m'aider dans la rédaction du script
 
lecture du 1er nom
copie de ce nom dans la cellule
impression du document
effacement de la cellule
passage au nom suivant  
etc...
 
 
 

Reply

Marsh Posté le 20-04-2006 à 11:46:15   

Reply

Marsh Posté le 20-04-2006 à 12:01:15    

Le plus simple est d'allet dans (outils --> Macro -- nouvelle Macro) pour enregistrer une nouvelle macro.
 
Apres vous faites manuellement les opérations que vous avez indiqué , une fois finie vous arretez l'enregistrement de la macro.
 
Apres allez dans l'editeur visual basic dans (outils --> Macro -- Visual Basic Editor) chercher le nom que vous avez donné à la macro que vous avez enregitrée dans l'explorateur de projets -- > modules --- nom_macro() : Vous aurez le code généré par Excell et qui correspond au taches manuelles que vous avez effectuées

Reply

Marsh Posté le 20-04-2006 à 14:32:46    

Ok, mci pour l'info, j'ai déjà tenté ,cependant cette démarche ne me donnera pas la syntaxe de la boucle nécessaire pour lire tte la liste depuis n ,et c'est cela dont j'ai besoin

Reply

Marsh Posté le 20-04-2006 à 16:27:13    

salut travailledur,
 
l'enregistreur de macro t'as donné une base pour le code, elle va permettre à ceux qui vont t'aider d'avoir les informations précises sur ce que tu veux faire sur un exemple concret (sur quelle feuille est ta liste de nom, dans quelle cellule tu colles ce nom, quelle feuille ou plage doit être imprimée...). Il sera ensuite plus facile de te guider, de te conseilller et de généraliser ton code à l'intégralité de ta liste de nom, si tu nous présentes au moins ce code.
Maintenant si tu veux une information sur les boucles tu peux regarder les boucles for...Next et Do...loop dans l'aide excel.
@+

Reply

Marsh Posté le 20-04-2006 à 16:41:47    


Sub Main()
Dim objSheet As Worksheet
Dim k As Integer
 
    ' Recup de la feuille du classeur
    Set objSheet = ThisWorkbook.ActiveSheet
     
    ' On boucle sur la liste des noms
    k = 1
    Do While objSheet.Range("A" & k).Value <> ""
        ' Copie du nom de la liste vers la cellule du formulaire
        objSheet.Range("C3" ).Value = objSheet.Range("A" & k).Value
        ' Rapatrier les données liées au nom
         
        ' Imprimer.
 
        k = k + 1
    Loop
 
    MsgBox "Terminé!"
 
End Sub


 
C'est un truc dans le genre?

Reply

Marsh Posté le 20-04-2006 à 17:00:18    

Merci pour vos réponses, j'ai suivi les indications de watashi et je pense que l'approche de jihemair est sur la voie, je vais tenter d'imbriquer la condition; en attendant voilà ci-après le code de l'enregistrement macro. brut de fonderie
 
    Range("I6" ).Select
    Selection.Copy
    Range("D9" ).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Selection.ClearContents
    Range("I7" ).Select
End Sub
 
encore merci à vous

Reply

Marsh Posté le 21-04-2006 à 09:22:48    

Salut travailledur,
 
J'ai repris ton code  puis j'ai placé une boucle For comme ça avec l'exemple de jihemair tu  auras pu voir un exemple de chacune des boucles dont je t'avait parlé.
Le code est commenté tu devrais pouvoir t'y retrouver.

Code :
  1. Sub ImprimeSelonListe()
  2. 'Déclaration et initialisation des variables
  3. Dim i As Integer   'Variable pour la boucle de traitement
  4. Dim Ws As Worksheet
  5. Set Ws = ActiveSheet ' le mieux serait ici de mettre
  6. 'Set Ws= thisworkbook.worksheets("NomdeLaFeuille" )
  7. Dim LigneFin As Integer, LigneDebut As Integer
  8. LigneDebut = 6
  9. 'Calcul de la première ligne remplie de la colonne I en paartant du bas de la feuille
  10. 'Te permet d'avoir des cellules vides dans ta liste
  11. LigneFin = Ws.Cells(65536, 9).End(xlUp).Row
  12. 'Ta cellule de destination de la valeur
  13. Dim MaCell As Range
  14. Set MaCell = Ws.Range("D9" )
  15. 'Ta boucle de traitement
  16. For i = LigneDebut To LigneFin Step 1
  17.     'précaution en cas de cellule vide dans ta liste
  18.     'vide non traité
  19.     If Ws.Cells(i, 9).Value <> "" Then
  20.         ' Placer la valeur
  21.         MaCell.Value = Ws.Cells(i, 9).Value
  22.         ' Imprimer ta page
  23.         Ws.PrintOut Copies:=1, Collate:=True
  24.     End If
  25. Next i
  26. 'Vider ta cellule une fois le traitement terminé
  27. MaCell.Value = ""
  28. End Sub

Hésites pas à poser des questions si tu as quopique ce soit que tu ne comprends pas :)
@+

Reply

Marsh Posté le 21-04-2006 à 09:34:14    

merci pour le travail watashi, c'est sympa
 
je mets en application et te tiens au courant de l'affaire
 
@+ , bonne journée
 
travailledur

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed