Remplacer par Saut de page si chaine de caractère sur page impaire
Le
falbaj

Bonjour,
Je débute dans les macros word et j'ai besoin à remplacer chaque occurrence d'une chaine de caractère (par exemple "Fin") par un saut de page mais uniquement si cette chaine de caractère se trouve sur une page impaire
voici un premier code que je viens de développer mais qui ne fonctionne pas comme je le souhaite
Sub remplace_Fin_par_Saut_de_page()
Selection.Find.ClearFormatting
Selection.Find.replacement.ClearFormating
With Selection.Find
.Text ="Fin"
.Replacement.Text= "^m"
.Forward = True
.Wrap = wdFindStop
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundSLike = False
.MatchWildcards=True
While .Found
Set S =.Parent
If Page Mod 2 = 0 Then .Execute Replace:=wdReplaceOne
Else: S.Delete
EndIf
WEnd
EndWith
EndSub
Merci pour votre aide
Je débute dans les macros word et j'ai besoin à remplacer chaque occurrence d'une chaine de caractère (par exemple "Fin") par un saut de page mais uniquement si cette chaine de caractère se trouve sur une page impaire
voici un premier code que je viens de développer mais qui ne fonctionne pas comme je le souhaite
Sub remplace_Fin_par_Saut_de_page()
Selection.Find.ClearFormatting
Selection.Find.replacement.ClearFormating
With Selection.Find
.Text ="Fin"
.Replacement.Text= "^m"
.Forward = True
.Wrap = wdFindStop
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundSLike = False
.MatchWildcards=True
While .Found
Set S =.Parent
If Page Mod 2 = 0 Then .Execute Replace:=wdReplaceOne
Else: S.Delete
EndIf
WEnd
EndWith
EndSub
Merci pour votre aide
Mets Option explicit au début de ton module.
Cela permet de trouver rapidement si une variable est mal utilisée.
Dans ton exemple la variable Page n'est pas initialisée et ne dépends
pas de la selection.
Merci pour ton aide
en effet avec l'option explicit il me prévient que la variable n'est pas définie
voila la derniere version de mon code
Sub remplace_Fin_par_Saut_de_page()
Dim Page As Integer
Call Selection.HomeKey(wdStory)
Selection.Find.ClearFormatting
Selection.Find.replacement.ClearFormating
With Selection.Find
.Text ="Fin"
.Replacement.Text= "^m"
.Forward = True
.Wrap = wdFindStop
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundSLike = False
.MatchWildcards=True
While .Execute
If Page Mod 2 = 0 Then Selection.InsertBreak
Else: Selection.Delete
EndIf
WEnd
EndWith
EndSub
comment puis je lui dire que page doit prendre la valeur du numero de la page de la sélection?
je ne connais pas assez VBA pour Word pour répondre mais il faut je
pense vérifier qu'il n'y a pas une propriété donnant le numéro d epage
d'une sélection.
Par ailleurs sous quelle version travaills-tu.
Sous Word 2002
ton code engendre plusieurs erreurs dont tous tes end
end if au lieu de endif
end with au lieu de endwith
end sub au lieu de endsub
Bonjour,
merci pour tout
voila une solution qui semble fonctionner
je suis sous Word 2002
les erreurs dans le code était du à des erreurs de frappe
Option Explicit
Sub Remplace_FinFiche_par_saut_de_page_si_page_impaire()
'
' Macro1 Macro
' Macro enregistrée le 07/10/2008 par anne-laure.bordes
'
Dim Page As Integer
'se mettre en tete de fichier
Call Selection.HomeKey(wdStory)
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Fin Fiche?"
.Replacement.Text = "^m"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
While .Execute
Page = Selection.Information(wdActiveEndPageNumber)
If (Page Mod 2 = 1) Then
Selection.InsertBreak
Else: Selection.Delete
End If
Wend
End With
End Sub
OK
Merci du retour.