Recherche avec des ComboBox

Forum Bonsoir

Je vous sollicite à m'aider pour résoudre mon souci ci-dessous

J’ai un userForm avec des ListBox et un ComboBox qui marche très bien ;

Mais lorsque j’ai changé les ListBox avec des ComboBox pour faire ma recherche alors ça coince

Où est le problèmes dans mon code SVP.

50combo.xlsm (19.77 Ko)

Où est le problèmes dans mon code SVP

aider moi a résoudre mon problème

Bonsoir Zving, bonsoir le forum,

Tu compares la valeur d'une cellule numérique avec la valeur d'une combobox de type String (texte). L'égalité n'y est pas car, par exemple, 2011 est différent de "2011"... Il faut convertir la valeur de la cellule en texte avec CStr. C'est pour cela que le code marche bien jusqu'aux sites (texte) mais dès qu'on arrive aux années (numériques), ça plante...

Ton code adapté et modifié (si une combobox ne contient qu'une seul élément, celui-ci s'affiche, sinon elle est vide et attend le choix de l'utilisateur) :

Private F As Worksheet

Private Sub UserForm_Initialize()
Set F = Sheets("Médecine de travail") 'Menu cascade pour zone/equip consultation
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range(F.[B2], F.[B65000].End(xlUp))
    mondico(c.Value) = c.Value
Next c
Me.ComboBox2_siteDeTravail.List = mondico.items
End Sub

Private Sub ComboBox2_siteDeTravail_Change()
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range(F.[B2], F.[B65000].End(xlUp))
    If c.Value = Me.ComboBox2_siteDeTravail Then mondico(c.Offset(, 10).Value) = c.Offset(, 10).Value
Next c
Me.ComboBox4_Annee.List = mondico.items
If UBound(mondico.items) = 0 Then
    Me.ComboBox4_Annee.ListIndex = 0
Else
    Me.ComboBox4_Annee.ListIndex = -1
End If
End Sub

Private Sub ComboBox4_Annee_Change()
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range(F.[B2], F.[B65000].End(xlUp))
    If c.Value = Me.ComboBox2_siteDeTravail And CStr(c.Offset(, 10).Value) = Me.ComboBox4_Annee Then mondico(c.Offset(, 11).Value) = c.Offset(, 11).Value
Next c
Me.ComboBox5_Mois.List = mondico.items
If UBound(mondico.items) = 0 Then
    Me.ComboBox5_Mois.ListIndex = 0
Else
    Me.ComboBox5_Mois.ListIndex = -1
End If
End Sub

Private Sub ComboBox5_Mois_Change()
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range(F.[B2], F.[B65000].End(xlUp))
    If c.Value = Me.ComboBox2_siteDeTravail And CStr(c.Offset(, 10).Value) = Me.ComboBox4_Annee _
       And CStr(c.Offset(, 11).Value) = Me.ComboBox5_Mois Then mondico(c.Offset(, 12).Value) = c.Offset(, 12).Value
Next c
Me.ComboBox6_Jour.List = mondico.items
If UBound(mondico.items) = 0 Then
    Me.ComboBox6_Jour.ListIndex = 0
Else
    Me.ComboBox6_Jour.ListIndex = -1
End If
End Sub

merci ThauThème ça marche très bien

a plus

Rechercher des sujets similaires à "recherche combobox"