Bonjour,

J'ai lu plusieurs sujet sur la commande (find) et je dois dire que je ne suis pas encore très bon en macro... mais là je butte.

J'ai la logique, mais je bloque sur la formulation.

Voici ce que je souhaite faire :

- j'ai deux fichiers excel
(Fichier A) doit permettre d'afficher des données en fonction de trois critères.
(Fichier B) contient les données brutes à récupérer.

La macro est située sur le fichier A et doit :
- trouver les lignes (il peut y en avoir une ou plusieurs, ou aucune)
qui correspondent aux trois critères sélectionnés via des menus déroulants choisi par l'utilisateur du fichier A
Pour information :
- Le critère C doit être trouvé dans la colonne K
- Le critère D doit être trouvé dans la colonne L
- Le critère E doit être trouvé dans la colonne M
- L'id a récupérer est en colonne A

- Ensuite il faut recopier la première ligne puis les autres du fichier B dans le fichier A

Voici ce que je voulais faire mais cela ne fonctionne pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim LastLig As Long
sub find()
Dim C As Range, D As Range, E As Range, Result As Range, Nblign As Range
Set C = Range("H7") 'premier critère
Set D = Range("H8") 'second criètre
Set E = Range("H9") 'troisième critère
'zone où l'information doit être recherchée
    ' zone ou l'information doit être prise (source de l'information)
    For Each Result Workbooks("fichierB.xlsx").Worksheets("Ongletsource")
            ' zone où l'on trouve la première ligne
            Set Nbligne = .Range("K:K").find(C.Value, LookIn:=xlValues, LookAt:=xlPart) AND .Range("L:L").find(D.Value, LookIn:=xlValues, LookAt:=xlPart) AND .Range("M:M").find(D.Value, LookIn:=xlValues, LookAt:=xlPart)
            If Not Nbligne Is Nothing Then
            Set Result = Nbligne.Offset(0, -10) 'le -10 nous ramène à la colonne A
            MsgBox "le résultat est " & Result ' pour vérifier la valeur retournée
'ensuite je ne sais pas comment recopier la ligne trouvée dans le fichier A
'et s'assurer que la boucle va retourner chaque ligne trouvée pour ses trois critères simultanés.
                Set Nbligne = Nothing
        End If
    Next Result
Merci d'avance de vos retours...