Excel vb, word, rechercher et remplacer des expressions

Charly88

XLDnaute Occasionnel
Bonjour à tous, je sollicite à nouveau votre précieuse aide,
Je dois faire de temps à autre des traductions (sous word) très plan-plan et comme je commence (en fait dès le début) à en avoir ras la casquette de voir que je traduis 25 fois les mêmes expressions ou groupe de mots, je veux tenter une macro qui :
- va chercher dans un fichier excel l'expression à chercher dans la colonne A et l'expression équivalente dans la colonne B,
- les colle dans la boîte de recherche & remplace de word
- ainsi de suite jusqu'à la fin du tableau excel.


Dans mon esprit c'était assez simple mais je navigue sur des domaines que je ne connais pas (niv semi-débutant en vb). J'ai commencé ma macro dans l'excel contenant mes expressions, macro largement reprise d'une proposée par Epaf que je remercie au passage.

J'ai plusieurs problèmes, le premier et le plus important étant le plantage, les autres les idées suivantes et éventuels conseils à recevoir :
1) La macro de base insère un mot à un endroit désigné par un signet, j'ai remplacé cette partie par mon rechercher-remplacer qui fonctionnait sous word mais là ça plante dès le Selection.Find.ClearFormatting où dit autrement dès qu'il s'agit de faire bosser word. J'ai bloqué les 2 premières lignes mais rebelote.
Wrong number of arguments or invalid property assignment (Error 450)

2) J'ai fait mon recherche remplace en enregistrant une macro, or lorsque j'ai fait la manip j'ai spécifié "recherche vers le bas", chose que je ne crois pas voir apparaître le code correspondant, si oui, qu'est-ce ?

3) Suite à 2) à la fin de la manip, il m'a affiché le nombre de remplacements faits en me demander si je voulais recommencer depuis le début ce à quoi j'ai répondu non.
Là encore ça n'apparait pas et ensuite, caviar dans la cerise sur le gâteau, j'aurais voulu récupérer le nombre de remplacements de ce message pour faire des stats dans le fichier excel et épurer progressivement la base de données.
Peut-être serait-il plus facile de trouver cette info en faisant un remplacer simple, puis suivant, etc et alimenter un compteur en vb... ?

Bref le plus important, comment régler le plantage actuel ?

Merci d'avance !

Code:
Sub CopierUneDonnéeDansWord()
Dim WdApp As Word.Application                     'instance de l'appli Word
Dim WdDoc As Word.Document              'instance du document Word à ouvrir
Dim Feuille1 As Worksheet
Dim Chemin, NomFich
Dim NoLigne As Integer, NoCol As Integer, LaDonneeAcoller
Chemin = "C:\Traductions\"
NomFich = "TraduisMoicMerdierl.doc"

NoLigne = 1
NoCol = 1

Set Feuille1 = ActiveSheet                      'instance du classeur actif
    Set WdApp = CreateObject("word.application")     'ouvre la session Word
    Set WdDoc = WdApp.Documents.Open(Chemin & NomFich)        'ouvre le doc
    If WdDoc Is Nothing Then 'Fichier non trouvé
        MsgBox "Fichier " & NomFich & " non trouvé dans le répertoire " & Chemin
        GoTo Fin 'l'instance de word doit être fermée
    End If
    WdApp.Visible = False                                      'masque Word
    
    LaDonneeAcoller = Feuille1.Cells(NoLigne, NoCol).Value
    



    With WdApp
'    Selection.Find.ClearFormatting
 '       Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "jeudi"
            .Replacement.Text = "mon pantalon est décousu si ça continue..."
            .Forward = True
            .Wrap = wdFindContinue 'ou wdFindAsk
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
        End With
 



    'WdApp.Visible = True 'Pour voir (Ne pas fermer le fichier depuis Word)
    WdDoc.Close True                       'Enregistre et ferme le doc word
    DoEvents            'Laisse au system le temps d'enregistrer le fichier
Fin::
    WdApp.Quit                                            'ferme la session
    
    Set Plage = Nothing
    Set WdApp = Nothing
    Set WdDoc = Nothing
End Sub
 

Charly88

XLDnaute Occasionnel
Re : Excel vb, word, rechercher et remplacer des expressions

Cette correction ne fonctionne que lors de la frappe non ?
Et j'ai peur que les corrections rentrées ne concernent que le fichier word en question, là le but est de pouvoir corriger n'importe lequel en changeant simplement le nom du fichier.
Accessoirement ce serait un peu plus lourd à mettre à jour.
 

chris

XLDnaute Barbatruc
Re : Excel vb, word, rechercher et remplacer des expressions

Bonjour

Première remarque : tu es bien placé pour savoir qu'un même mot peut changer de traduction car selon le contexte il n'a pas le même sens et c'est ce qui fait la différence entre un bon traducteur humain et les traductions automatiques. Donc attention à ne pas te couper l'herbe sous le pied !

Bon sinon dans Word lorsqu'on ajoute des corrections autos, ce n'est pas pas limité à un document : cela concerne l'ensemble des applications office installées sur le PC.

Personnellement j'utiliserais plutôt les insertions automatiques : c'est moins risqué puisque qu'il faut taper un mot ou une abréviation choisie puis appuyer sur F3 pour remplacer : tu gardes plus de contrôle. Et là tu peux choisir où stocker ce glossaire.
 

Charly88

XLDnaute Occasionnel
Re : Excel vb, word, rechercher et remplacer des expressions

Pour les bonnes âmes qui peuvent se pencher sur mon cas, mon gros problème actuel c'est pourquoi word refuse-t-il de fonctionner via excel ?


> Chris : je sais bien tout cela, à vrai dire s'il s'agissait de traductions un minimum littéraires, j'y prendrais même probablement plaisir, mais non là c'est du brut, répétitif, relativement pauvre en vocabulaire avec pourtant quelques excès verbeux caractéristiques, vous l'aurez deviné ce sont des procédures... ou assimilés.


La correction auto, tu sembles confirmer qu'elle fonctionne à la frappe donc non, et au-delà, stocker dans excel aurait l'avantage de pouvoir facilement dupliquer / partager l'outil ; l'enrichissement étant d'autant plus facile qu'une recherche permet facilement de savoir si tel terme est rentré et sous quelle forme. Enfin si j'arrive à faire les stats, je gagne énormément en efficience en épurant la base. En gros, passé l'étape laborieuse de la création de la base de données originelle (sur laquelle je transpire en ce moment pour tout dire), un petit réseau de personnes ayant régulièrement à faire des traductions entretiendraient d'elles-même le prog dont un tronc commun pourrait être défini ainsi que des spécialisations pour chacun.


Et pour avoir utiliser la méthode hier (mais en manuel) puis avoir attaquer la vraie traduction ensuite... ce fut un pur bonheur de voir parfois des phrases entières traduites presque parfaitement.
L'optimum serait un programme autonome capable de détecter les groupes de mots et mots les plus répétés dans un texte. Le concept ne semble pas très compliqué mais on est très loin de visual basic...
 

Discussions similaires

Statistiques des forums

Discussions
312 107
Messages
2 085 355
Membres
102 874
dernier inscrit
Petro2611