XL 2021 Recherches de valeurs dans deux colonnes

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 !

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonjour à tous,
J'ai déjà demandé à la communauté de m'éclairer sur ce thème. Gbinforme m'a proposé une solution qui correspondait bien à ma requête, malheureusement, je ne pas réussi à l'adapter au fichier joint. Sylvanu m'a montré comment faire avec les commandes d'Excel, c'est bien mais moins rapide qu'avec la solution de Gbinforme (XLD GBF) que je mets en ligne avec mon fichier qui reproduit la page anonymisée du fichier que, in fine, je veux modifier (BD MASSACRE V5). Ayant oublié comment envoyé de façon nominative (donc à Gbinforme et Sylvanu) je m'adresse à la communauté étant bien sûr ouvert à toutes les suggestions.
Bien à vous tous et bon dimanche.
Constantin
 

Pièces jointes

Bonjour Constantin,
Un essai en PJ avec dans la feuille :
VB:
Private Sub ComboBox1_Change()
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=5, Criteria1:="=*" & ComboBox1.Value & "*", Operator:=xlAnd
End Sub
Private Sub ComboBox2_Change()
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=6, Criteria1:="=*" & ComboBox2.Value & "*", Operator:=xlAnd
End Sub
Ce qui donne si j'ai bien compris :
Test5.gif
 

Pièces jointes

Bonjour Constantin, le forum,

Avec le 1er fichier la solution la plus rapide est d'utiliser le Dictionary et des tableaux VBA :
VB:
Private Sub ComboBox1_GotFocus()
Liste 2, ComboBox1
End Sub

Private Sub ComboBox2_GotFocus()
Liste 1, ComboBox2
End Sub

Sub Liste(col%, cb As ComboBox)
Dim d As Object, tablo, i&, x$, a(), n&
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
With ListObjects(1).Range
    tablo = .Value 'matrice, plus rapde
    For i = 2 To UBound(tablo)
        x = tablo(i, col)
        If x <> "" Then
            If Not d.exists(x) Then
                d(x) = ""
                ReDim Preserve a(n)
                a(n) = x
                n = n + 1
            End If
        End If
    Next
End With
If n Then cb.List = a: cb.DropDown Else cb.Clear
End Sub
Avec le 2ème fichier pas compris ce que vous voulez faire puisqu'il n'y a pas de ComboBox.

A+
 

Pièces jointes

Bonjour Job75, Bonjour Sylvanu,
Merci de vos réponses qui fonctionnent très bien... Job75 m'écrit : "Avec le 2ème fichier pas compris ce que vous voulez faire puisqu'il n'y a pas de ComboBox."
Je suis parti d'une feuille "vierge" mais formatée comme le fichier définitif (confidentiel) auquel je voudrai transférer ces modifications. Je ne sais pas créer et utiliser correctement les ComboBox... (je suis "plutôt" nul)
Dans le fichier Bd MASSACRE V6 je veux simplement reproduire cette logique de recherche. Pour entrer un peu plus dans le détail, j'ai "hérité" d'un fichier de gestion d'une association qui comprend 382 adhérents répartis sur 4 jardins potagers. Quand je dois mettre des données à jour (cotisation, cautions...) je dois d'abord retrouver l'adhérent d'où l'utilité d'un utilitaire de recherche. Gbinforme et Sylvanu m'ont déjà bien aidé mais j'ai bcp de mal à transposer et surtout comprendre la marche à suivre.
Pour autant, je commence grâce à vos propositions à mieux comprendre.
Je vais poursuivre mes cogitations cet après-midi.
PS : Je ne sais toujours pas comment adresser un message à un ou plusieurs membres identifiés dans leur réponses (Gbinforme, Sylvanu, Job75 qui m'a, dans le passé, bien aidé)
Bien à vous tous,
Constantin
 
Bonjour à tous .
Bien que je partage l'avis et les préconisations de @sylvanu sur la conversion de votre base en Table Structurée ,
et si j'ai bien compris votre désir , vous désirez conserver la base en tant que données "plates" .
Le classeur ci-joint sur sa ligne 4 fait le filtrage proposée par le Potager.xlsm .
Tout est basé sur la liste de validation comme dans le Potager .
 

Pièces jointes

Bonjour et merci de votre intérêt. En un mot comme en cent, je n'ai rien compris à ce que vous me proposez (ce n'est pas de votre faute, mais je suis plutôt nul).
Je ne sais même pas ce qu'est une table structurée ni comment on arrive à en faire une.
Le fichier que je vous ai transmis est une version extrêmement réduite du fichier que je veux en fait modifier et qui comporte des colonnes qui vont de A à CW...
De plus, je ne veux effectuer des recherches que sur le nom et le prénom de la feuille "base de données" qui dans mon fichier final n'est qu'une page sur la douzaine qu'il comporte. Il y a bien sûr des macros dans tous les sens et je ne m'y retrouve pas.
Je vais essayer de repartir du fichier de base (gestionnaire des adhérents d'une association). Vous évoquez la notion de données "plates" . Encore un terme que je ne connais pas.
Merci du temps passé, je vais essayer de faire le ménage dans les macros de mon fichier natif. Ceci dit, même si je n'ai pas compris, votre fichier fonctionne à merveille...
Bon dimanche,
 
Normal, Gbinform utilise des Textbox et non des Combobox.
En PJ la zone filtrée est sur E et F, et ce code rajouté :
VB:
Private Sub TextBox2_Change()
    If TextBox2.Value = "" Then
        ActiveSheet.Range("F:F").AutoFilter Field:=2
    Else
        ActiveSheet.Range("F:F").AutoFilter Field:=2, Criteria1:="=*" & TextBox2.Value & "*", Operator:=xlAnd
    End If
End Sub
 

Pièces jointes

Dans le fichier que vous m'avez envoyé, vous avez supprimé mes petites macros qui me permettaient de me déplacer de site en site (CO, LA GA SN). Je me retrouve maintenant avec une macro "Goto-site" que je n'arrive pas à faire fonctionner... Normal ?
Bon, j'y retourne !
Bon après-midi !
Normal, petite erreur quand j'ai voulu simplifier la sub, le code ci-dessous remplace l'autre :
VB:
Sub Goto_Site()
    Dim Target As Range, Plage As Range, To_Find As String
   ' on récupère le 1er caractère du texte contenu dans le bouton
    To_Find = Left(Trim(Shapes(Application.Caller).DrawingObject.Caption), 1)
   ' on définit la plage de données concernée
    Set Plage = Range(Cells(5, "A"), Cells(Rows.Count, "A").End(xlUp))
   ' on lance la recherche
    Set Target = Plage.Find(To_Find & "*", lookat:=xlWhole, LookIn:=xlFormulas)
   ' si cellule trouvée, on l'affiche
    If Not Target Is Nothing Then Application.GoTo Target, True
End Sub
 
Dernière édition:
- 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

A
Réponses
13
Affichages
2 K
A
Retour