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