Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Word Erreur d'exécution

Marine_blatz

XLDnaute Nouveau
Bonjour à tous j'ai une erreur lors de l'exécution de ce code quelqu'un sais til pourquoi ?
Voir code et capture ci contre

VB:
Sub rapport_provisoire_entete()

Dim Prgrf As Paragraph
Dim reg As New VBScript_RegExp_55.RegExp, Match As VBScript_RegExp_55.Match
Dim Matches As VBScript_RegExp_55.MatchCollection

    Set reg = New VBScript_RegExp_55.RegExp
    reg.Pattern = "(rapport)( )(\d{2})"
    reg.Global = True
    For Each Prgrf In ThisDocument.Sections(1).Headers(1).Range.Paragraphs
        If InStr(Prgrf.Range.Text, "rapport") Then
            Set Matches = reg.Execute(Prgrf.Range.Text)
            For Each Match In Matches
                Remplace_dans_Header 1, 1, Match.Value, "rapport provisoire"
            Next Match
        End If
    Next Prgrf
End Sub


Sub Remplace_dans_Header(Sct As Byte, Hdr As Byte, S1 As String, S2 As String)
    With ThisDocument.Sections(Sct).Headers(Hdr).Range.Find
        .Text = S1
        .Forward = False
        .Execute
        If .Found Then .Parent.Text = S2
    End With
End Sub
 

Pièces jointes

  • Capture.PNG
    47 KB · Affichages: 30

Dranreb

XLDnaute Barbatruc
@Staple1600, bonsoir.
VBScript_RegExp_55 n'est pas le nom de bibliothèque correspondant à la référence Microsoft Scripting Runtime puisque ce dernier est simpement Scripting.
Je ne la connaissais pas, n'utilisant pas ce dispositif, mais une petite recherche m'a quand même assez vite mené à Microsoft VBScript Regular Expressions 5.5
 

Staple1600

XLDnaute Barbatruc
Bonjour

Quelle chaine de caractères ta macro cherche exactement ?
Et dans quelle partie du document ?

NB: J'ai testé ton code dans un document Word en activant la référence.
Je n'ai pas de message d'erreurs.
 

Staple1600

XLDnaute Barbatruc
Bonjour à tous j'ai une erreur lors de l'exécution de ce code quelqu'un sais til pourquoi ?
Oui, toi !
je viens de m'apercevoir que tu avais déjà été confronté à ce problème !!!
Et qu'on t'avait fourni les explications et remèdes pour le résoudre.

Mais c'est vrai que janvier 2022, c'est si loin
 

Staple1600

XLDnaute Barbatruc
Re

NB: Tu avais oublié la discussion que je cite dans le message#9?
De l'art de perdre son temps...

Pour revenir à la question du jour, comme je l'ai dit.
Pas de message d'erreur chez moi.

Je vais refaire le test avec tes dernières précisions.
 

Staple1600

XLDnaute Barbatruc
Re

Si le problème était résolu, sinon je ne l'aurais pas écris
J'ai téléchargé et testé le fichier qui s'y trouve (et il fonctionne)
Et comme le disait pierre dans le fil
P 56 à dit:
Bonjour,
Téléchargez le fichier démo, il y a des indications à suivre
Et dans le fichier démo, on pouvait lire dans les commentaires du code VBA
' référence cochée : Microsoft vbscript regular expression 5.5

Et ton adaptation de son code fonctionne aussi
La condition pour que cela fonctionne est que l'entête soit de type
rapportESPACEnn (ou nn= un nombre de deux chiffres)
Donc si on a un entête qui contient: rapport 23
Le code remplace en rapport provisoire.

Je viens de faire le test sur Word 2013 (avec un fichier test de 5 pages)
 

Staple1600

XLDnaute Barbatruc
Re

Juste pour prouver que cela fonctionne.
Rappel: la librairie est cochée dans les références VBE
(comme expliqué dans ce fil et dans l'autre)
Je n'ai rien modifié au code VBA du premier message.
L'entête respecte ce schéma: rapportESPACEnn soit ici rapport 16
On voit bien sur l'image, que la macro a bien modifié les entêtes.
 

Marine_blatz

XLDnaute Nouveau
A oui je crois que cela ne fonctionne pas car le texte à modifier est dans l'entête et en plus dans un encradré
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…