Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/12/2011, 19h41   #1
Invité de passage
 
Inscription : septembre 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 19
Points : 3
Points : 3
Par défaut supprimer des lignes

Bonjour forum,

grâce à vos précieux conseils, j'ai réussi à fabriquer une macro qui simplifie des textes de prévisions. Cependant, il reste encore quelques lignes répétitives que je voudrais supprimer. La solution semble tout simple mais avec mes connaissances très limitées en WORD/VBA, je risque de m'égarer dans des détours inutiles.

En fait, je veux éliminer toutes les lignes où il est écrit:
PMFR22 FGGE 300135 AMD
et où aucune prévision n'est écrite à la suite.

Pour mieux saisir mon propos, je fournis dans le fichier ci-joint un exemple suivi du résultat désiré à la fin.

Jean-Luc
Fichiers attachés
Type de fichier : doc Forum_VBA_31dec2011.doc (35,0 Ko, 8 affichages)
jeanluc0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 03h21   #2
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 356
Points : 3 356
Salut jeanluc0,

Il s'agit de reprendre/adapter ce qu'on t'a déjà fourni.

Pour traiter ton pb, la meilleure approche que je te préconise est de faire en 2 étapes, trouver comment supprimer une ligne en question puis plutôt que d'essayer avec les combinaisons de lignes multiples, de faire boucler tant que tu as de telles lignes.

Étape 1 : Supprimer une ligne (sans prévision derrière)
Ces lignes sont toutes de la forme "PMFR22 FGGE XXXXXX AMD " avec X qui représente un chiffre suivi d'une ligne qui commence par "PMFR" ==> Recherche := "PMFR22 FGGE ^#^#^#^#^#^# AMD^w^pPMFR" (ici j'ai mis ^w en fin pour traiter des lignes avec un nombre quelconque d'espaces en fin de ligne) et remplacer par "PMFR" avec un remplacement global

Étape 2 : Boucler tant que la recherche indique qu'il trouve une ligne à supprimer
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "PMFR22 FGGE ^#^#^#^#^#^# AMD^w^pPMFR22"
        .Replacement.Text = "PMFR22"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    While Selection.Find.Found
        Selection.Find.Execute Replace:=wdReplaceAll
    Wend
Attention, à l'option ".Wrap = wdFindContinue" qui agit sur le fichier globalement, si tu dois limiter le traitement il faut que tu utilises 'option ".Wrap = wdFindStop" pour n'agir que sur ta sélection.

@+
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 15h02   #3
Invité de passage
 
Inscription : septembre 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 19
Points : 3
Points : 3
Bonjour,

Quelle belle solution simple et élégante! En VBA, le plus compliqué est de garder ça simple.

Un gros merci
Jean Luc
jeanluc0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 22h30   #4
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 356
Points : 3 356
Salut jeanluc0,

Citation:
Envoyé par jeanluc0 Voir le message
Quelle belle solution simple et élégante! En VBA, le plus compliqué est de garder ça simple.
Merci et oui, c'est compliqué mais on essaye de faire l'effort de garder la simplicité, ça réduit les temps d'apprentissage et de compréhension de la macro pour les DVPnautes et parfois ça réduit même les temps de traitement.

Ce message est à rapprocher des discussions Supprimer le texte qui est entre 2 lignes et Supprimer le texte qui n'est pas entre deux lignes

@+
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h46.


 
 
 
 
Partenaires

Hébergement Web