Macro excel itération

martinpoirier -  
 martinpoirier -
Bonjour,
j'ai créé une macro qui a l'aide d'un tableau excel rempli un document word a "trous"
mon problème est de pouvoir créer un bouton qui effectue cette macro pour chaque ligne de mon tableau (un bouton par ligne)
c'est a dire une ligne de donnée = un bouton = un document word rempli

je vous laisse ma programmation (je suis débutant alors soyez indulgent si je me suis compliqué la vie :-))

Sub EcritVersSignet()
Dim LaLettre As String
Dim Client
Dim Marque
Dim Modele
Dim Immat
Dim Serie
Dim Achat
Dim Km
Dim Couleur
Dim Puissance
Dim Equipement
Dim Prix
Dim Adresse
Dim ObjWord As Word.Application
Dim LeDocWord As Word.Document

On Error Resume Next

LaLettre = ThisWorkbook.Path & "\facturetype.doc"
Set ObjWord = CreateObject("Word.Application")
ObjWord.Visible = True
Set LeDocWord = ObjWord.Documents.Open(LaLettre)
Client = [J4]
Marque = [A4]
Modele = [B4]
Immat = [G4]
Serie = [F4]
Achat = [I4]
Km = [H4]
Couleur = [C4]
Puissance = [E4]
Equipement = [D4]
Prix = [O4]
Adresse = [K4]

With LeDocWord

.Bookmarks("client").Range.Text = Client
.Bookmarks("marque").Range.Text = Marque
.Bookmarks("modele").Range.Text = Modele
.Bookmarks("immat").Range.Text = Immat
.Bookmarks("serie").Range.Text = Serie
.Bookmarks("achat").Range.Text = Achat
.Bookmarks("km").Range.Text = Km
.Bookmarks("couleur").Range.Text = Couleur
.Bookmarks("puissance").Range.Text = Puissance
.Bookmarks("equipement").Range.Text = Equipement
.Bookmarks("prix").Range.Text = Prix
.Bookmarks("adresse").Range.Text = Adresse

End With

End Sub

merci d'avance
Configuration: Windows 7
Firefox 3.5.7

4 réponses

  1. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    Salut,
    tu peux parcourir ton tableau à l'aide d'une boucle For...Next, le seul truc est de determiner la derniere ligne de ton tableau :
    ex :
    derlig = range("A65536").end(xlup).row 'renvoie le numéro de la premiere ligne non vide en A en partant du bas

    For i = 2 to derlig 'boucle utilisée pour parcourir le tableau, le code entre For et Next sera executé pour caque valeur de i

    Client = Range("J" & i).value
    Marque = Range("A" & i).value
    'etc...la tu inseres ds word

    Next i 'fin de la boucle
    0
  2. martinpoirier
     
    merci de répondre aussi vite !
    j'avoue que la je suis un peu dépassé
    je voudrai m'arrêter a la ligne 590 et mon tableau débute comme vous avez pu le voir a la ligne 4
    vous serait il possible de m'aider a compléter cette "programmation" ?

    j'aimerai un bouton par ligne (pouvoir rééditer une facture à n'importe quel moment)

    merci d'avance
    0
  3. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    Re,
    ok j'ai un peu répondu à coté :s
    pourquoi ne pas faire un seul bouton, qui permet par exemple d'executer le code pour la ligne active ?
    0
  4. martinpoirier
     
    pourquoi pas mais je trouvais ca plus ergonomique et plus facile d'utilisation
    le but étant que ce tableau puisse être utilisé par n'importe qui
    j'aurai bien la solution de copier la macro pour chaque ligne de la renommer de changer les valeurs et enfin de créer un bouton mais merci la productivité ... je vais mettre un temps monstrueux a faire tout ca !
    0