Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : HELP Suppression champs multi-lignes [ Divers / General ] (FPignon)

samedi 13 octobre 2007 à 12:18:09 | HELP Suppression champs multi-lignes

FPignon

Bonjour à tous,

Je suis nouvea sur le site, donc j'espère que je poste au bon endroit...

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

(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

(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 !

---------
FPignon

samedi 13 octobre 2007 à 23:48:24 | Re : HELP Suppression champs multi-lignes

medelidrissi

Membre Club
Bonjour,

Je pense que pour répondre à ton besoin tu peux faire appel à "Selection.EndOf Unit:=wdParagraph, Extend:=wdExtend".

Sans trop entrer dans les détails, voici ce que je te propose , note qu'au passage j'ai rectifié quelques petites erreurs :

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

    If Not Selection.Find.Found Then Exit Do
   
'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.EndOf Unit:=wdParagraph, Extend:=wdExtend
            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

    Loop While Selection.Find.Found 'Fin de la boucle
    i = i + 1 'Passe à la recherche du champ suivant

Wend ' fin du parcours de tableau

Bonne programmation.

Cordialement medelidrissi


En Informatique, rien n'est impossible. Mais, ce n'est pas toujours évident.

dimanche 14 octobre 2007 à 00:31:22 | Re : HELP Suppression champs multi-lignes

FPignon

Bonsoir Medelidrissi,

Avant toute chose, merci beaucoup pour ta réponse et tes corrections

Ca fonctionne mais pas totalement :os Je m'explique :

Quand j'ai une intitulé et un contenu du type :
(52)Blablablablabla
Blablablablabla

Ca fonctionne pas à tous les coups. (M'enfin c'est déjà mieux que ce que j'avais fait :))
Par contre là où c'est plus ennuyeux c'est quand j'ai des cas avec plusieurs ligne comme :
(99)Blablablablabla
Blablablablabla
Blablablablabla
Blablablablabla
Blablablablabla
Blablablablabla

Blablablablabla
Blablablablabla
Blablablablabla
où là ça me supprime la première et le deuxième ligne et ensuite ça passe à l'intitulé suivant de mon tableau de départ. Donc ça me laisse encore tout le reste du contenu :
Blablablablabla
Blablablablabla
Blablablablabla
Blablablablabla

Blablablablabla
Blablablablabla
Blablablablabla
 et je ne vois pas comment y remédier, parce que ta commande avec "wdParagraph" me paraissait être ce qu'il me manquait pour dire "tout le paragraphe" (vu que je peux avoir plusieurs lignes de contenu..) mais là je sèche..

Aurais tu une autre piste...?

Merci encore


 


---------
FPignon

dimanche 14 octobre 2007 à 00:37:58 | Re : HELP Suppression champs multi-lignes

FPignon

Enf ait je me dis qu'il faudrait trouver comment dire supprime tout ce qu'il y a après l'intitulé numérique jusqu'àcelui qui suit.

Par exemple si je dois supprimer le champ (63) dans le contexte suivant :

(63)Blablablablablablablabla
Blablablablablablablabla
Blablablablablablablabla

Blablablablablablablabla

(88)Blablablablablablablabla
Blablablablablablablabla
Blablablablablablablabla


faudrait pouvoir dire : supprime à partir de (63) (qui serait l'incide i das mon tableau de départ) jusqu'à la prochaine parenthèse ouvrante (non-incluse) çàd ici la parenthèse du (88)

De cette façon je pourrais régler le problème du multilignes ainsi que la possibilité d'avoir une ligne vide dans un contenu, etc.

Si tu as une idée ?

ou même d'autres VBnautes :) n'hésitez pas










---------
FPignon



Cette discussion est classé dans : ligne, selection, false, find, blablablablablabla


Répondre à ce message

Sujets en rapport avec ce message

Publipostage avec VBA et Word [ par ZANUS ] Bonjour à tout le monde. J'ai posté un message mais visiblement j'ai été très loin d'être clair. Voici donc beaucoup plus(!!) d'explications. Si quel [VB] URGENT ! Macro Word suppression de champs [ par FPignon ] Bonjour à tous,J'ai déja posée cette question, mais mon problème n'est toujours pas résolu malgré l'aide très généreuse de medelidrissi :) Pas possible de faire un saut de page dans un tableau [ par legosbo ] BonjourJ'utilise la macro suivante, toute bête, pour insérer un saut de page sous word à chaque occurence du mot Test.Elle fonctionne parfaitement si Chiffres UK vers FR et FR vers UK dans Word [ par kitcreanet ] Bonjour à tous ! J'ai besoin de convertir des valeurs chiffrées dans des tableaux Word de l'anglais vers le français, ou au contraire du français vers URGENT rechercher-remplacer en-tête [ par chakib27 ] bonjour j'ai une macro vba sur un fichier .DOC pour rechercher remplacer la variable qui va etre saisie par le user, ça marche coté remplacement mais VBA word compter le nombre de fois remplacer par [ par ManuAntibes ] Salut J'ai créé une macro dans word, ou je lui fais recherché et remplacer des mots.Je voudrais recuperer dans une variable le nombre de fois qu'il a Selection.find sur VBA Excel [ par daph ] j'utilise le code Selection.Find(What:=DOSSIER_CHERCHE, After:= ....pour trouver dans un fichier, la ligne contenant un n° de dossier (DOSSIER_CHERCH VB et les tableaux Word [ par yuyugs_84 ] Bonjourj'ai un ptit soucis dans mon prog vb :je dois me placer dans un tableau situé après une ligne de texte que j'ai précédemment recherché : Help plz [ par Esprit44 ] SAlut j ai un petit soucis par rapport a une textboxje souhaite rentrer dans une textbox un texte et qu'apres avoir cliquer sur un bouton de commande, Selection de ligne et colonne sur Excel [ par oldschool45 ] Salut,Je suis débutant en matière de Visual Basic. J'ai crée une macro permettant de rechercher une donnée dans un tableau Excel (données qui se trouv


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,546 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.