XL 2019 recherche de valeurs selon critères

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:

Dranreb

XLDnaute Barbatruc
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:

SPGoder

XLDnaute Occasionnel
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.
 

Dranreb

XLDnaute Barbatruc
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.
 

SPGoder

XLDnaute Occasionnel
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?
 

_Thierry

XLDnaute Barbatruc
Repose en paix
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:

SPGoder

XLDnaute Occasionnel
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...
 

Discussions similaires

Réponses
6
Affichages
202