XL 2019 recherche de valeurs selon critères

  • Initiateur de la discussion Initiateur de la discussion SPGoder
  • 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 !

SPGoder

XLDnaute Occasionnel
Bonjour
Dans un tableau, je souhaite récupérer toutes les valeurs correspondantes à un critère
dans un combobox, on initialise une liste,et je voudrais initialiser une mouvelle liste en fonction du choix du premier combobox. Cette nouvelle liste doit retrouver dans un colonnes la valeur du premier combobox, et trouver les valeurs correspondantes. (un peu comme si dans la première conne ill y avait les marque de voiture, et dans l'autre les modèles)
Voici le code que j'ai écrit
Code:
Private Sub UserForm_Initialize()
dim IM As Variant
With ComboBox4
            For IM = 2 To Worksheets("Immeuble").Range("B" & Rows.Count).End(xlUp).Row
               .AddItem Worksheets("Immeuble").Range("B" & IM)
            Next IM
        End With
End Sub

VB:
Private Sub ComboBox4_Change()

    Dim ligne As Long, i As Integer
  
    If ComboBox4.ListIndex = -1 Then Exit Sub
        ligne = ComboBox4.ListIndex + 2
  
        ComboBox1.Clear
        For i = 2 To ligne         
                If Worksheets("Biens").Cells(i, 2).Value = ComboBox4.Value Then
                  ComboBox1.AddItem Worksheets("Biens").Cells(i, 6).Value
                End If       
            i = i + 1
       Next
End Sub

Je ne comprend pas mon erreur.
Ce que je demande de faire, c'est que dans une boucle avec i=i+1, si la valeur de combobox4 est égale à la valeur de la cellule de la colonne, on ajoute un item à la combobox1, et ceci jusque la ligne "ligne"
Pourriez vous m'aider à comprendre svp
 
Dernière édition:
Bonsoir.
Ce complément à mettre en référence dans votre projet après installation, s'occupe de tout.
Remarque: À priori il s'appuierait seulement sur le tableau avec toutes les infos, dans votre seconde feuille "Biens".
Aittention: les valeurs de ComboBox et de TextBox sont toujours de type String, pouvant ne pas correspondre à des valeurs de cellules de type Double présentant le même aspect.
 
Dernière édition:
Merci pour ce partage, je vais analyser et tester cette manière de travailler.
Mais vous serait il possible de m'expliquer où est mon erreur de raisonnement. celà fait une dizaine de jours que j'essaie d'apprivoiser VBA, (mon projet avance pas trop mal) et j'ai besoin de comprendre mes erreurs, pour progresser.
 
Je n'ai pas de quoi vérifier des hypothèses alors je soupçonne que votre ComboBox4 a été alimentée d'après des numéros. Il s'y sont quand même forcément retrouvés sous forme de textes qui leurs sont toujours différents.
 
Je viens de m’apercevoir que i s’incrémente de 2 au lieu de 1
J'ai changer le nom de la variable, même chose (j'ai remplacé i par j, mais cela fait la meme chose pour n'importe quel nom, idem en changeant integer par long dans la déclaration)
J'ai fini par écrire j=j, (au lieu de j=j+1)et j s'incrémente de 1
Comment est ce possible?
Et du coup, cela fonctionne
Une explication?
 
Bonsoir @SPGoder , Dranreb, le Forum

J'ai fini par écrire j=j, (au lieu de j=j+1)et j s'incrémente de 1
Comment est ce possible?
Et du coup, cela fonctionne

C'est impossible, enfin avec le bout de code que je vois en haut du fil... A mon avis tu as du changer aussi autre chose.

Bonne soirée
@+Thierry

EDIT Le code tel qu'il devrait fonctionner :
VB:
Private Sub ComboBox4_Change()

    Dim ligne As Long, i As Integer
 
    If ComboBox4.ListIndex = -1 Then Exit Sub
        ligne = ComboBox4.ListIndex + 2
 
    ComboBox1.Clear
       For i = 2 To ligne         
                If Worksheets("Biens").Cells(i, 2).Value = ComboBox4.Value Then
                  ComboBox1.AddItem Worksheets("Biens").Cells(i, 6).Value
                End If       
       Next i
End Sub

(Pas du tout de i = i +1 puisque il est dans le Loop For Each)
 
Dernière édition:
Merci de ta réponse
J'ai modifié tel que tu me le proposes et cela fonctionne (juste enlever i=i+1, et mettre next i)
C'est logique aussi car "For next " incrémente de 1 naturellement" si je peux m'exprimer ainsi.
Quand on a le nez dans le guidon depuis un bon bout de temps, on passe à coté de chose simple...
 
- 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

  • Question Question
Microsoft 365 Recherche V
Réponses
6
Affichages
799
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
481
Réponses
3
Affichages
569
  • Question Question
Microsoft 365 VBA Transpose
Réponses
11
Affichages
727
Réponses
4
Affichages
380
Retour