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 13/12/2010, 19h29   #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 simplifier des textes

Bonjour,

j'ai une série de textes (une centaine de prévisions) dont je ne voudrais garder que la portion se rapportant à la date du message, les endroits, les avertissements et les vents. Est-il possible de traiter cela avec une macro?.
Je fournis en exemple un fichier du message brut.

Le surlignage en jaune serait le texte que j'aimerais conserver.

Idéalement, les mots tels que: "ce, cet, puis, vers" devraient être supprimés. De plus, les mots tels que: "diminuant, devenant, augmentant, virant" devraient tous être remplacés par: "bcmg". Finalement, les mots: "APRES-MIDI" et "AVANT-MIDI" devraient être réduit à PM et AM.

Le but de l'exercice étant d'afficher chaque prévision sur une page unique.
Ainsi, un saut de page devrait précéder chaque nouvelle prévision
(une page devrait toujours débuter par: FQCN73 LHOJ JJMMSS).

Merci en avance
Jean-Luc
Fichiers attachés
Type de fichier : doc fichier_brut.doc (54,0 Ko, 15 affichages)
jeanluc0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 20h08   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 317
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 317
Points : 29 214
Points : 29 214
Salut,

Je pense que tu peux oublier.

Comment savoir quoi garder de ce texte mis à part le fait qu'il soit en jaune ?
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 22h43   #3
Invité de passage
 
Inscription : septembre 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 19
Points : 3
Points : 3
Bonsoir,

Dans ce cas, est-il possible qu'une macro puisse supprimer:
- les 6 prochaines lignes suivant la ligne où elle rencontrera l'expression:
"FQCN73"
- supprimer toutes les lignes vides.

Idéalement,
- supprimer tous les mots tels que: "ce, cet, puis, vers"
- remplacer les mots: "diminuant, devenant, augmentant, virant" par "bcmg"
- remplacer les mots: "APRES-MIDI" et "AVANT-MIDI" par PM et AM.

Finalement, reformater le texte afin d'afficher chaque prévisions sur une page unique (ie tout le texte qui suit la ligne FQCN73).
Bref, est-ce qu'il y a moyen d'arriver à mon objectif final?

Merci de répondre à mes questions
Jean-Luc
jeanluc0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 21h58   #4
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 983
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 983
Points : 1 590
Points : 1 590
Envoyer un message via MSN à carden752
Bonjour,

Pour les six prochaines lignes suivant un texte, c'est possible ainsi que pour les remplacements de mots par d'autres.

Par contre, comme Heureux-Oli, comment sait-on la partie à conserver? Sera-t-elle toujours surligner en jaune, les 5 premières lignes, avant un mot, une phrase précise?

Il nous faut une règle stricte pour pouvoir automatiser cette tâche.
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 22h56   #5
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 Simplifier ou raccourcir un texte

Bonjour,

... et désolé pour ma réplique tardive. Voilà, tout d'abord j'aimerais préciser que dans le fichier fourni initialement, les plages en jaune ont été rehaussées par moi pour indiquer le résultat espéré suite à l'application de la macro.

Maintenant, tel que suggéré, j'ai fait refait mes devoirs et j'ai analysé tous les textes de prévision. Outre les 6 lignes suivant l'en-tête du message, il y a aussi la dernière portion des prévisions de chaque secteur qui doit être supprimée.

Cette dernière portion débute toujours par l'un de ces mots:
Risque, Faible, Pluie, Maximum, Minimum, Température, Quelques, Averses,
Brouillard, Visibilité, Embruns, Reste.
Ainsi, à chaque fois que l'un de ces mots est rencontré, tout le texte qui suit doit être supprimé jusqu'au prochain paragraphe.

Enfin, je suis heureux de savoir qu'on peut remplacer certains mots par des abréviations (fournies précédemment). Peut-on finalement reformater le texte
de façon à minimiser son espace.

Merci d'avance,
Jean-Luc
jeanluc0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 21h36   #6
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 raccourcir un texte

Bonjour,

