Macro VBA Répéter action jusqu'à atteindre fin document
JCB40 Messages postés 3063 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Comment répéter en boucle la macro suivante avec comme condition d'arrêt l'atteinte de la fin du document ? Je ne maîtrise pas bien la fonction Loop Until. Voici mon code :
Sub NotesdeFin_MiseEnForme()
'
' NotesdeFin_MiseEnForme Macro
' Ajout crochets autour numéro liste notes de fin
'
Selection.TypeText Text:="["
Selection.MoveRight Unit:=wdWord, Count:=1
Selection.TypeText Text:="]"
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.TypeText Text:=" "
Selection.MoveDown Unit:=wdParagraph, Count:=1
Loop Until
End Sub
Résultat, cette mise en forme :
61. Voir note
est reformatée ainsi avec les crochets autour du numéro :
[62]. Mozart, Briefe..., op. cit., lettre du 18 janvier 1775 : I, p. 517 (I, p. 368).
D'avance, merci pour votre aide !
JulienDébutant
Windows / Firefox 152.0
3 réponses
-
jour
Code à tester
Sub NotesdeFin_MiseEnForme() ' ' NotesdeFin_MiseEnForme Macro ' Ajout crochets autour numéro liste notes de fin ' Dim doc As Document Set doc = ActiveDocument ' Placer le curseur au début du document Selection.HomeKey Unit:=wdStory ' Boucle jusqu'à la fin du document Do Until Selection.End = doc.Content.End Selection.TypeText Text:="[" Selection.MoveRight Unit:=wdWord, Count:=1 Selection.TypeText Text:="]" Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend Selection.TypeText Text:=" " Selection.MoveDown Unit:=wdParagraph, Count:=1 Loop End Sub
-
Bonjour,
Merci pour votre réponse, malheureusement le code proposé ne convient pas car la boucle ne s'arrête jamais ce qui fait ensuite boguer Word. Je ne sais pas encore comment quelle instruction indiquer pour stoper la boucle.
-
code a tester à nouveau
Sub NotesdeFin_MiseEnForme() ' NotesdeFin_MiseEnForme Macro ' Ajout crochets autour numéro liste notes de fin Dim doc As Document Dim rng As Range Set doc = ActiveDocument Set rng = doc.Content ' Désactiver le rafraîchissement de l'écran et les alertes pour améliorer les performances Application.ScreenUpdating = False Application.DisplayAlerts = False ' Boucle à travers chaque mot du document For i = 1 To rng.Words.Count If IsNumeric(rng.Words(i).Text) Then ' Ajouter les crochets autour du mot rng.Words(i).Text = "[" & rng.Words(i).Text & "]" End If Next i ' Réactiver le rafraîchissement de l'écran et les alertes Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub