Présentation
Des macros permettant de numéroter chaque exemplaire d'un document.
Macros à placer dans Normal.dotm par exemple, pour qu'elles soient tout le temps accessible.
Préalable
Placer un champ VariableDoc ayant pour nom "wd_NbCopie" servant de compteur à l'endroit où la numérotation doit apparaitre.

Résultats
Les fichiers sont générés dans le même dossier que le document de départ (nécessitant donc d'être enregistré avant l'exécution).


Les codes
Macro 1 : Compteur réinitialisé à chaque exécution
Sub doc_numerot1()
' Objectif : Par session d'impression, incrémente le champ VariableDoc "wd_NbCopie",
' permettant de numéroter chaque exemplaire sous la forme n/total et génère
' autant de PDF (sauvegardés dans le dossier de l'original) ou d'impression.
' Utilisation : Placer un champ VariableDoc (DOCVARIABLE) ayant comme nom "wd_NbCopie"
' dans le document pour afficher la numérotation.
Dim lgNbCopie As Long
Dim lgCpt As Long
On Error GoTo erreur
If ActiveDocument.Path = "" Then
MsgBox "Vous devez enregistrer votre document avant d'exécuter cette macro !", vbCritical, "Exécution impossible"
Exit Sub
End If
lgNbCopie = InputBox("Combien de copies voulez-vous générer ?")
For lgCpt = 1 To lgNbCopie
ActiveDocument.Variables("wd_NbCopie").Value = lgCpt & "/" & lgNbCopie
ActiveDocument.Fields.Update
' Export PDF
ActiveDocument.SaveAs2 ActiveDocument.FullName & "_" & lgCpt & ".Pdf", wdFormatPDF
' Impression
'ActiveDocument.PrintOut
Next
Exit Sub
erreur:
MsgBox Err.Number & " : " & Err.Description
End Sub
Macro 2 : Le compteur part du dernier numéro préalablement utilisé
Sub doc_numerot2()
' Objectif : Incrémente le champ VariableDoc "wd_NbCopie" permettant de numéroter chaque
' exemplaire (pas de réinitialisation du n° entre chaque session) et génère
' autant de PDF (sauvegardés dans le dossier de l'original) ou d'impression.
' Utilisation : Placer un champ VariableDoc (DOCVARIABLE) ayant comme nom "wd_NbCopie"
' dans le document pour afficher la numérotation.
Dim lgNbCopie As Long
Dim lgCpt As Long
On Error GoTo erreur
If ActiveDocument.Path = "" Then
MsgBox "Vous devez enregistrer votre document avant d'exécuter cette macro !", vbCritical, "Exécution impossible"
Exit Sub
End If
lgNbCopie = InputBox("Combien de copies voulez-vous générer ?")
For lgCpt = 1 To lgNbCopie
ActiveDocument.Variables("wd_NbCopie").Value = ActiveDocument.Variables("wd_NbCopie").Value + 1
ActiveDocument.Fields.Update
' Export PDF
ActiveDocument.SaveAs2 ActiveDocument.FullName & "_" & ActiveDocument.Variables("wd_NbCopie").Value & ".Pdf", wdFormatPDF
' Impression
'ActiveDocument.PrintOut
Next
ActiveDocument.Save
Exit Sub
erreur:
If Err.Number = 5825 Or Err.Number = 13 Then
' 5825 > 1ere utilisation
' 13 > Contient du texte (utilisation de la macro doc_numerot1)
ActiveDocument.Variables("wd_NbCopie").Value = 0
Resume
Else
MsgBox Err.Number & " : " & Err.Description
End If
End Sub
Macro 2 bis : Pour modifier la valeur du compteur
Sub doc_numerot3()
' Objectif : Réinitialisation du champ VariableDoc wd_NbCopie
' Utilisation : Modifier intNumDernierExemplaire pour indiquer le dernier numéro considéré comme utilisé
' Exemple : = 0 pour repartir à 1
Const intNumDernierExemplaire As Integer = 0
ActiveDocument.Variables("wd_NbCopie").Value = intNumDernierExemplaire
End Sub
Merci pour votre attention bienveillante.