Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Test valeur de combobox

4 réponses
Avatar
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.

4 réponses

Avatar
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.
Avatar
Tendasque
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" a écrit dans le message de news:

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.




Avatar
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" <unss34(a_enlever)@free.fr> a écrit dans le message de
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.

Avatar
Tendasque
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é" a écrit dans le message de news:

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" <unss34(a_enlever)@free.fr> a écrit dans le message de
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.