possible que ma requête initiale ait été trop compliquée à saisir, ce qui expliquerait le peu de réponse. Pourtant, à la lueur de la réplique carden752, je demeure convaincu que je peux arriver à mes fins. Le problème, c'est je ne connais pas grand chose au commandes VBA dans Word.

Alors je récidive avec des questions plus directes. Dane le fichier joint essai_2

1. Je veux toujours éliminer les 6 lignes suivantes: FQCN73.
2. Aussitôt que le mot: "pluie" ou "faible" est rencontré, tout le reste du paragraphe doit être éliminé.
3. "Avertissement" et "coups de vent" doivent être soulignés en rouge
4. Tous les mots: "ce" doivent être éliminés.
5. Tous les mots: "apres-midi" doivent être remplacés par "PM".
6. Enfin, les paragraphes commençant par "vent" doivent prendre le moins de ligne possible.

Je fournis un fichier en exemple avec des commentaires supplémentaires.

Je vous remercie en avance

Jean-Luc
Fichiers attachés
Type de fichier : doc ESSAI_2.doc (34,0 Ko, 2 affichages)
jeanluc0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 20h55   #7
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 983
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 983
Points : 1 590
Points : 1 590
Envoyer un message via MSN à carden752
Bonjour,

Meilleurs voeux pour cette année.
Code :
1
2
3
4
5
6
7
8
9
10
Sub test()
Selection.HomeKey unit:=wdStory
Do While (Selection.Find.Execute(FindText:="FQCN73", Forward:=True, Wrap:=False))
 
Selection.GoToNext what:=wdGoToLine
Selection.MoveDown unit:=wdLine, Count:=6, Extend:=wdExtend
Selection.Delete
 
Loop
End Sub
Cette macro doit faire le 1°, c'est à dire supprimer les 6 lignes qui suivent le mot FQCN73

Rebonjour,

Et voici le code pour la suppression d'un paragraphe après la recherche de pluie, je te laisse l'adapter pour le mot faible
Code :
1
2
3
4
5
6
7
8
9
Sub pluie()
Dim r As Range
Selection.HomeKey unit:=wdStory
Do While (Selection.Find.Execute(FindText:="pluie", Forward:=True, Wrap:=False))
Selection.Expand unit:=wdParagraph
Selection.Delete
 
Loop
End Sub
Et encore un petit bout, le surlignage en rouge, je te laisse l'adapter pour les autres mots

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub surlignage()
 
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Highlight = True
    With Selection.Find
        .Text = "Avertissement"
        .Replacement.Text = "Avertissement"
        .Forward = True
        .Wrap = False
        .MatchCase = False
        .Replacement.Highlight = wdColorRed
        .MatchWholeWord = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Options.DefaultHighlightColorIndex = wdRed
    Selection.Range.HighlightColorIndex = wdRed
    Selection.Find.Execute Replace:=wdReplaceAll
 
End Sub
Bonjour,

Tu dois maintenant pouvoir te débrouiller avec la fonction find et replacement pour supprimer les mots CE et remplacer après midi

En espérant t'avoir aidé
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 15h31   #8
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 simplifier texte

Bonjour,

Voilà, en ce qui concerne la portion du code: "suppression d'un paragraphe après la recherche de pluie"

Code :
1
2
3
4
5
6
7
Sub pluie()
Selection.HomeKey unit:=wdStory
Do While (Selection.Find.Execute(FindText:="pluie", Forward:=True, Wrap:=False))
Selection.Expand unit:=wdParagraph
Selection.Delete
 
Loop
J'ai constaté que la macro n'efface pas le paragraphe mais la ligne courante où se trouve le mot "pluie".

Pour ce qui est de la macro qui fait du surlignage, j'ai tenté de la complexifier de telle sorte que lorsqu'un "avertissement de coups de vent" est trouvé, il y a surlignage en jaune, lorsqu'un "avertissement de vent de tempete" est trouvé, il y a surlignage en rouge. Voici mon code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
'Souligner l'expression: "Avertissement de coups de vent en jaune
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Highlight = True
With Selection.Find
    .Text = "Avertissement de coups de vent"
    .Replacement.Text = "Avertissement de coups de vent"
    .Forward = True
    .Wrap = wdFindContinue
    .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
