VBA Word en anomalie

bonjour à tous

j'ai une macro dans Word qui me permet de générer automatiquement des fichiers PDF en fonction des valeurs d'un fichier excel

il y a qq instants tout a fonctionné normalement pour les 10ers PDF et je reçois maintenant un message d'erreur

ci dessous ma macro , le message et un aperçu du fichier excel

capture d ecran 2023 07 25 201241 message d erreur exemple fichier

sauriez vous me dire d'ou vient ce bug ? le chemin de téléchargement est correct.

j'ai 4000 PDF a générer et là je suis en galère.

mERCI d'avance

Stéphanie

Bonjour,

Lorsque vous survolez la ligne en jaune avec la souris, que contient la variable nom ?

Le nom contient-il des caractères interdits dans un nom de fichier ? Y a-t-il même une valeur ?

Bonsoir Eric

en survolant "nom" il m'affiche le nom de ma première entreprise avec un accent sur un des E

Ca serait ca ? je n'ai jamais rencontré ce probleme a ce jour mais pourquoi pas

merci de votre analyse

Stéphanie

Pour vérifier, remplace ce caractère par la lettre E et regarde si tu passes ce client.

Ajoute un Debug.Print nom juste avant ta ligne en erreur et regarde ce que cela donne dans la fenêtre exécution (Ctrl-G).

Eric, j'ai supprimé l accent dans Excel et ca passe

sauf que j'ai des entreprises aux raisons sociales "etranges" exemples 12/5 SA ou DUPONT&DUPONT

cela risque de se reproduire ?

une parade existe dans la macro ?

je viens de lire votre réponse Eric, je vais tester

merci

Le code ajouté ne change rien

une entreprise qui s'appelle DUPONT (ATS) est en bug

les parenthèses car sans ça passe.

Un autre code ?

ps ce n'est pas moi qui aie crée cette macro donc c'est du charabia pour moi

merci

Le mieux est de vérifier les chaines de caractères dans le fichier Excel et d'utiliser les chaines sans caractères spéciaux dans un nouveau champ.

Pour cela, j'ai créé une fonction CaracteresSpeciaux qui identifie les caractères différents des chiffres et des lettres de l'alphabet majuscules et minuscules ainsi que les caractères espaces.

Function CaracteresSpeciaux(ByVal ChaineATraiter As String) As String

Dim I As Integer
Dim J As Long, NumChr As Long
Dim Caractere As String

    CaracteresSpeciaux = ""
    For I = 1 To Len(ChaineATraiter)
        Caractere = Mid(ChaineATraiter, I, 1)
        For J = 0 To 255
            If Caractere = Chr(J) Then
               NumChr = J
               Exit For
            End If
        Next J
        Select Case NumChr
               Case 32, 48 To 57, 65 To 90, 97 To 122, 160

               Case Else
                    CaracteresSpeciaux = CaracteresSpeciaux & Caractere & " "
        End Select
    Next I

End Function

Cette fonction peut être modifiée pour justement éliminer ces caractères spéciaux :

Function RemplaceCaracteresSpeciaux(ByVal ChaineATraiter As String) As String

Dim I As Integer
Dim J As Long, NumChr As Long
Dim Caractere As String

    RemplaceCaracteresSpeciaux = ""
    For I = 1 To Len(ChaineATraiter)
        Caractere = Mid(ChaineATraiter, I, 1)
        For J = 0 To 255
            If Caractere = Chr(J) Then
               NumChr = J
               Exit For
            End If
        Next J
        Select Case NumChr
               Case 32, 48 To 57, 65 To 90, 97 To 122, 160
                    RemplaceCaracteresSpeciaux = RemplaceCaracteresSpeciaux & Caractere
               Case Else
                    RemplaceCaracteresSpeciaux = RemplaceCaracteresSpeciaux & " "
        End Select
    Next I

End Function

En revanche, la suppression des caractères peut engendrer un problème d'homonymie sur les nouvelles chaines, il faut donc le vérifier avec une fonction Nb.si

capture

Le fichier exemple :

Rechercher des sujets similaires à "vba word anomalie"