Enregistrement Word publipostage Nom Prénom.doc

Messages postés
2
Date d'inscription
vendredi 11 janvier 2013
Statut
Membre
Dernière intervention
17 septembre 2019
-
Bonjour à tous.

On me pose une colle et je compte sur vous pour m'aider, ne connaissant pas de langage. J'ai une macro sous word qui permet de séparer les documents avec les sauts de section. Voici la macro :

Sub couper_section()
   Application.Browser.Target = wdBrowseSection

   For i = 1 To ((ActiveDocument.Sections.Count) - 1)

      'Selectionne et copie le texte de la section dans le presse-papier
      ActiveDocument.Bookmarks("\Section").Range.Copy

      'Crée un nouveau document et colle le texte du presse-papier
      Documents.Add
      Selection.Paste

   ' Retire le saut de section qui a été copié
      Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend
      Selection.Delete Unit:=wdCharacter, Count:=1

     ChangeFileOpenDirectory "C:\TOTO\"
      DocNum = DocNum + 1
     ActiveDocument.SaveAs FileName:="EP" & DocNum & ".doc"
     ActiveDocument.Close
      'section suivante
     Application.Browser.Next
   Next i
   ActiveDocument.Close savechanges:=wdDoNotSaveChanges
End Sub

On voit que l'enregistrement se fait automatiquement mais les document se nomment EP1, EP2, EP3 etc.

J'ai trouvé un bout de prog pour aller chercher des champs de fusion, problème c'est que ça n'a pas l'air de comprendre ce que je veux lui dire ... Voilà celui que j'ai trouvé :

Sub Macro()
'
'définit "nom" comme étant la valeur du champ N°1 de la feuille de donnée utilisée dans le publipostage
nom = ActiveDocument.MailMerge.DataSource.DataFields(1).Value
'idem pour "prenom" en fonction de la valeur de la colonne n°2
prénom = ActiveDocument.MailMerge.DataSource.DataFields(2).Value

ChangeFileOpenDirectory "C:\TOTO\" 'c'est le chemin ou va être enregistré ton fichier -- bien ajouter le "\" à la fin.
'Ci-dessous la commande qui enregistre ton fichier en incluant le champs "société" qu'on a défini plus haut
ActiveDocument.SaveAs FileName:=nom " " & prenom & ".doc", FileFormat:=wdFormatDocument

End Sub


Du coup, en toute logique, j'arrive à ce résultat :

Sub couper_section()
   Application.Browser.Target = wdBrowseSection

   For i = 1 To ((ActiveDocument.Sections.Count) - 1)

      'Selectionne et copie le texte de la section dans le presse-papier
      ActiveDocument.Bookmarks("\Section").Range.Copy

      'Crée un nouveau document et colle le texte du presse-papier
      Documents.Add
      Selection.Paste

   ' Retire le saut de section qui a été copié
      Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend
      Selection.Delete Unit:=wdCharacter, Count:=1

   'définit "nom" en fonction de la valeur du champ de la 1ère colonne du tableau excel
      nom = ActiveDocument.MailMerge.DataSource.DataFields(1).Value
   'idem pour "prénom" en fonction de la valeur de la colonne n°2
     prenom = ActiveDocument.MailMerge.DataSource.DataFields(2).Value

ChangeFileOpenDirectory "C:\TOTO\"
ActiveDocument.SaveAs FileName:=nom & " " & prenom & ".doc", FileFormat:=wdFormatDocument

       ActiveDocument.Close
      'section suivante
     Application.Browser.Next
   Next i
   ActiveDocument.Close savechanges:=wdDoNotSaveChanges
End Sub


Le problème vient de l'erreur suivante ... :

Erreur d'exécution '5852': L'objet demandé n'est pas disponible.

En mode débogage, la ligne suivante est mise en cause :

nom = ActiveDocument.MailMerge.DataSource.DataFields(1).Value


Je pense donc que le problème sera le même avec le prénom... De plus, j'ai deux ActiveDocument.Close. Ca ne posera pas de soucis ?

Quelqu'un pourrait il m'aider svp ? Y'a t'il possibilité d'améliorer la macro ?

Je vous remercie par avance de vos lectures, avis, aides, petit déjeuner, etc.

Bien à vous !
Afficher la suite