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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice Henrio
Le #17455431
falbaj a écrit :
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


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.
falbaj
Le #17459831
Patrice Henrio a écrit le 08/10/2008 à 10h05 :
falbaj a écrit :
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



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?
Patrice Henrio
Le #17461221
falbaj a écrit :
Patrice Henrio a écrit le 08/10/2008 à 10h05 :
falbaj a écrit :
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



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
falbaj
Le #17467281
falbaj a écrit le 08/10/2008 à 09h17 :
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


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
Patrice Henrio
Le #17469921
falbaj a écrit :
falbaj a écrit le 08/10/2008 à 09h17 :
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


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.
Publicité
Poster une réponse
Anonyme