Bonjour Hedi,
Merci pour ton post ! Je voulais que le code soit affiché en fait, pour qu'il puisse être visible directement. Je l'ai cependant modifié comme j'estime qu'il devrait être (d'après ton énoncé initial), et plus ou moins comme je l'avais codé au départ, à savoir sans effectuer de sortie de la boucle while dès qu'il y a une correspondance car il n'est pas impossible que plusieurs fichiers contiennent un même numéro de série.
Sub Importation_Donnees_Word()
Dim ws As Worksheet 'onglet Excel dans lequel on importe les données
Dim sChemin As String 'répertoire contenant les fichiers Word
Dim sNomFichier As String 'nom du fichier Word
Dim WApp As Object, WDoc As Object, WSel As Object
Dim i%, n%
' -- Initialisation des variables
Set ws = Thisworkbook.Sheets(1)
sChemin = "C:\Devis" & "\"
Set WApp = CreateObject("Word.Application") 'pour créer un objet Word
WApp.Visible = True 'ne pas afficher Word pendant l'exécution
Application.ScreenUpdating = False
For i = 2 To ws.Range("A" & Rows.Count).End(xlUp).Row
sNomFichier = Dir(sChemin & "*.doc*") 'pour ouvrir tous les fichiers .doc*. 1er fichier.
Do While Len(sNomFichier) > 0
Set WDoc = WApp.Documents.Open(sChemin & sNomFichier) 'ouvre le document Word
With WApp.Selection.Find
.Text = ws.Cells(i, 1)
.Forward = True
.Execute
If .Found = True Then
n = n + 1 'incrémentation de n, ligne d'import
ws.Cells(n, 2) = sNomFichier 'col 2 prend nom de fichier
ws.cells(n, 3) = "n° " & i - 1 'colonne 3 prend position du n° série dans la liste en col A
end if
End With
WDoc.Close False 'fermer le document Word sans enregistrer
sNomFichier = Dir 'prochain document
Loop
Next i
Application.ScreenUpdating = True
WApp.Quit
End Sub
Merci pour ton retour et bonne continuation !