Test valeur de combobox

Le
Tendasque
Bonjour,

je voudrais alimenter une ListBox en testant la valeur des 5 derniers
caractères d'une combobox dans la colonne C de la feuille Liste; je tente:

For k = 1 To Sheets("Liste").[A65536].End(xlUp).Row
If Sheets("Liste").Cells(k, 3) = Right(ComboBox1.Value, 5) Then
UserForm1.ListBox1.AddItem Sheets("Liste").Cells(k, 1)
End If
Next

mais la ListBox n'affiche pas les données

Merci de votre aide.
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #21371181
Bonjour.
Où se trouve ce code ? Peut-être que ta listbox est réinitialisée au
chargement de l'userform ?
Cordialement.
Daniel

Bonjour,

je voudrais alimenter une ListBox en testant la valeur des 5 derniers
caractères d'une combobox dans la colonne C de la feuille Liste; je tente:

For k = 1 To Sheets("Liste").[A65536].End(xlUp).Row
If Sheets("Liste").Cells(k, 3) = Right(ComboBox1.Value, 5) Then
UserForm1.ListBox1.AddItem Sheets("Liste").Cells(k, 1)
End If
Next

mais la ListBox n'affiche pas les données

Merci de votre aide.
Tendasque
Le #21371371
L'userform a une combobox et une listbox.
Ce code est celui de la combo; il fonctionnait très bien sous cette forme:

Private Sub ComboBox1_Change()
For k = 1 To Sheets("Liste").[A65536].End(xlUp).Row
If Sheets("Liste").Cells(k, 19) = ComboBox1.Value Then
UserForm1.ListBox1.AddItem Sheets("Liste").Cells(k, 1)
End If
Next
End Sub

la combo affichait un nom; j'ai modifié l'affichage dans la combo qui
affiche maintenant le nom + un code en 5 chiffres et je voudrais que la
recherche se fasse sur ce code qui est en colonne C de la feuille Liste
c'est pour cela que j'ai remplacé:
If Sheets("Liste").Cells(k, 19) = ComboBox1.Value Then
par:
If Sheets("Liste").Cells(k, 3) = Right(ComboBox1.Value, 5) Then

y a-t-il un pb de syntaxe ? un pb de texte/nombre ?


"Daniel.C"
Bonjour.
Où se trouve ce code ? Peut-être que ta listbox est réinitialisée au
chargement de l'userform ?
Cordialement.
Daniel

Bonjour,

je voudrais alimenter une ListBox en testant la valeur des 5 derniers
caractères d'une combobox dans la colonne C de la feuille Liste; je
tente:

For k = 1 To Sheets("Liste").[A65536].End(xlUp).Row
If Sheets("Liste").Cells(k, 3) = Right(ComboBox1.Value, 5) Then
UserForm1.ListBox1.AddItem Sheets("Liste").Cells(k, 1)
End If
Next

mais la ListBox n'affiche pas les données

Merci de votre aide.




Hervé
Le #21374971
Bonjour Tendasque,

Avant tu comparais deux strings puisque c'était des noms, maintenant, tu
compare deux numéros de code dont l'un est considéré comme string dans le
combo et numérique dans la feuille. Essai ce qui suit, il y a une conversion
de type :

Private Sub ComboBox1_Change()

Dim Plage As Range
Dim Cel As Range

With Worksheets("Liste")
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
End With

For Each Cel In Plage
If CStr(Cel.Offset(0, 18)) = ComboBox1.Value Then
UserForm1.ListBox1.AddItem Cel
End If
Next

End Sub


Hervé.

"Tendasque" news:O%
Bonjour,

je voudrais alimenter une ListBox en testant la valeur des 5 derniers
caractères d'une combobox dans la colonne C de la feuille Liste; je tente:

For k = 1 To Sheets("Liste").[A65536].End(xlUp).Row
If Sheets("Liste").Cells(k, 3) = Right(ComboBox1.Value, 5) Then
UserForm1.ListBox1.AddItem Sheets("Liste").Cells(k, 1)
End If
Next

mais la ListBox n'affiche pas les données

Merci de votre aide.

Tendasque
Le #21375101
Merci, Hervé
j'ai adapté ainsi:

Private Sub ComboBox1_Change()

Dim Plage As Range
Dim Cel As Range

With Worksheets("Liste")
Set Plage = .Range(.[C1], .[C65536].End(xlUp))
End With

For Each Cel In Plage
If CStr(Cel) = Right(ComboBox1.Value, 5) Then
UserForm1.ListBox1.AddItem Cel.Offset(0, -2)
End If
Next

End Sub

cela fonctionne; le code est bien un nombre; ce qui m'a trompé, c'est que
dans le fichier original, issu d'une inscription en ligne, bien que le code
soit sur 5 chiffres (ex: 11345), il se présente sous un format texte (il est
aligné à gauche, et c'est ce que me fait remarquer Excel: "le nombre dans
cette cellule est au format texte...") je pensais à tort que j'étais bien en
présence d'une chaine de caractères, et qu'il était inutile de le convertir
en texte...

Merci encore et bon dimanche

"Hervé"
Bonjour Tendasque,

Avant tu comparais deux strings puisque c'était des noms, maintenant, tu
compare deux numéros de code dont l'un est considéré comme string dans le
combo et numérique dans la feuille. Essai ce qui suit, il y a une
conversion de type :

Private Sub ComboBox1_Change()

Dim Plage As Range
Dim Cel As Range

With Worksheets("Liste")
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
End With

For Each Cel In Plage
If CStr(Cel.Offset(0, 18)) = ComboBox1.Value Then
UserForm1.ListBox1.AddItem Cel
End If
Next

End Sub


Hervé.

"Tendasque" news:O%
Bonjour,

je voudrais alimenter une ListBox en testant la valeur des 5 derniers
caractères d'une combobox dans la colonne C de la feuille Liste; je
tente:

For k = 1 To Sheets("Liste").[A65536].End(xlUp).Row
If Sheets("Liste").Cells(k, 3) = Right(ComboBox1.Value, 5) Then
UserForm1.ListBox1.AddItem Sheets("Liste").Cells(k, 1)
End If
Next

mais la ListBox n'affiche pas les données

Merci de votre aide.




Publicité
Poster une réponse
Anonyme