Bonjour à tous,
Je développe actuellement une macro VBA sur Word pour faire des retouches récurrentes sur des courriers administratifs. Parmi ces retouches, je souhaiterais remplacer une suite de texte tel que : "du 01 janvier 2024 au 31 janvier 2024" par "du 01 au 31 janvier 2024".
Actuellement, je tente de développer autour de la méthode .Find comme ceci :
Sub Formater_mois()
'Pour janvier
With ActiveDocument.Range.Find
.ClearFormatting
.MatchWildcards = True
.TEXT = "(du )" & "([0-9]{2})" & "( janvier )" & "([0-9]{4})" & "( au )" & "([0-9]{2})" & "( janvier )" & "([0-9]{4})"
.Replacement.TEXT = "\1\2" & IIf("\4" = "\8", "\5\6\7\8", "")
.Execute Replace:=2
End With
End Sub
Pour le moment, la condition IIf n'est pas complète, mais même cette version simplifiée renvoie toujours un résultat "faux". J'ai donc tenté dans un premier temps de réussir à utiliser une condition IIf dans un contexte plus simple. Le voici :
With ActiveDocument.Range.Find
.ClearFormatting
.MatchWildcards = True
.TEXT = "(ok)" & "(ok)"
.Replacement.TEXT = IIf("\1" = "\2", "ok", "ko")
.Execute Replace:=2
End With
Mais voilà, même ici, j'ai toujours un retour "ko".
Est-ce que quelqu'un aurait une solution svp ?
Merci
Partager