[VB] Macro : Suppression champs multi-lignes
F_Pignon
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
F_Pignon Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
F_Pignon Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
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 :
Je ne veux supprimer que les intitulés (28), (152) et (170) ainsi que leur contenu. J'ai donc fait la macro suivante :
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 :
pour dire "jusqu'à la prochaine marque de paragraphe", mais ça ne fonctionne pas...
J'aimerai donc obtenir ce résultat là :
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 !
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:
- [VB] Macro : Suppression champs multi-lignes
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Vb - Télécharger - Langages
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Vb cable - Télécharger - Audio & Musique