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
@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
Bonjour, quel code utiliser si je veux faire ceci Remplacer le nombre dans "vitesse 17" ou "vitesse XX" en fonction des docs par "vitesse PROVISOIRE" ? je veux que ma macro cible le texte "vitesse + XX (le nombre à deux chiffre qui suit quel qu'il soit)" et remplace le tout par "vitesse...
www.excel-downloads.com
Et qu'on t'avait fourni les explications et remèdes pour le résoudre.
Elle cherche "rapport n°: XXXXXX " dans l'entête et met "rapport n°: provisoire" a la place d'un nombre variable dans la zone ou je viens de mettre des X
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)
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.
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. Regarde la pièce jointe 1132878