Saut de Page en VBA word 2000 !!!

Résolu
glaine Messages postés 33 Statut Membre -  
glaine Messages postés 33 Statut Membre -
Bonjour à tous !!!
J'ai créé une macro qui insert un saut de page après chaque expression type dans un document. Mon petit souci est que l'expression qui me sert de point de repère disparaît après utilisation de la macro, ce que je ne souhaite pas et je ne vois pas comment l'éviter. Merci d'avance pour toutes les aides apportées.
Amicalement
Sub InsertionSautPage()
Dim expression As String
expression = "Intervenant : "
Selection.Start = ActiveDocument.Content.Start
Selection.End = ActiveDocument.Content.Start
'Proprietes de la recherche a effectuer
With Selection.Find
.text = expression
.Wrap = wdFindStop 'On arrête la recherche à la fin du document
.MatchWildcards = True 'Pour accepter les recherches avec expressions régulières
End With
While Selection.Find.Execute
Selection.InsertBreak Type:=wdPageBreak
Wend

'Replacement du curseur en debut de document
Selection.Start = ActiveDocument.Content.Start
Selection.End = ActiveDocument.Content.Start
End Sub
Configuration: Windows XP
Firefox 3.0.15

2 réponses

  1. glaine Messages postés 33 Statut Membre 1
     
    La solution, pour ceux que cela intéresse:
    Sub rechercherRemplacer()
    Dim booTrouve As Boolean
    Dim inti As Integer
    Dim T As Variant
    Selection.HomeKey unit:=wdStory
    Do
    With Selection.Find 'Recherche
    .Text = "03/11/2009" 'Mot recherché
    .Forward = True
    .Wrap = wdFindStop
    End With
    booTrouve = Selection.Find.Execute 'Exécution de la recherche
    If booTrouve Then
    Selection.Collapse Direction:=wdCollapseEnd 'suppression de la sélection vers la fin du mot
    Selection.InsertBreak Type:=wdPageBreak ' Insertion du saut de page
    inti = inti + 1 'contrôle du nombre d'occurences
    End If
    Debug.Print inti 'Affichage de l'occurence
    Loop While booTrouve
    T = ActiveDocument.Content.ComputeStatistics(wdStatisticPages)
    Selection.GoTo What:=wdGoToPage, Which:=GoToAbsolute, Count:=T
    Selection.Delete
    With ActiveDocument.Paragraphs
    If Left(.Item(.Count).Range, 1) = Chr$(12) Then
    .Item(.Count).Range.Delete
    End If
    End With
    Selection.HomeKey unit:=wdStory
    End Sub
    1
  2. glaine Messages postés 33 Statut Membre 1
     
    Bonjour à tous,
    Suite à certaines suggestions, j'ai changé un peu mon code, mais il me reste un petit soucis : comment supprimer le dernier saut de page correspondant à la dernière occurence trouvée, afin d'éviter une page vierge et inutile en fin de document ??? (DeleteBreak n'existant pas) Merci encore pour toutes les aides apportées.
    Sub rechercherRemplacer()
    Dim booTrouve As Boolean
    Dim inti As Integer
    Dim T As Variant
    Selection.Start = ActiveDocument.Content.Start
    Selection.End = ActiveDocument.Content.Start
    Do
    With Selection.Find 'Recherche
    .Text = "03/11/2009" 'Mot recherché
    .Forward = True
    .Wrap = wdFindStop
    End With
    booTrouve = Selection.Find.Execute 'Exécution de la recherche
    If booTrouve Then
    Selection.Collapse Direction:=wdCollapseEnd 'suppression de la sélection vers la fin du mot
    Selection.InsertBreak Type:=wdPageBreak ' Insertion du saut de page
    inti = inti + 1 'contrôle du nombre d'occurences
    End If
    Debug.Print inti 'Affichage de l'occurence
    Loop While booTrouve
    T = ActiveDocument.Content.ComputeStatistics(wdStatisticPages)
    Selection.GoTo What:=wdGoToPage, Which:=GoToAbsolute, Count:=T
    Selection.Delete
    If inti = T Then

    Selection.Start = ActiveDocument.Content.Start
    Selection.End = ActiveDocument.Content.Start
    End Sub
    0