Bonsoir Tintin.
Pour moi, les 2 boucles fonctionnent parfaitement.
Seulement, c'est pas très optimisé:
1 - si ta deuxième condition est remplie, tu n'as rien à exécuter, donc ça sert à rien. Mais je suppose que tu n'as pas tout posté.
2 - Tu relances le premier test pour chaque J, alors que seul I est un paramètre de ce premier test. Donc tu le test 1994 fois pour rien.
Notamment, si pour i=10, par exemple, il est faut, tu fais quand même la boucle sur tous les J.
Voici donc comment j'écrirais tes boucles imbriquées:
Dim i as integer, j as integer
For i=5 to 2000
If Workbooks("TOTO.XLS").Sheets("Feuil1").Cells(I, 18) = UserForm3.TBDOSSIER.Text Then
For j=5 to 2000
If Workbooks("TATA.XLS").Sheets("Feuil1").Cells(J, 3) = "" Then
' ce que tu veux faire si oui ici
end if
next j
end if
next i
As-tu saisi la nuance?
Bonne soirée.
Laurent.