[VB] Macro : Suppression champs multi-lignes

Fermé
F_Pignon Messages postés 23 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 mai 2008 - 13 oct. 2007 à 11:06
F_Pignon Messages postés 23 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 mai 2008 - 13 oct. 2007 à 16:56
Bonjour CCMnautes,

J'espère que des spécialistes de Visual Basic ou autres passeront par là :)

Je dois réaliser une macro dans Word qui doit supprimer certaines lignes identifiées par un numéro entre parenthèse en début de ligne

Mon document est de la forme suivante :

(7)Blablablablablabla

(12)Blablablablablabla
Blablablablablabla

(28)Blablablablablabla

(72)Blablablablablabla
Blablablablablabla

(152)Blablablablablabla
Blablablablablabla

(170)Blablablablablabla

(198)Blablablablablabla
Blablablablablabla

Blablablablablabla
Blablablablablabla
Blablablablablabla


(200)Blablablablablabla
...

Je ne veux supprimer que les intitulés (28), (152) et (170) ainsi que leur contenu. J'ai donc fait la macro suivante :
Sub MacroSupChamp()
'
' MacroSupChamp Macro

Selection.Find.ClearFormatting

'Déclaration du tableau de champs
Dim mesChamps(3) As String
mesChamps(1) = "(28)"
mesChamps(2) = "(152)"
mesChamps(3) = "(170)"

' Déclaration du compteur
Dim i As Integer
i = 1

'début du parcours de tableau
While i <= 3

'Debut recherche
    Do
    With Selection.Find
        .Text = mesChamps(i) 'cherche le champ i du tableau
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With

    Selection.Find.Execute 'execution de la macro, la selection apparait en surbrillance
'Fin recherche

'Suppression du champ sélectionné
    With Selection
        If .Find.Forward = True Then

            Selection.MoveRight Unit:=wdCharacter, Count:=0 'Place le curseur en début de ligne
            Selection.Extend 'active la fonction de sélection
            Selection.EndKey Unit:=wdLine 'Sélection jusqu'à la fin de la ligne
            Selection.TypeBackspace 'Effacer la ligne ainsi sélectionnée
            Selection.Fields.Update 'sortir de la fonction sélection (facultatif)

        End If
    End With
    'Selection.Find.Execute
    i = i + 1 'Passe à la recherche du champ suivant

    Loop While Selection.Find.Found 'Fin de la boucle

Wend ' fin du parcours de tableau

End Sub


Visiblement cela fonctionne pour les champs 28 et 170.
En revanche pour le champ 152 cela ne supprime que la première ligne (ce qui est logique vu que je ne sélectionne que la ligne qui suit l'intitulé numérique) mais pas la deuxième ligne.
Or, cette deuxième ligne faisant partie du contenu de (152) je dois la supprimer aussi.
Je peux d'ailleurs avoir aussi plusieurs ligne pour un même intitulé (pas seulement deux, cf. intitulé (198) dans mon exemple).

Je ne trouve donc pas comment dire que je prends la première ligne ainsi que les suivantes jusqu'à la prochaine ligne vide (vu que les intitulés et leur contenu sont chacun séparés par une ou plusieurs lignes vides)

J'ai quand même essayé ça :
Selection.EndKey Unit:=wdLine & "^p" 

pour dire "jusqu'à la prochaine marque de paragraphe", mais ça ne fonctionne pas...

J'aimerai donc obtenir ce résultat là :
(7)Blablablablablabla

(12)Blablablablablabla
Blablablablablabla

(72)Blablablablablabla
Blablablablablabla

(198)Blablablablablabla
Blablablablablabla

Blablablablablabla
Blablablablablabla
Blablablablablabla


(200)Blablablablablabla
...

Si quelqu'un pouvait me proposer une piste, un conseil, de l'aide, je lui en serait très reconnaissant ! :)

NB : je dois garder cette structure là de macro (càd : tableau des champs au début, parcours du tableau, recherche de l'intitulé, etc.)

Merci d'avance !
A voir également:

1 réponse

F_Pignon Messages postés 23 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 mai 2008 1
13 oct. 2007 à 16:56
Personne pour m'aider...?
Sniff..

Silvouplê ?
0