VBA Word Regexp

VBA Word Regexp - VB/VBA/VBS - Programmation

Marsh Posté le 09-08-2016 à 19:10:44    

Bonjour,
 
J'ai un document dans Word qui contient plusieurs motifs numérotés de 10 en 10 comme décrit ci-dessous.
Cependant, il arrive assez fréquemment que le même pattern soit utilisé plusieurs fois.
 

Code :
  1. MyPattern-00010
  2. MyPattern-00020
  3. MyPattern-00030
  4. MyPattern-00030 <= Doublon
  5. ....
  6. MyPattern-01030


 
J'ai crée une macro en me servant du code http://stackoverflow.com/questions [...] -word-2010 que j'ai modifié afin de chercher le pattern "MyPattern-[0-9]{5}" que je souhaite renuméroter correctement.
 
J'arrive à modifier tout les patterns mais je n'arrive pas à les renuméroter correctement de 10 en 10. Quelqu'un sait-il comment mémoriser le dernier pattern 'XXXXX' sur 5 digits et l'incrémenter de 10 en 10.
 
Merci pour votre aide.
 
PS: Mon document word contient 100 à 200 motifs numérotés (au cas où la réponse serait de le faire à la main ;) )
 

Code :
  1. '================================================================================
  2. ' This macro allows renumbering pattern
  3. '================================================================================
  4. Sub Renumber()
  5.     ' Variables' Declaration
  6.     Dim MyPattern As String
  7.     Dim MyStartNbr   As String
  8.     Dim MyStartNbr    As Integer
  9.    
  10.     'Init.
  11.     MyStartNbr = 0
  12.    
  13.     ' Ask the user for the pattern to look for
  14.     MyPattern = InputBox(Prompt:="Pattern to look for", Title:="Renumbering of pattern" )
  15.     MyStartNbr = InputBox(Prompt:="Start number to use", Title:="Renumbering of pattern" )
  16.     ' Convert String to Int
  17.     MyStartNbr = CInt(MyStartNbr)
  18.    
  19.     ' Settings
  20.     With Selection.Find
  21.         .Replacement.Text = MyPattern & Format(MyStartNbr, "00000" )
  22.         .Forward = True
  23.         .Wrap = wdFindStop
  24.         .MatchWholeWord = False
  25.         .MatchWildcards = True
  26.         .MatchSoundsLike = False
  27.         .MatchAllWordForms = False
  28.     End With
  29.    
  30.     With Selection.Find
  31.         .Text = MyPattern & "[0-9]{5}"
  32.         .Execute Replace:=wdReplaceOne, Forward:=True, Wrap:=wdFindContinue
  33.     End With
  34.        
  35.     ' Compute the number to use
  36.     MyStartNbr = MyStartNbr + 10
  37.    
  38. End Sub


Message édité par sined40 le 10-08-2016 à 09:15:25
Reply

Marsh Posté le 09-08-2016 à 19:10:44   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed