Se connecter avec
S'enregistrer | Connectez-vous

eclater un doc en plisuers fichiers suite publipostage

Dernière réponse : dans Programmation

Bonjour à tous,

J'ai besoin d'éclater un document constitué par publipostage, en créant autant de .doc que de sections
du doc principal. Pour cela, j'ai utilisé la macro suivante que m'a passé un collegue :
cela marche bien, mais au lieu de numéroter séquentiellement les différents fichiers doc résultants
(voir instruction .... "prefixe & DocNum & ".doc" ), je voudrais remplacer le DocNum par le contenu
d'un champ de fusion (ex : nom) pour avoir cela à peu près :

fiche_dupont.doc
fiche_durant.doc
etc...

et non :

fiche_1.doc
fiche_2.doc
etc...

(jai essayé d'encadrer le champ de fusion par deux signets dans mon modèle... pas de chance,
les signets ne sont pas passés dans le doc fusionné)
(j'ai essayé aussi d'attribuer un style spécifique au champ de fusion dans mon modèle... meme punition)

Si quelqu'un a une idée, elle sera bien venue

Code de la macro :

  1. Sub creat_fiche()
  2. '
  3. 'code ouverture boite dialogue repertoire
  4. Const WINDOW_HANDLE = 0
  5. Const NO_OPTIONS = 0
  6. Set objShell = CreateObject("Shell.Application")
  7. Set objFolder = objShell.BrowseForFolder(WINDOW_HANDLE, "Choisir un répertoire:", NO_OPTIONS, "C:\")
  8.  
  9. If InStr(1, TypeName(objFolder), "Folder") > 0 Then
  10. Set objFolderItem = objFolder.Self
  11. objPath = objFolderItem.Path
  12.  
  13. 'Demande à l'utilisateur d'entrer le préfixe des fichiers à créer
  14. prefixe = InputBox("Entrez le préfixe du nom des fichiers :", "Préfixe du nom de fichier", "")
  15. If prefixe <> "" Then
  16. 'cas où l'utilisateur a spécifié un repertoire et un préfixe pour ses fichiers
  17.  
  18. Application.Browser.Target = wdBrowseSection
  19.  
  20. For i = 1 To ((ActiveDocument.Sections.Count) - 1)
  21.  
  22.  
  23. ActiveDocument.Bookmarks("\Section").Range.Copy
  24.  
  25. Documents.Add
  26. Selection.Paste
  27.  
  28. Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend
  29. Selection.Delete Unit:=wdCharacter, Count:=1
  30.  
  31. ChangeFileOpenDirectory objPath
  32. DocNum = DocNum + 1
  33. ActiveDocument.SaveAs FileName:=prefixe & DocNum & ".doc"
  34. ActiveDocument.Close
  35.  
  36. Application.Browser.Next
  37.  
  38. Next i
  39.  
  40. ActiveDocument.Close savechanges:=wdDoNotSaveChanges
  41.  
  42. MsgBox "Terminé"
  43.  
  44. Else
  45. MsgBox "Traitement Annulé"
  46. End If
  47.  
  48.  
  49.  
  50. Else
  51. MsgBox "Traitement Annulé"
  52. End If
  53.  
  54.  
  55. End Sub
Lassé par la pub ? Créez un compte
Lassé par la pub ? Créez un compte