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 29/08/2006, 19h19   #1
Invité de passage
 
Inscription : août 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 20
Points : 3
Points : 3
Par défaut VBA WORD - Vérification d'un glossaire externe

Bonjour à tous !!!

Avant tout merci aux nombreuses personnes qui tentent de m'aider sur différents autres topics !

Voici un nouveau défit que je dois relever et je pense à nouveau que VBA peut m'y aider.

Je dois régulièrement vérifier la conformité des mots qui composent un document déja rédigé de 300 pages (les corrections automatiques ne me sont donc d'aucun secours) par rapport à un glossaire (plusieurs centaines de chaines) qui m'est fourni. Exemple, le mot programmation doit toujours être rédigé en CAPITALES. La chaîne l'union fait la force doit toujours être rédigée comme : l'Union Fait La Force...
Pour le moment, cette vérification se fait "à la main" via des chercher/rempalcer multiples...

Ce glossaire (pour tourner en VBA) serait probablement composé de la façon suivante au sein d'un simple fichier texte (chaque numéro indique une ligne) chaque vérification allant par paire (le mot, et le mot écrit tel qu'on le souhaite).
01 programmation
02 PROGRAMMATION
03 SNCF
04 Société des Chemins de Fer Français

J'ai imaginé le pseudo code suivant et je tente de le convertir en VBA mais mes maigres connaissances ne suffisent pas. Je pense que cet exercice au demeurant peut intéresser pas mal de monde !

Voici mon pseudo code : (J'ai un document ouvert que je veux vérifier (Client.doc) et je lance ma macro)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
SUB UneBienBelleMacro()
 
'Initialise les variables 
compteur=chiffre
variable1=string
variable2=string
Compteur =1
 
DEBUT DE LA BOUCLE
lis la ligne(compteur) de "glossaire.txt" et stocke le contenu dans la variable1
Compteur =Compteur+1
lis la ligne(Compteur) de "glossaire.txt" et stocke le contenu dans la variable2
Compteur =Compteur+1
Dans Client.doc, remplace partout variable1 par variable2
 
Ici je contrôle si je suis à la fin du fichier (la dernière ligne contient STOP)
 
Si variable 1 ou variable 2 = STOP alors la macro s'arrête
Sinon retour au début de la boucle
FIN DE LA BOUCLE
END SUB
Voila ! Avis aux amateurs éclairés qui voudront bien me consacrer un peu de temps...

Et que la Force soit avec vous ;-)
kitcreanet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 11h21   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Bon. Je suppose que tu es dans Word.
Une question pour commencer : Seul le format des mots est en cause ou dois-tu en outre vérifier l'ortographe ?
J'imagine que non.
Je suppose que ton glossaire est renseigné dans le format qui va bien.
Auquel cas, je propose une chose : Lecture du glossaire, ligne par ligne.
Pour chaque ligne lue, recherche de la correspondance dans le doc et "Remplacer tout". Un "remplacer tout" utilise le format du texte de remplacement.
Passage à la ligne suivante du glossaire.

Ainsi, tu n'as aucune recherche à faire.
Quant à ton glossaire, pour que le format soit respecté, je ne vois guère que Word (?) une donnée par ligne.

Tu dis
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 14h09   #3
Invité de passage
 
Inscription : août 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 20
Points : 3
Points : 3
Bonjour Ouskel !

Citation:
Envoyé par ouskel'n'or
Bon. Je suppose que tu es dans Word.
Effectivement je suis dans Word (je l'ai mis dans le titre de mon topic, tu vois j'essaye de retenir les commentaires avisés des "séniors" ;-))

Citation:
Envoyé par ouskel'n'or
Une question pour commencer : Seul le format des mots est en cause ou dois-tu en outre vérifier l'ortographe ?
J'imagine que non.
Je suppose que ton glossaire est renseigné dans le format qui va bien.
Effectivement, seule la Casse est à prendre en compte pas l'orthographe.

Citation:
Envoyé par ouskel'n'or
Auquel cas, je propose une chose : Lecture du glossaire, ligne par ligne. Pour chaque ligne lue, recherche de la correspondance dans le doc et "Remplacer tout". Un "remplacer tout" utilise le format du texte de remplacement. Passage à la ligne suivante du glossaire.
Et bien c'est bien ce que j'avais imaginé. Lecture de la ligne 1 (le mot à rechercher) et Lecture de la ligne 2 (le mot avec les majuscules où elles doivent être...)
Le tout stocké dans les variables var1 et var2..

Citation:
Envoyé par ouskel'n'or
Ainsi, tu n'as aucune recherche à faire.
Quant à ton glossaire, pour que le format soit respecté, je ne vois guère que Word (?) une donnée par ligne.
Je ne te suis plus là... à moins de faire une recherche, comment remplacer toutes les occurences du mot dans le doc ?

Y'a plus qu'à trouver le code quoi... Je me remets sur cette tâche...
kitcreanet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 16h09   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
ben divise ton probléme pour commencer pour la lecture d'un fichier texte ligne à ligne .. fait une recherche de Line Input sur ce forum ou aide en ligne ..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 17h13   #5
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Pour remplacer toutes les occurences d'un texte par un autre, tu te places en sommet de 1ère page et tu fais
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
    With Selection.Find
        .Text = LeMot 'Le Format n'a pas d'importance
        .Replacement.Text = LeMotFormaté
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False 'pour que le format n'ait pas d'importance en recherche
        .MatchWholeWord = False ' = True si tu veux rechercher un texte complet
        '.MatchWildcards = False ' si tu remplaces du texte cherché par * ou ?
        '.MatchSoundsLike = False ' si tu cherches du texte phonétiquement identique
        '.MatchAllWordForms = False 'rien dans l'aide
    End With
    Selection.Find.Execute Replace:=wdReplaceAll 'remplace tout d'un seul coup
Regarde les propriétés dans l'aide à Find Objet
Tu dis

Edit
Regarde aussi à "Execute" -> Méthode
ouskel'n'or 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 10h14.


 
 
 
 
Partenaires

Hébergement Web