Bonjour à tous !

Ceci est mon premier post, j'espère pouvoir bénéficier de votre aide et trouver une solution à mon problème avec vous !

Dans mon entreprise, l'extraction de toute les références des produits vendu se fait sur un fichier excel basique, mais le nombre de références est bien trop volumineux.
Je cherche donc à faire une macro qui, en se basant sur un fichier "base de donnée", recherche dans le fichier extrait toute les lignes contenant ces références et ne montre qu'elles (ou masque toutes les autres au choix).

Pour cela, j'ai créé un fichier dans lequel j'ai indiqué chaque référence existante rangées par produits, puis j'ai nommé chaque plage de donnée pour avoir une plage de recherche contenant chacune des références pour chaque produit.
J'ai ensuite créé un onglet dans lequel je propose à l'utilisateur de choisir le modèle recherché, et affiche un bouton po
A partir de là, j'ai écrit le code que vous pouvez voir ici :

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Sub Extraction()
'
' Recherche Macro
'
    Application.ScreenUpdating = False
 
    Dim fichier As Variant
    Dim recherche As Range
    Dim model As String
    Dim i As Integer
    Dim DerCol As Integer
 
    'La case C6 contient le modèle choisi par l'utilisateur
    model = Sheets("Extraction").Range("C6").Text
 
    'Va chercher la plage qui correspond au modèle choisi dans les onglets corespondant
    recherche = Range("M_" & model)
 
    'Ouvre le fichier extrait
    fichier = Application.GetOpenFilename("Tous les fichiers (*.*),*.*")
    Workbooks.Open (fichier)
 
    'Montre toute les lignes
    Call Tout_montrer
 
    'Recherche les lignes ne contenant aucune des données de la plage de recherche et les masque
    DerCol = Cells(1, Columns.Count).End(xlToLeft).Column
    For i = Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
        If WorksheetFunction.CountIf(Range(Cells(i, 2), Cells(i, DerCol)), recherche) <= 0 Then
                Rows(i).EntireRow.Hidden = True
        End If
    Next
 
    Application.ScreenUpdating = True
 
End Sub
Sub Tout_cacher()
    Cells.EntireRow.Hidden = True
End Sub
 
 
Sub Tout_montrer()
    Cells.EntireRow.Hidden = False
End Sub
La macro est donc censé rechercher dans le fichier tout les lignes ne contenant aucune des données de la plage de recherche et les masquer.
Cependant au lancement de la macro, un code d'erreur s'affiche :

Erreur d'exécution '91'

Variable objet ou variable With non définie
Et me montre la ligne qui nomme la variable "recherche" (ligne 17) en la coloriant en jaune.

Je pense que c'est probablement pour deux raison :

- Je n'utilise pas les bonnes variables
- La fonction de recherche ne fonctionne pas avec une plage de donnée mais uniquement avec une seule valeur (variable en bleu)

Je ne sais pas du tout comment trouver une solution, je suis resté sur le code jusqu'à 2:30 ce matin sans succès... J'espère que vous en saurez plus que moi !

Merci d'avance !!

Ps : Je n'ai pas mis les fichiers en pièce jointe parce que le règlement du forum demande de ne pas le faire au premier post. Si vous en avez besoin je vous les mettrai a disposition.