VBA rechercher mots Excel dans word
Bonjour,
Je vais essayer d'expliquer mon problème le plus clairement possible. J'ai un fichier Excel avec 4 colonnes (Div1, Div2, Div3, Div4). Dans chaque colonne se trouve un certains nombres de codes.
J'ai un fichier Word dans lequel on trouve tous les codes de la Div1 qui sont présent dans le fichier Excel. J'aimerais créer une macro à partir de ce fichier Excel pour quelle me remplace tous les codes Div1 présent dans le Word par sont équivalent en Div4.
Je ne peux pas vous envoyer de fichiers car confidentiel. Je pourrais en créer un fake au pire mais pour le moment j'ai juste besoin de savoir si quelque chose cloche dans mon code.
En gros la macro voit le code Div1, le recherche dans le word, me le trouve puisque elle me le sélectionne puis plus rien, aucun remplacement n'est réalisé alors qu'elle me trouve bien le code Div4 aussi.
Elle me trouve tout correctement mais ne veut pas réaliser le remplacement.
Sub replaceECS()
Dim i As Integer, j As Integer
Dim derligDiv1 As Long, derligDiv2 As Long, derligDiv3 As Long, derligDiv4 As Long
Dim WApp As Object
Dim WDoc As Object
Dim tw As Workbook
Dim shDict As Worksheet
Dim find_div1 As Range, find_div2 As Range, find_div3 As Range, find_div4 As Range
Set tw = ThisWorkbook
Set shDict = tw.Sheets(1)
Set WApp = CreateObject("Word.Application")
WApp.Visible = True
Set WDoc = WApp.Documents.Open("C:\Users\xxx\Desktop\" & "1_HDD_V2_A_Div1_FT0034.docx", ReadOnly:=False)
Set CollWord = WDoc.Content.Words
Application.ScreenUpdating = True
Set find_div1 = shDict.Cells.Find("Div1", lookat:=xlWhole)
Set find_div2 = shDict.Cells.Find("Div2", lookat:=xlWhole)
Set find_div3 = shDict.Cells.Find("Div3", lookat:=xlWhole)
Set find_div4 = shDict.Cells.Find("Div4", lookat:=xlWhole)
derligDiv1 = shDict.Cells(Rows.Count, find_div1.Column).End(xlUp).Row
derligDiv2 = shDict.Cells(Rows.Count, find_div2.Column).End(xlUp).Row
derligDiv3 = shDict.Cells(Rows.Count, find_div3.Column).End(xlUp).Row
derligDiv4 = shDict.Cells(Rows.Count, find_div4.Column).End(xlUp).Row
If Not find_div1 Is Nothing Then
For i = 3 To 10
If shDict.Cells(i, find_div1.Column).Value <> "" Then
toto = shDict.Cells(i, find_div1.Column).Value
titi = shDict.Cells(i, find_div4.Column).Value
With WApp.Selection.Find
.ClearFormatting
.Text = toto
.Replacement.ClearFormatting
.Replacement.Text = titi
.Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
End With
WApp.Selection.HomeKey Unit:=6
End If
Next i
End If
Set WApp = Nothing
Set WDoc = Nothing
End SubHello,
As tu essayé de déclarer tes variables toto & titi en string ?
Car là elles sont en variant.
Bonjour Rag02700 et merci pour ta réponse.
En effet j'ai oublié cette déclaration, mais même résultat. J'ai réussi à trouver j'avais oublié d'ajouter la librairie word dans excel.
Sujet résolu !!!!