0
(0)

Présentation

Macros permettant de numéroter chaque impression ou copie d'un document.

Macros à placer dans Normal.dotm par exemple afin 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.

Word : Macros de numérotation

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).

Word : Macros de numérotation
Word : Macros de numérotation Fichiers générés
Word : Macros de numérotation Fichier généré
Word : Macros de numérotation Fichier généré

Les codes

Version 1 : Le compteur est 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.
    ' Retour      : Copies du document
    ' Auteur      : Arnaud (www.1forme.fr).
    ' Licence     : CC-BY-NC-SA (Vous pouvez diffuser/partager/modifier cette macro dans les même conditions,
    '                           seulement à titre personnel et citant l'auteur/site d'origine.
    
    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 (décommenter pour générer un PDF)
        ActiveDocument.SaveAs2 ActiveDocument.FullName & "_" & lgCpt & ".Pdf", wdFormatPDF
        ' Impression (décommenter pour lancer une impression)
        'ActiveDocument.PrintOut
    Next
    Exit Sub
erreur:
    MsgBox Err.Number & " : " & Err.Description
End Sub

Version 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.
    ' Retour      : Copies du document
    ' Auteur      : Arnaud (www.1forme.fr).
    ' Licence     : CC-BY-NC-SA (Vous pouvez diffuser/partager/modifier cette macro dans les même conditions,
    '                           seulement à titre personnel et citant l'auteur/site d'origine.
    
    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 (décommenter pour générer un PDF)
        ActiveDocument.SaveAs2 ActiveDocument.FullName & "_" & ActiveDocument.Variables("wd_NbCopie").Value & ".Pdf", wdFormatPDF
        ' Impression (décommenter pour lancer une 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

Utilitaire : 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
    ' Retour      : Néant
    ' Auteur      : Arnaud (www.1forme.fr).
    ' Licence     : CC-BY-NC-SA (Vous pouvez diffuser/partager/modifier cette macro dans les même conditions,
    '                           seulement à titre personnel et citant l'auteur/site d'origine.
    Const intNumDernierExemplaire As Integer = 0
    ActiveDocument.Variables("wd_NbCopie").Value = intNumDernierExemplaire
End Sub

Merci pour votre attention bienveillante.

Article intéressant ?

Cliquez sur une étoile pour noter cet article !

Note moyenne 0 / 5. Nombre de votes : 0

Aucun vote pour l'instant ! Soyez le premier à noter ce post.

Nous sommes désolés que cet article ne vous ait pas été utile !

Améliorons cet article !

Dites nous comment nous pouvons améliorer cet article ?

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *