Re : copier une plage de données sous conditions dans un classeur fermé
il s’agit d’un tri , et une fois que les données triées, on prend comme plage (SourceRange) les cellules dans la colonne F qui correspondent. 
Do
i = i + 1
Loop Until Cells(i, 2) = "03" And Cells(i, 3) = "M" And Cells(i, 4) = "P"     trouve le numéro de la  première ligne répondant au critères
 
j = i     la plage de cellules répondant aux critères est en un seul bloc, donc on enchaîne pour trouver le numéro de la dernière ligne 
 
Do While Cells(j, 2) = "03" And Cells(j, 3) = "M" And Cells(j, 4) = "P"   trouve le numéro de la dernière ligne correspondant aux critères
 
j = j + 1
 
Loop
 
Set SourceRange= «  F&i :F&j »   définit la plage de cellules à copier
 
Le problème c’est que pour l’instant j’ai des messages d’erreurs.. Je bloque vraiment. 
Le principal c’est de trouver comment adapter le code ci-dessus et où le mettre pour que ça marche.
Voilà ce que j’ai découvert :
 
With Range(SourceRange)
i = 5
Do
i = i + 1
Loop Until Range("C" & i).Value = M And Range("D" & i).Value = P
End With
MsgBox ("i=" & i)
 
Quand on insère cette boucle après la connexion mais avant de copier des trucs, elle marche et renvoie un i intéressant (avant j'avais des messages d'erreurs), le problème c’est que le format de la colonne B dans le fichier BLABLA est NumberFormat = "00" . Avec ce format, la méthode range échoue si tu rajoutes 
Range("b"& i).value = "03" And 
 
Auriez-vous une solution pour ce sous-problème ?
 
Sinon, comment dans ce cas là stocker la valeur i quelque part et faire démarrer j avec cette valeur ??
 
Et quand on aura tout ça, comment ça s’écrit une plage avec un compteur dedans ? comme ça : [« f »& i : « f »& j] ??