Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Recherche dans listbox et Combobox

Scorpio

XLDnaute Impliqué
Salut à tous,
J'ai dans ce classeur, 2 formulaires avec bien sur, les codes VBA, dont je ne suis pas l'auteur.

Mais, j'aimerais bien l'utiliser, et en fait, le USF_3 fonctionne correctement, mais j'aimerais bien aussi savoir pourquoi le USF_1 ne fonctionne pas correctement.
La ligne tout en bas le code ci-dessous, s'affiche en jaune (ici en rouge) avec une erreur d'exécution

Merci d'avance à celle ou celui qui pourrais bien me dépanner, ca serais super.
------------------------------------------------------------------------------------------------------------------------------

Private Sub ComboBox1_Change() 'Userform1
Dim O As Worksheet 'd?clare la variable OL (Onglet)
Dim TV As Variant 'd?clare la variable TV (Tableau des Valeurs)
Dim I As Integer 'd?clare la variable I (Incr?ment)
Dim K As Integer 'd?clare la variable K (incr?ment)
Dim TL() As Variant 'd?clare la variable TL (Tableau des Lignes)
Me.ListBox1.Clear 'vide la LbsTableau
Set O = Worksheets("Feuil1") 'd?finit l'onglet O
TV = O.Range("A1").CurrentRegion 'd?finit le tableau des valeurs TV
K = 1 'initialise la variable K
For I = 2 To UBound(TV) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If TV(I, 1) = Me.ComboBox1.Value Then 'condition : si la donn?e ligne I colonne 1 de TV est ?gale ? la valeur de la ComboBox1
ReDim Preserve TL(1 To 3, 1 To K) 'redimensionne le tableau des lignes TL (5 lignes, K colonnes)
TL(1, K) = TV(I, 1) 'r?cup?re dans la ligne 1 de TL la donn?e en colonne 1 de TV
TL(2, K) = TV(I, 3) 'r?cup?re dans la ligne 2 de TL la donn?e en colonne 2 de TV
TL(3, K) = TV(I, 6) 'r?cup?re dans la ligne 3 de TL la donn?e en colonne 4 de TV
'TL(4, K) = TV(I, 8) 'r?cup?re dans la ligne 4 de TL la donn?e en colonne 8 de TV
'TL(5, K) = TV(I, 13) 'r?cup?re dans la ligne 5 de TL la donn?e en colonne 13 de TV
'TL(6, K) = TV(I, 16) 'r?cup?re dans la ligne 6 de TL la donn?e en colonne 16 de TV
K = K + 1 'incr?ment K (ajoute une colonne au tableau des lignes TL)
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
Me.ListBox1.Column = TL 'alimente la ListBox1 avec le tableau TL
End Sub
 

Pièces jointes

  • ESSAI.xlsm
    54.3 KB · Affichages: 48

roro69

XLDnaute Impliqué
Code:
Private Sub ComboBox1_Change() 'Userform1
Dim O As Worksheet 'déclare la variable OL (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)

Me.ListBox1.Clear 'vide la LbsTableau
Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
K = 1 'initialise la variable K
For I = 2 To UBound(TV) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If TV(I, 1) = Me.ComboBox1.Value Then 'condition : si la donnée ligne I colonne 1 de TV est égale à la valeur de la ComboBox1
ReDim Preserve TL(1 To 3, 1 To K) 'redimensionne le tableau des lignes TL (5 lignes, K colonnes)
TL(1, K) = TV(I, 1) 'récupère dans la ligne 1 de TL la donnée en colonne 1 de TV
TL(2, K) = TV(I, 3) 'récupère dans la ligne 2 de TL la donnée en colonne 2 de TV
TL(3, K) = TV(I, 6) 'récupère dans la ligne 3 de TL la donnée en colonne 4 de TV
'TL(4, K) = TV(I, 8) 'récupère dans la ligne 4 de TL la donnée en colonne 8 de TV
'TL(5, K) = TV(I, 13) 'récupère dans la ligne 5 de TL la donnée en colonne 13 de TV
'TL(6, K) = TV(I, 16) 'récupère dans la ligne 6 de TL la donnée en colonne 16 de TV

K = K + 1 'incrément K (ajoute une colonne au tableau des lignes TL)
Else ' Ligne rajouté
Exit Sub 'Ligne Rajouté
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
Me.ListBox1.Column = TL  'alimente la ListBox1 avec le tableau TL
End Sub
A++
 

Scorpio

XLDnaute Impliqué
Bonjour Dranreb,
Merci pour votre aide,
S'il vous plaît, a quel endroit je dois ajouter cette ligne
Et, si je peut me permettre de vous demander, j'aimerais aussi faire le transfert de la sélection sur une feuille, pourriez-vous me donner un coup de de pouce.
Merci A++++
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Ce n'est pas une ligne à ajouter c'est la dernière ligne existante complétée d'un test pour ne plus tenter d'alimenter la ListBox par un TL qui n'a pas été initialisé, vu que rien n'a été trouvé.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…