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

Aide sur listbox avec combobox

  • Initiateur de la discussion Initiateur de la discussion doclefou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

doclefou

Guest
Bonjour à toutes & tous,Je souhaiterai avoir une liste dans USF remplie en fonction d'un critère choisi par une combox.Pour ce faire, j'ai créé un fichier avec une feuille "base" & une feuille "matchs".Dans ma feuille "base", j'ai une liste nommée "adversaires"Dans ma feuille "matchs", j'ai une série de matchs (col A : noms adversaires, col B scores adversaires, col C un tiret (-), col D mon score.Dans mon USF, j'ai implémenté une listbox à 4 colonnes avec le contenu des Col A à D de la feuille "matchs". J'ai mis une combox avec une rowsource="adversaires"Ce que je voudrai faire, c'est que si la combox est vide alors la listbox contient tous les matchs sinon la listbox contient les macths en fonction de la valeur de la comboboxMerci de votre aidePS : Cet exemple est tiré d'un fichier trop lourd pour le joindre
 

Pièces jointes

Re : Aide sur listbox avec combobox

Bonjour Laetitia90,

Merci pour cette réponse rapide et surtout correcte.

Puis-je me permettre de te demander quelques explications sur le code ? Comme cet exemple est tiré d'un fichier très volumineux, je voudrai comprendre ce que cela fait pour pouvoir adapter à mon fichier complet.

Dim t1(), t() : Que cela signifie t-il ?
Dim s : Pourquoi il n'y a pas de "type" de variable ?

s = Feuil1.Range("a2:a" & Feuil1.Cells(Rows.Count, 1).End(xlUp).Row): Choix.List = s : Qu'est-ce que cela fait exactement ?

Private Sub Choix_Change()
On Error Resume Next
Liste.Clear
t = Feuil4.Range("a2:d" & Feuil4.Cells(Rows.Count, 1).End(xlUp).Row).Value
X = 1
For i = 1 To UBound(t) : Qu'est-ce que UBound ? If t(i, 1) = Choix.Text Then
ReDim Preserve t1(1 To 4, 1 To X)
For k = 1 To 4
t1(k, X) = t(i, k)
Next k: X = X + 1: End If: Next i Pourquoi il y a des ":" ?
Liste.Column = t1
Erase t, t1
End Sub

Peux-tu m'explique chaque ligne ? Il y a des choses que je comprends mais il ya des notions qui m'échappent.

En tout cas cela fonctionne très bien.

Merci
 
Re : Aide sur listbox avec combobox

re ,



par defaut une variable non declarer excel considere comme du variant donc incidence sur la vitesse d'execution &
precision de calcul dans certains cas

Code:
Dim t1(), t()
que dit cette declaration de variable c'est du variant
dailleurs vu que je mets pas d'indice entre les parentheses on peut les supprimer
donc la variable s c'est du variant egalement

avantage des tableaux tant que pas erase le tableau reste charge en memoire
du coup je l'utilise dans ce code
Code:
Private Sub CommandButton1_Click()
 Liste.List = s
End Sub
j'ai pas utiliser dans Private Sub Choix_Change() mais on pouvait le faire

Code:
Private Sub Choix_Change()
  On Error Resume Next
  Liste.Clear
  t = s
  X = 1
  For i = 1 To UBound(t)
 ect..

les 2 : seulement pour ecrire sur la meme ligne beaucoup aime pas mais bon j'aime bien avoir une vision global
sans descendre le scrollbar sur de grandes macros

s = Feuil1.Range("a2:a" & Feuil1.Cells(Rows.Count, 1).End(xlUp).Row): Choix.List = s : Qu'est-ce que cela fait exactement ?

feuil1 je prends le code_name de la feuille comme comme cela si tu renomme la feuille pas d'incidence

je pars de a2 jusqu'a la derniere ligne de a non vide donc si tu supprime ou en rajoute pas de pb.. pris en compte
 
Re : Aide sur listbox avec combobox

Bonsoir Laetitia90,
Merci pour les commentaires.
Je vais appliquer cette méthode à mon fichier originel et si j'ai besoin, je te ferai signe
 
Re : Aide sur listbox avec combobox

Bonsoir doclefou
Bonsoir le fil
bonsoir le forum
afin de pouvoir supprimer le Bouton CommandButton1
après avoir ajouté en tête de la liste des Adversaires <<TOUS>>
on peut imaginer la procédure Choix_Change sous cette forme .
Code:
Private Sub Choix_Change()
Dim Str_Search As String
  On Error Resume Next
  Liste.Clear
  With Feuil4
       t = .Range("a2:d" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
  End With
  X = 1
  For i = 1 To UBound(t)
       Str_Search = IIf(Choix.Text = "<<TOUS>>", "*", Choix.Text)
            If t(i, 1) Like Str_Search Then
                 ReDim Preserve t1(1 To 4, 1 To X)
                       For k = 1 To 4
                           t1(k, X) = t(i, k)
                        Next k
                        X = X + 1
            End If
   Next i
  Liste.Column = t1
  Erase t, t1
End Sub
Bonne fin de Soirée
Amicalement
Jean Marie
 
Re : Aide sur listbox avec combobox

re ,tous 🙂🙂🙂

ChTi160 si je peus me permettre ... tu as remarque que je passe par un "tablo" que je charge a l'iniatilisation
& que je decharge pas dans ce cas précis avec erase comme expliqué plus " haut"

je vide seulement les variable t & t1 aprés chaque recherche pour pas trop charger la memoire
donc dans ce cas

pour supprimer commandbutton1 pas besoin de multiplier les conditions

Code:
Private Sub Choix_Change()
  On Error Resume Next
  If Choix = "TOUS" Then Liste.List = s: Exit Sub 'ligne rajoutée
  Liste.Clear
  t = s 'reference au tablo egalement
  x = 1
  For i = 1 To UBound(t)
  If t(i, 1) = Choix.Text Then
  ReDim Preserve t1(1 To 4, 1 To x)
  For k = 1 To 4
  t1(k, x) = t(i, k)
  Next k: x = x + 1: End If: Next i
  Liste.Column = t1
  Erase t, t1
End Sub



que remarque tu??? j'ai rajoute cette ligne au depart

Code:
 If Choix = "TOUS" Then Liste.List = s: Exit Sub

si TOUS je rappel le tablo s & je sors de la boucle plus simple & surtout plus rapide

Code:
With Feuil4

c'est pareil le tablo s fait deja réference a la feuil4

si on veut pousser le concept un peu plus long sans rajouter dans liste des Adversaires <<TOUS>>
tu as vu que j'utilse

Code:
Private Sub Choix_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
 Choix.DropDown
End Sub


on peu tres bien sans rien changer du code de depart seulement rajouter Liste.List = s

Code:
Private Sub Choix_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
 Choix.DropDown
 Liste.List = s
End Sub
mais bon pas agreable a l'oeil scintillements🙁 de la listbox
 
Re : Aide sur listbox avec combobox

Bonjour doclefou
Bonjour laetitia
Bonjour Le Forum
Effectivement !!!!!
j'ai juste modifié le "TOUS" en "<<TOUS>>" Lol
le Liste.clear est il bien nécessaire ???
Bonne journée
Amicalement
Jean Marie
 
Re : Aide sur listbox avec combobox

Bonjour à tous,

Après avoir intégré le code fourni par Laetitia90 concernant ma demande (qui répond à mes attentes), j'ai eu quelques souci.
J'ai adapté le code en mettant worksheets("base"). à la place de Feuil1. et worksheets("matchs"). à la place de Feuil4., puis le nom de ma combox au lieu de choix par liste_adversaire et le nom de la listbox par liste_rencontre.
Bien évidemment, j'ai fais un copié-collé des controls et du code pour les ajouter sur mon USF. Après avoir eu quelques désagréments liés à la recopie et à l'adaptation, j'ai eu un résultat en faisant F5.

Mais là il y a eu une faille spatio-exceliène que je n'ai pas compris de suite : lorsque je passais la souris sur ma combobox pour me donner la liste de toutes les équipes, j'en avais que 2 ou que 2 (code :s = Feuil1.Range("a2:a" & Feuil1.Cells(Rows.Count, 1).End(xlUp).Row): Choix.List = s qui chez moi est s = Worksheets("base").Range("c2:c" & Worksheets("base").Cells(Rows.Count, 1).End(xlUp).Row): liste_adversaire.List = s
J'ai essayé tout un tas de trucs (changer worksheets par Feul2, ajouter un nouveau control copié du fichier fourni apr Laetitia90).
Bref ce n'est qu'hier, alors que j'y étais depuis le 6 mai, que j'ai réussi en passant de
s = Feuil1.Range("a2:a" & Feuil1.Cells(Rows.Count, 1).End(xlUp).Row): Choix.List = s
à
s = Worksheets("base").Range("C2:C32"): liste_adversaire.List = s
Et là ça fonctionne correctement.
Je ne comprends pas pourquoi, est-ce la méthode pour créer les données ? est-ce le type ? Si quelqu'un veut s'amuser à regarder mon fichier complet, je suis donneur, par contre, il fait environ 3Mo.

En tous cas merci à tous.
 
Re : Aide sur listbox avec combobox

bonjour tous
normal pas marcher!!!
quand j'ecris

Code:
 s = Feuil1.Range("a2:a" & Feuil1.Cells(Rows.Count, 1).End(xlUp).Row): Choix.List = s

je fais reference a la colonne a donc 1 (Rows.Count, 1)

donc si tu veus faire reference la la colonne c (Rows.Count, 3)

Code:
s = Feuil1.Range("c2:c" & Feuil1.Cells(Rows.Count, 3).End(xlUp).Row): Choix.List = s

plein d'autres methode pour l'ecrire
 
Re : Aide sur listbox avec combobox

Bonjour à tous,

Merci Laetitia90. Ah d'accord je comprends mieux du coup.
Il est vrai que j'ai du mal à comprendre ces notions de row count...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
21
Affichages
2 K
Réponses
5
Affichages
544
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…