XL 2010 Macro / filtre / choix liste déroulante

Marjo2

XLDnaute Occasionnel
Bonsoir forum,

Je souhaiterai qu'en fonction de l'élément choisi dans la liste déroulante, cela filtre l'onglet "BASE DE DONNEE" en fonction de ce critère ou de plusieurs critères.
Je vous joins un exemple pour que cela soit plus clair. Toute la difficulté est que ça provient d'une liste déroulante.
Merci d'avance.
 

Pièces jointes

  • TEST.xlsx
    42.1 KB · Affichages: 15

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Marjo, bonjour le forum,

Essaie cette événementielle à placer dans le composant Feuil2(CRITERES) :

VB:
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim OB As Worksheet 'déclare la variable OB (Onglet BASE ARTICLES GE)

Set OB = Worksheets("BASE ARTICLES GE") 'définit l'onglet OE
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
OB.ShowAllData 'affiche tous les éléments sans aucun filtre (génère une erreur si c'est déjà le cas)
If Err <> 0 Then Err.Clear 'si une erreur a été générée supprime l'erreur
On Error GoTo 0 'annule la gestion des erreurs
Select Case Target.Address 'agit en fonction de l'adresse de la cellule modifiée
    Case "$B$1" 'cas B1
        If Target.Value = "" Then 'condition : si la cellule est effacée
            Exit Sub 'sort de la procédure
        Else 'sinon
            OB.Range("A1").CurrentRegion.AutoFilter Field:=2, Criteria1:=Target.Value 'filtre la colonne 2 avec la valeur de B1 comme critère
        End If 'fin de la condition
    Case "$B$3" 'cas B3
        If Target.Value = "" Then 'condition 1 : si la cellule est effacée
            Exit Sub 'sort de la procédure
        Else 'sinon (condition 1)
            If Range("B1").Value = "" Then 'condition 2 : si B1 est vide
                OB.Range("A1").CurrentRegion.AutoFilter Field:=7, Criteria1:=Target.Value 'filtre la colonne 7 avec la valeur de B3 comme critère
            Else 'sinon (condition 2)
                OB.Range("A1").CurrentRegion.AutoFilter Field:=2, Criteria1:=Range("B1") 'filtre la colonne 2 avec la valeur de B1 comme critère
                OB.Range("A1").CurrentRegion.AutoFilter Field:=7, Criteria1:=Target.Value 'filtre la colonne 7 avec la valeur de B3 comme critère
            End If 'fin de la condition2
        End If 'fin de la condition 1
    Case "$B$5" 'cas B5
        If Target.Value = "" Then Range("B7").Value = "" 'si B5 est effacée, efface la cellule B7
        If Range("B7").Value = "" Then Exit Sub 'si B7 est vide, sort de la procédure
        OB.Range("A1").CurrentRegion.AutoFilter Field:=5, Criteria1:=Target.Value 'filtre la colonne 5 avec la valeur de B5 comme critère
        OB.Range("A1").CurrentRegion.AutoFilter Field:=6, Criteria1:=Range("B7").Value 'filtre la colonne 6 avec la valeur de B7 comme critère
    Case "$B$7" 'cas B7
        If Target.Value = "" Then Range("B5").Value = "" 'si B7 est effacée, efface la cellule B5
        If Range("B5").Value = "" Then Exit Sub 'si B5 est vide, sort de la procédure
        OB.Range("A1").CurrentRegion.AutoFilter Field:=5, Criteria1:=Range("B5").Value 'filtre la colonne 5 avec la valeur de B5 comme critère
        OB.Range("A1").CurrentRegion.AutoFilter Field:=6, Criteria1:=Target.Value 'filtre la colonne 6 avec la valeur de B7 comme critère
    Case Else 'tous les qutres cas
        Exit Sub 'sort de la procédure
End Select 'fin de l'action en fonction de l'adresse de la cellule modifiée
End Sub
 

Marjo2

XLDnaute Occasionnel
Bonjour Robert, bonjour Forum
Merci beaucoup, en plus le détail est super expliqué ce qui permet de l'adapter partout.
Il y a une chose qui me fait planter le fichier. Je complète mon fournisseur, je complète mon service et j'ai été trop loin je complète mon theme 1. Il n'y a pas de filtre qui se font mais sur le coup quand je veux remettre à 0 et bien le fichier est complétement planté.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Les filtres Fournisseur/Service et Thème1/Thème2 sont complètement indépendants. Si on utilise les premiers, les seconds sont désactivés et, si on utilise les seconds, les premiers sont désactivés.
J'ai pensé que c'est comme ça que tu voyais les choses...
Tu veux pouvoir utiliser tous les filtres en même temps ?

Sinon pour ton bug, décris moi, pas à pas, les choix que tu as fait et je verrai si j'arrive à reproduire le bug. Part de l'onglet Critères vierge...
 

Marjo2

XLDnaute Occasionnel
C'est juste, tu as très bien compris ma demande.

Alors je pars bien de zéro.
Je fais une sélection sur Fournisseur = gardien de la galaxie et sur service = Royaume
=> les filtres fonctionnent

Mais je me dis que l'utilisateurs ne va pas faire attention et va compléter le theme 1
=> les filtres ne fonctionnent plus et c'est normal. Donc je retourne dans mon theme 1 pour remettre à 0 et c'est la que ça bug. Attention je suis obligée de faire un ctrl+alt+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

Fait en 5 mn avec un programme générique
On peut ajouter des colonnes

Sans titre.png


Boisgontier
 

Pièces jointes

  • FormRechercheComboTextBoxIntuitifTableau.xls
    246.5 KB · Affichages: 11

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 078
Membres
103 112
dernier inscrit
cuq-laet