End With
Options.DefaultHighlightColorIndex = wdYellow
Selection.Range.HighlightColorIndex = wdYellow
Selection.Find.Execute Replace:=wdReplaceAll
 
'Souligner l'expression: "Avertissement de vent de tempete en rouge
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "Avertissement de vent de tempete"
        .Replacement.Text = "Avertissement de vent de tempete"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Options.DefaultHighlightColorIndex = wdRed
    Selection.Range.HighlightColorIndex = wdRed
    Selection.Find.Execute Replace:=wdReplaceAll
Pour une raison obscure, le surlignage en rouge ne se fait pas? J'ai n'ai pas encore trouvé la raison.

Merci de m'aider
Jean-Luc
jeanluc0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 19h57   #9
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 983
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 983
Points : 1 590
Points : 1 590
Envoyer un message via MSN à carden752
Bonjour,

c'est faux elle efface le paragraphe mais ton paragraphe correspond à la ligne courante (regarde en affichant les marques de paragraphes). Tu verras à la fin de la ligne une marque de fin de paragraphe.

Citation:
Pour ce qui est de la macro qui fait du surlignage, j'ai tenté de la complexifier de telle sorte que lorsqu'un "avertissement de coups de vent" est trouvé, il y a surlignage en jaune, lorsqu'un "avertissement de vent de tempete" est trouvé, il y a surlignage en rouge.
C'est cette ligne à changer pour la couleur de surlignage du texte de remplacement
Citation:
.Replacement.Highlight = wdColorRed
Comme je l'avais mis dans mon précédent message
Code :
1
2
3
4
5
6
7
8
9
10
11
12
    With Selection.Find
        .Text = "Avertissement"
        .Replacement.Text = "Avertissement"
        .Forward = True
        .Wrap = False
        .MatchCase = False
        .Replacement.Highlight = wdColorRed
        .MatchWholeWord = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 22h54   #10
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 simplifier texte

Bonjour Christophe,

vouis avez raison, j'avais omis une ligne de code concernant le surlignage. Maintenant, tout fonctionne bien de ce côté.

En ce qui concerne la suppression du paragraphe suivant le mot "pluie", j'avoue ne pas comprendre (peut-être que la définition d'un paragraphe est différente dans WORD?). J'ai joint un fichier où
en noir: c'est un simple texte soumis à la macro pluie
en bleu: le résultat de la macro
en vert: le résultat espéré.

Pouvez-vous regarder ça de plus près et m'expliquer
Encore merci
Jean-Luc
Fichiers attachés
Type de fichier : doc PREVI_EXEMPLE.doc (23,5 Ko, 2 affichages)
jeanluc0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2011, 21h52   #11
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 983
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 983
Points : 1 590
Points : 1 590
Envoyer un message via MSN à carden752
Bonjour,

Je vois qu'une seule possibilité :

1 - rechercher 2 marques de paragraphe consécutives après pluie et supprimer jusque la.

Code :
selection.find.text="^p^p"
A adapter pour ton besoin
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2011, 22h25   #12
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 317
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 317
Points : 29 214
Points : 29 214
Salut,

En Word un paragraphe est une série de mots qui se termine par le symbole ¶
Ces mots peuvent être sur plusieurs lignes.
On obtient le symbole ¶ par une pression sur la touche Entrée ou Enter.

J'ai jetté un coup d'oeil à ton fichier.
Si le mot pluie n'est suivi que d'un seul paragaphe ? ou de trois paragraphes ??

En fait tu souhaiterais que la macro pense comme tu le ferais, mais elle ne peut que faire des actions répététives.

Essaie juste pour voir de faire un organigramme de ce que le code doit faire.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h38.


 
 
 
 
Partenaires

Hébergement Web