VBA pour publipostage Excel à WORD

Bonjour à tous, en parcourant le forum j'ai réussi à obtenir ce que je cherchais. Ouvrir la lettre par un simple clic. Seulement dans le code VBA, il faut définir les noms de colonne...n'y aurait-il pas une autre méthode ? Un grand merci pour vos réponses négatives ou positives. Je mets une copie du code .

Sub bouton()

'On ouvre le fichier word et on le masque
Set wordApp = CreateObject("word.Application")
Set WordDoc = wordApp.Documents.Open("fichier.docx")
wordApp.Visible = False

'On remplie le fichier word
WordDoc.Bookmarks("Emprunt").Range.Text = Range("D2").Value
WordDoc.Bookmarks("Nom").Range.Text = Range("E2").Value
WordDoc.Bookmarks("Laboratoire").Range.Text = Range("F2").Value
WordDoc.Bookmarks("Cout").Range.Text = Range("K2").Value
WordDoc.Bookmarks("Type de consultation").Range.Text = Range("S2").Value
WordDoc.Bookmarks("Date du pret").Range.Text = Range("H2").Value
WordDoc.Bookmarks("Retour le").Range.Text = Range("M2").Value
WordDoc.Bookmarks("N°Supeb").Range.Text = Range("G2").Value
WordDoc.Bookmarks("Reference du document").Range.Text = Range("I2").Value
WordDoc.Bookmarks("Type de consultation").Range.Text = Range("L2").Value
WordDoc.Bookmarks("RCR_Bu prêteuse").Range.Text = Range("P2").Value
WordDoc.Bookmarks("Organisme").Range.Text = Range("R2").Value


wordApp.Visible = True

End Sub

Bonjour et bienvenue sur le forum,

Qu'entendez-vous par " Seulement dans le code VBA, il faut définir les noms de colonne...n'y aurait-il pas une autre méthode ?" ?

Vous voudriez boucler sur la ligne et en extraire les informations une à une ? Puis passer à une nouvelle ligne pour un nouveau document Word ?

Si oui c'est peut-être possible mais il va falloir faire attention à l'ordre, et respecter celui des colonnes Excel plutôt que celui du document Word.

Le problème c'est que vu que les bookmarks sur Word sont nommés, il va bien falloir les énoncer à un moment, donc au final le code ne sera pas forcément plus court. Le top serait d'avoir une correspondance entre vos numéros de bookmark Word et les colonnes Excel. Ainsi on pourrait boucler sur une liste de numéros (par exemple i allant de 1 à 10) et écrire

For i=1 To 10
  WordDoc.Bookmarks(i).Range.Text = Cells(ligne, i).Value
Next i

Mais bon cela suppose que les colonnes Excel et les bookmarks Word soient dans le même ordre, ce qui n'est pas sûr.

Bonjour et merci pour votre retour super rapide. J'entendais que ça serait compliqué d'intervenir sur le code si l'utilisateur de ce fichier viendrait à changer le nom d'une colonne. Mais autant pour moi étant novice comme vous pouvez l'imaginer, je viens de me rendre compte (si modification de nom) qu'il fallait juste changer dans word "insérer un champs de fusion". Mais j'opte tout de même pour cette modification. Un grand merci et une belle journée.

For i=1 To 10
  WordDoc.Bookmarks(i).Range.Text = Cells(ligne, i).Value
Next i

Bonjour tout le monde,

Comment ça "changer dans word 'insérer un champs de fusion' " ?

Le principe des Bookmarks (signets) est de ne pas passer par le publipostage et les champs de fusion.

Bonjour, si modification de nom de colonne, il faut tout de même que l'on intervienne sur le champs de fusion dans Word ? J'ai testé et ai eu un message de retour de word "champ de fusion non valide"

Re-bonjour à tous, ma base Excel comporte pas mal d'onglets, j'ai donc opté pour une page accueil et ainsi rebondir sur les onglets plus facilement.

J'aurai aimé ajouter un bouton commande sur cette page Accueil, pour afficher comme demandé dans mon 1er message (publipostage excel à word)- Est-ce possible selon vous ? Un grand merci par avance pour vos réponses.

Sub boutonEmprunt()

'On ouvre le fichier word et on le masque
    Set wordApp = CreateObject("word.Application")
    Set WordDoc = wordApp.Documents.Open("Publipostage Editer Fiche Emprunt.docx")
    wordApp.Visible = False

For i = 1 To 12
  WordDoc.Bookmarks(i).Range.Text = Cells(ligne, i).Value
Next i

     wordApp.Visible = True

End Sub

Re-bonjour à tous, ma base Excel comporte pas mal d'onglets, j'ai donc opté pour une page accueil et ainsi rebondir sur les onglets plus facilement.

J'aurai aimé ajouter un bouton commande sur cette page Accueil, pour afficher comme demandé dans mon 1er message (publipostage excel à word)- Est-ce possible selon vous ? Un grand merci par avance pour vos réponses.

...

Bonjour,

Pour insérer un bouton qui lance la macro, 2 méthodes :

  • Onglet Développeur > Insérer > Contrôle de form (bouton = le premier)
  • Insérer une forme (onglet insertion > illustrations > forme) choisir celle que vous voulez, la designer. Puis la sélectionner > clic droit > assigner une macro. Quand on la clique gauche ça lance la macro (pour la modifier/déplacer : clic droit).

Bonjour et merci pour votre réponse rapide, Désolée j'ai dû mal m'exprimer. Le fait d'ajouter un bouton pour activer la macro ça je sais faire. Ce que je souhaiterais c'est par un autre bouton et du coup à partir de la page Accueil insérer la même macro mais sur une feuille complètement différente. Un grand merci une fois de plus.

Bonjour,

Tout est tellement flou, surtout sans fichier exemple, que je continue de passer la main à Saboh

C'est parce que votre macro réfère à la feuille active (ce qui n'est pas terrible).

Si vous avez dans votre feuille d'accueil une liste des noms de feuille (qui doivent correspondre exactement aux vrais noms), alors je vous propose la rapide correction ci-dessous :

Le fonctionnement est le suivant :

  1. Sélectionnez la cellule contenant le nom de la feuille à traiter sur la page d'accueil
  2. Lancez la macro (code corrigé ci-dessous)
Sub boutonEmprunt()

    'On ouvre le fichier word et on le masque
    Set wordApp = CreateObject("word.Application")
    Set WordDoc = wordApp.Documents.Open("Publipostage Editer Fiche Emprunt.docx")
    wordApp.Visible = False
    Dim sht As Worksheet
    Set sht = ThisWorkbook.Worksheets(Selection.Value)

    For i = 1 To 12
      WordDoc.Bookmarks(i).Range.Text = sht.Cells(ligne, i).Value
    Next i

     wordApp.Visible = True

End Sub

La macro plantera si la cellule sélectionnée contient un nom de feuille non valide. C'est intentionnel pour éviter de mal la lancer.

Merci pour ce retour, je vais tenter et reviendrai vous rapidement

Bonsoir, avec vos recommandations et correction de macro, cette procédure semble fonctionner, pas de plantage et ouvre bien la fiche emprunt via Word.

Un grand merci à vous.

Bonsoir, avec vos recommandations et correction de macro, cette procédure semble fonctionner, pas de plantage et ouvre bien la fiche emprunt via Word.

Un grand merci à vous.

Merci pour votre retour, content que ça fonctionne. Bonne journée.

Rechercher des sujets similaires à "vba publipostage word"