Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Erreur de compilation caractère incorrect


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Erreur de compilation caractère incorrect
    Bonjour à tous,

    C'est mon premier post ici, avant, j'ai bien pris le soin de vérifier si je trouvais des réponses ici, il se peut que du fait de mon peu d'expérience, je sois passé à coté.

    Je bute sur une macro dont une partie s'exécute de temps en temps mais me renvoie dans 99 % des cas un message d'erreur de compilation avec la mention caractère incorrect.

    Si l'un de vous peut m'éclairer, peut être est ce juste dans la manière de lancer la macro? (Je suis un vrai néophyte)

    Le but du script est de créer à partir d'un publipostage word un export de chaque feuille (Attestation de sortie) en PDF en le nommant individuellement

    Dans un deuxième je chercherais à automatiser l'envoi par mail.

    Merci pour vos lumières qui me sortiront de mon impasse.

    Voici le script :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub Impression()
    '
    ' Impression Macro
    '
    '
    NbPage = ActiveDocument.Windows(1).Panes(1).Pages.Count
    For i = 1 To NbPage
    Dim nom
    nom = ActiveDocument.Sections(i).Range.Paragraphs(16).Range.Words(3)
    prenom = ActiveDocument.Sections(i).Range.Paragraphs(17).Range.Words(3)
        ActiveDocument.ExportAsFixedFormat OutputFileName:= _
            "C:\Users\10012055U\Desktop\Test\Attestation Ligue1 " & nom & prenom & ".pdf", _
            ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
            wdExportOptimizeForPrint, From:=i, To:=i, Range:=wdExportFromTo, _
            Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
            CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
            BitmapMissingFonts:=True, UseISO19005_1:=False
        ChangeFileOpenDirectory "C:\Users\10012055U\Desktop\Test\"
     
    Next
     
     
    End Sub


    Merci.

    David.

    "Je suis débutant et n'hésite pas à poser toutes les questions, c'est comme ça que je progresse."

  2. #2
    Expert éminent sénior
    Citation Envoyé par Courriertv Voir le message

    Bonjour,

    Vos variables nom et prenom contiennent sans doute des caractères interdits. Utilisez des Debug.print pour voir ce que vous récupérez dans vos variables juste après la ligne 10.

    Nb :
    • Je ne comprends pas bien votre boucle basée sur le nombre de pages, alors qu'ensuite elle porte sur le changement de section. Si le changement de page correspond à un changement de section ça peut aller, mais ce n'est pas rationnel.
    • Déclarez toutes vos variables en début de procédure.
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  3. #3
    Candidat au Club
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Vos variables nom et prenom contiennent sans doute des caractères interdits. Utilisez des Debug.print pour voir ce que vous récupérez dans vos variables juste après la ligne 10.

    Nb :
    • Je ne comprends pas bien votre boucle basée sur le nombre de pages, alors qu'ensuite elle porte sur le changement de section. Si le changement de page correspond à un changement de section ça peut aller, mais ce n'est pas rationnel.
    • Déclarez toutes vos variables en début de procédure.
    Merci Eric, cela me semble très pertinent, effectivement, j'ai purgé les caractères spéciaux du document original. J'ai changé le Sections->Pages. Par contre comment déclarer les variables? J'ai toujours la même erreur. Est il possible que je lance la macro de manière incorrecte?

    Merci en tout cas de me consacrer un peu de temps.

    David.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Sub Impression()
    '
    ' Impression Macro
    '
    '
    NbPage = ActiveDocument.Windows(1).Panes(1).Pages.Count
     
    For i = 1 To NbPage
     
    Dim Nom
     
    Nom = ActiveDocument.Pages(i).Range.Paragraphs(16).Range.Words(3)
     
    Dim Prenom
     
    Prenom = ActiveDocument.Pages(i).Range.Paragraphs(17).Range.Words(3)
     
        ActiveDocument.ExportAsFixedFormat OutputFileName:= _
            "C:\Users\10012055U\Desktop\Test\Attestation Ligue1 " & Nom & Prenom & ".pdf", _
            ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
            wdExportOptimizeForPrint, From:=i, To:=i, Range:=wdExportFromTo, _
            Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
            CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
            BitmapMissingFonts:=True
     
     
    Next
     
     
    End Sub

  4. #4
    Expert éminent sénior
    Citation Envoyé par Courriertv Voir le message

    Sans voir votre document, je ne peux vous aider. Si vous en avez la possibilité, postez le en .zip.
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  5. #5
    Candidat au Club
    Citation Envoyé par Eric KERGRESSE Voir le message
    Sans voir votre document, je ne peux vous aider. Si vous en avez la possibilité, postez le en .zip.
    Merci Eric, etant donné qu'il comprend quelques données liées au personnel, puis je vous envoyer le fichier par mail? On continuera à poster sur le site le code.

    Merci à vous,

    David.

  6. #6
    Candidat au Club
    Merci à vous tous.
    Merci à vous tous et particulièrement à Eric.

    L'erreur venait d'un bout de code présent dans un autre onglet de la console qui corrompait le script. Je ne savais pas qu'en lançant ma macro, je lançait aussi ce code.

    On apprend en forgeant.

    Merci encore pour le temps que vous avez pris pour me répondre et notamment pour m'aiguiller sur la logique Pages-Sections et mettre un peu de rigueur dans ma macro.

    Bon weekend.

  7. #7
    Expert éminent sénior
    Citation Envoyé par Courriertv Voir le message

    Bonjour,

    Au cas où vous en auriez besoin, testez cette fonction qui permet d'éliminer les caractères interdits dans un nom de fichier. La liste peut être complétée.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Sub TestSansCaracteresSpeciaux()
     
        Debug.Print SansCaracteresSpeciaux(Selection.Range)
     
    End Sub
     
     
    Function SansCaracteresSpeciaux(ByVal ChaineATraiter As String) As String
     
    Dim I As Integer
     
        SansCaracteresSpeciaux = ""
        For I = 1 To Len(ChaineATraiter)
            Select Case Mid(ChaineATraiter, I, 1)
                   Case "'", "?", ".", "<", ">", "!", ":", Chr(10), Chr(11), Chr(13)
     
                   Case Else
                        SansCaracteresSpeciaux = SansCaracteresSpeciaux & Mid(ChaineATraiter, I, 1)
            End Select
        Next I
     
    End Function
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  8. #8
    Candidat au Club
    Merci Eric, c'est un script à conserver précieusement.

    Bonne semaine.

###raw>template_hook.ano_emploi###