XL 2019 Second filtre avec sélection apparente

  • Initiateur de la discussion Initiateur de la discussion Sellig
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sellig

XLDnaute Junior
Bonjour,

Pourriez-vous m’aider à résoudre ce problème s’il vous plait.

J’ai un fichier joint nommé ‘’Logiciels’’ dans lequel j’ai installé une liste déroulante (Contrôle ActiveX) en colonne C. Ainsi qu’une macro qui permet de sélectionner et laisser apparent que ma sélection. Prenons pour exemple ‘’Convertisseur’’.

Jusque-là tout fonctionne.

Mon objectif serait de :

Trier cette liste ‘’Convertisseur’’ sur la colonne F ‘’En service’’ afin de laisser apparent que les ‘’Convertisseurs en service’’ (Soit avec une macro soit avec une seconde liste déroulante).


Je vous remercie par avance de votre aide.

Bien cordialement



PS : Pourriez-vous également faire en sorte que les filtres ne s’affichent pas à chaque ouverture du fichier.
 

Pièces jointes

Bonjour Sellig, bienvenue sur XLD,
PS : Pourriez-vous également faire en sorte que les filtres ne s’affichent pas à chaque ouverture du fichier.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$1" Then
        If Range("C1") = "All" Then
            If FilterMode Then ShowAllData
        Else
            Range("C3").Resize(300).AutoFilter Field:=1, Criteria1:=Range("C1"), VisibleDropDown:=False
        End If
    End If
End Sub
A+
 

Pièces jointes

Je ne vois pas pourquoi vous utilisez une macro Worksheet_Change alors que ceci va bien :
VB:
Private Sub ComboBox1_Change()
    If ComboBox1 = "All" Then
        If FilterMode Then ShowAllData
    Else
        Range("A2:J300").AutoFilter Field:=3, Criteria1:=ComboBox1
        Range("A2:J300").AutoFilter Field:=6, Criteria1:="En service"
    End If
End Sub
Les flèches des filtres restent visibles, ce n'est vraiment pas gênant.
 

Pièces jointes

Bonjour Sellig, le forum,

Si l'on utilise un tableau structuré il est facile de masquer les boutons des filtres :
VB:
Private Sub ComboBox1_Change()
With [Tableau1] 'tableau structuré
    .AutoFilter
    If ComboBox1 = "All" Then
        .AutoFilter
    Else
        .AutoFilter Field:=3, Criteria1:=ComboBox1
        .AutoFilter Field:=6, Criteria1:="En service"
    End If
    .ListObject.ShowAutoFilterDropDown = False
End With
End Sub
Edit : le bouton "Afficher tout" n'est guère nécessaire mais si l'on y tient on lui affectera cette macro :
VB:
Sub Tout()
Sheets("Logiciels").[C1] = "All"
End Sub
A+
 

Pièces jointes

Dernière édition:
Bonjour et merci pour votre extrême rapidité 👍.

Ce que vous me proposez est déjà génial.

Toutefois, je l’imaginais comme illustré sur la photo jointe :

En 1 je sélectionne tous les convertisseurs

Et au besoin

En 2 je sélectionne ceux qui sont en service (que ce soit par un bouton de macro ou une seconde liste déroulante.

Est-ce possible ?

Merci infiniment

Cordialement
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    222.2 KB · Affichages: 17
  • Logiciels(3).xlsm
    Logiciels(3).xlsm
    53.6 KB · Affichages: 2
Effectivement, vous avez raison, ‘’Afficher tout’’ ne sert plus à rien.


En revanche, vous n’avez pas répondu à ma question, je vous joins une autre photo qui est peut-être plus explicite.
 

Pièces jointes

  • Capture 2.JPG
    Capture 2.JPG
    203.1 KB · Affichages: 13
J'ai essayé de mettre une 2ème ComboBox mais cela crée une erreur de compilation : ComboBox2 n'est pas reconnue, je ne comprends pas pourquoi.

Dans ce fichier (3) j'utilise donc une liste de validation en F1 avec ce code :
VB:
Private Sub ComboBox1_Change()
    Range("A2:J300").AutoFilter Field:=3, Criteria1:=IIf(ComboBox1 = "All", "*", ComboBox1)
    Range("A2:J300").AutoFilter Field:=6, Criteria1:=IIf([F1] = "All", "*", [F1])
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [F1]) Is Nothing Then ComboBox1_Change
End Sub
 

Pièces jointes

Désolé,

Dernière petite question, je l’espère.



Je dois reproduire ce que vous avez fait sur d’autres tableaux mais pour la partie 1 (avec la ComboBox) ça ne fonctionne pas. Dès que je clic, il ne m’affiche que les titres.

La partie 2, n’agit pas

Quelles sont les astuces s’il vous plait ?

Merci par avance

Je vous joins un exemple
 

Pièces jointes

Un détail sur le dernier fichier : vous aurez remarqué que les lignes vides restent masquées.

Pour l'éviter utilisez :
VB:
Private Sub ComboBox1_Change()
    With Range("A2:F" & Application.Match([9^9], [A:A]))
        .AutoFilter Field:=3, Criteria1:=IIf(ComboBox1 = "All", "*", ComboBox1)
        .AutoFilter Field:=5, Criteria1:=IIf([E1] = "All", "*", [E1])
    End With
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [E1]) Is Nothing Then ComboBox1_Change
End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour