Pwyll2
Messages postés8Date d'inscriptionmardi 27 avril 2010StatutMembreDernière intervention27 mars 2012
-
25 mars 2012 à 05:13
Pwyll2
Messages postés8Date d'inscriptionmardi 27 avril 2010StatutMembreDernière intervention27 mars 2012
-
27 mars 2012 à 14:48
Salut
Je suis débutant (hyper débutant) en macros.
J'ai une tâche répétitive à réaliser dans word, en fait je dois déplacer des lignes de texte qui commencent toutes par les mêmes caractères. Bref, j'arrive à faire ça au clavier donc j'ai enregistré ma macro avec Word.
Sauf que j'ai ensuite lancé cette macro pour réaliser la tâche, mais ça ne l'a fait que sur une ligne de texte.
Il faudrait que je sache quel code taper afin que la tâche soit reproduite jusqu'à la fin du document (et qu'elle s'arrête alors)...
je sais c'est super basique mais je suis super débutant et j'ai pas trouvé dans l'aide de Word...
je vous copie-colle ma macro actuelle:
Sub InverserSfxEtXv()
'
' InverserSfxEtXv Macro
' Macro enregistrée le 24/03/2012 par L
'
Selection.Find.ClearFormatting
With Selection.Find
.Text = "\sfx "
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
Selection.Cut
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.PasteAndFormat (wdPasteDefault)
End Sub
J'ai donc besoin de mettre, je pense, un Loop quelque part afin que chaque ligne de mon texte commençant par \sfx soit déplacée comme il faut... mais je sais pas trop comment faire (je me doute qu'il y a d'autres trucs à écrire aussi)
merci beaucoup d'avance!!
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 27 mars 2012 à 09:46
si tu as
\sfx 1
xv1
\sfx 2
xv@
saut de ligne
tu auras
xv1
\sfx 1
xv2
\sfx 2
le saut de ligne est necessaire
Sub InverserSfxEtXv()
'Aller à la fin du document
Selection.EndKey Unit:=wdStory
'rechercher en sens inverse
Selection.Find.ClearFormatting
With Selection.Find
.Text = "\sfx "
.Replacement.Text = ""
.Forward = False
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
'rechercher tant qu'il y a des résultats
Selection.Find.Execute
While InStr(1, Selection.Text, "\sfx ")
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
Selection.Cut
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.PasteAndFormat (wdPasteDefault)
Selection.MoveUp Unit:=wdLine, Count:=2
Selection.Find.Execute
Wend
End Sub
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 26 mars 2012 à 16:43
Bonjour
Le code avec la methode Find peut ne pas fonctionner (d'autres méthodes existe, elles ont toutes des défauts)
En déplacant des lignes vers le bas par Cut puis PasteAndFormat , la commande Selection.Find initialisé peut rencontrer qqs pbs, je suggère de parcourir le document de Bas en haut
Selection.Find.Forward= False
Pour effectuer une boucle sur la methode Find, on peut tester si le retour du find renvoit encore un résultat (boucle While... Wend)