Listbox recherche

Résolu/Fermé
Niko ElMoche Messages postés 3 Date d'inscription mardi 15 novembre 2011 Statut Membre Dernière intervention 1 décembre 2011 - 30 nov. 2011 à 11:15
Niko ElMoche Messages postés 3 Date d'inscription mardi 15 novembre 2011 Statut Membre Dernière intervention 1 décembre 2011 - 1 déc. 2011 à 14:50
Bonjour,

Je debute dans VBA Excel 2003, et la je plante vraiment sur un probleme!

Voici mon probleme:

J'ai une base de donnee sur un stock acier (ou on peu retrouver dans la colonne A le numero de reference de l'acier, la colonne B la nuance de l'acier, ... et plein d'autre info jusqu'a la colonne J)

J'ai un UserForm pour effectuer une recherche par un numero de reference. Jusque la aucun soucis!

A partir de maintenant il m'a ete demande d'effectuer une recherche par nuance! Et la c'est plus dur hehe! Puisque je voudrai afficher dans un listbox dans l?userform toute les lignes ou apparaissent la recherche!

Alors si quelqu'un peu me donner un coup de main sur le code ca pourrai etre super cool!

Bon voila j'espere que j'ai ete assez clair!

A
A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
1 déc. 2011 à 12:10
Bonjour,
1- il te faut une listbox multicolonnes (affichage des lignes - colonnes de A à J)
2- il te faut boucler sur toutes les lignes de ta feuille et, si colonne B est égal au contenu d'une combobox (par exemple combobox1 contiendrait toutes les nuances) alors on ajoute la ligne à la listbox.
Un exemple d'une listbox multicolonnes (extrait de ce tutoriel) :
Code pour définir ta listbox, au chargement de l'userform :
Private Sub UserForm_Initialize()
    'Définit le nombre de colonnes dans la ListBox
    ListBox1.ColumnCount = 10
    
    '---
    'Définit la largeur des colonnes d'une ListBox:
    'Par défaut, la largeur des colonnes est de 72 points
    '(72 points = 1 pouce)
    ListBox1.ColumnWidths = "50;80;10;60;50;70;50;60;50;70"     
        '---
        'Il est aussi possible de définir la dimension des colonnes en centimètres
        'ListBox1.ColumnWidths = "2 cm; 1,5 cm ......" 
        '---
    '---
End Sub

Code lorsque tu choisis une nuance dans ta combobox1 :
Private Sub ComboBox1_Change()
    Dim Col As Byte
    Dim Lign As Long, DrLig As Long
With Sheets("Feuil1") '===> A ADAPTER le nom de la feuille
    DrLig = .Range("A" & Rows.Count).End(xlUp).Row
    For Lign = 1 To DrLig        
        'Ajoute une ligne et insère une donnée dans la colonne de gauche
        ListBox1.AddItem .Cells(Lign, 1)        
        'Ajoute des données dans les colonnes de droite
        For Col = 1 To 10
            ListBox1.List(ListBox1.ListCount - 1, Col) = .Cells(Lign, Col)
        Next Col
    Next Lign
End With
End Sub

Ces deux codes sont donnés à titre d'exemple. Ils n'ont pas été testé, donc il est probable qu'ils fonctionnent mal!!!
0
bg62 Messages postés 23664 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 17 décembre 2024 2 392
1 déc. 2011 à 12:12
faut pas l'écouter ... lui ... il poste toujours à l'heure de l'apéro ...
salut 'pijaku' :)
0
Niko ElMoche Messages postés 3 Date d'inscription mardi 15 novembre 2011 Statut Membre Dernière intervention 1 décembre 2011
1 déc. 2011 à 13:04
Salut!
Déjà un grand merci pour la réponse!
Par contre je suis désolé mais j'ai encore un petit problème avec (ouai, j'avais prévenu je suis débutant héhé!).
Du coup j'ai inséré tes code (en modifiant les info nécessaire pour mon fichier), et la j'ai un message d'erreur.
"Erreur d'Exécution '380': Impossible de définir la propriété List. Valeur de propriété non valide"! Du coup je me retrouve bloquer et je ne vois pas du tout quoi faire!

Je te passe le code que j'ai entrée (avec le code pour insérer les valeurs dans le ComboBox):

---

Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 10
ListBox1.ColumnWidths = "50;80;10;60;50;70;50;60;50;70"
End Sub

Private Sub ComboBox1_Change()
Dim Col As Byte
Dim Lign As Long, DrLig As Long
With Sheets("TAF")
DrLig = .Range("A" & Rows.Count).End(xlUp).Row
For Lign = 1 To DrLig
ListBox1.AddItem .Cells(Lign, 1)
For Col = 1 To 10
ListBox1.List(ListBox1.ListCount - 1, Col) = .Cells(Lign, Col) ' C'est ici visiblement qu'il y a un soucis!
Next Col
Next Lign
End With
End Sub


Private Sub ComboBox1_DropButtonClick()
Call NuanceList
End Sub

Function NuanceList()
Dim etat As Integer
ComboBox1.RowSource = "Accueil!S2:S10"
End Function

---

Voila, merci d'avance pour le coup de main!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
1 déc. 2011 à 14:19
à bg62 :
Salut Bernard,
C'est toujours l'heure de l'apéro

à Niko ElMoche : je reviens dans 5 minutes...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
Modifié par pijaku le 1/12/2011 à 14:37
Simple question de logique et d'adaptation......
Private Sub UserForm_Initialize() 
Dim j As Integer 

'Remplir un Combobox sans doublons 
'http://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-F 
    'Récupère les données de la colonne S feuille Accueil... 
With Sheets("Accueil") '==> A ADAPTER pour récupérer les bonnes données 
    For j = 2 To .Range("B" & Rows.Count).End(xlUp).Row 
        ComboBox1 = .Range("S" & j) 
        '...et filtre les doublons 
        If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Range("S" & j) 
    Next j 
End With 
ListBox1.ColumnCount = 10 
ListBox1.ColumnWidths = "50;80;50;60;50;70;50;60;50;70" 
End Sub 

Private Sub ComboBox1_Change() 
Dim Col As Byte 
Dim Lign As Long, DrLig As Long 
If ComboBox1 = "" Then Exit Sub 
ListBox1.Clear 
With Sheets("TAF") 
    DrLig = .Range("A" & Rows.Count).End(xlUp).Row 
    For Lign = 1 To DrLig 
        If .Cells(Lign, 2) = ComboBox1 Then 
            ListBox1.AddItem .Cells(Lign, 1) 
            For Col = 1 To 9 
                ListBox1.List(ListBox1.ListCount - 1, Col) = .Cells(Lign, Col + 1) 
            Next Col 
        End If 
    Next Lign 
End With 
End Sub


Un classeur exemple????? Sisi c'est cadeau!
0
Niko ElMoche Messages postés 3 Date d'inscription mardi 15 novembre 2011 Statut Membre Dernière intervention 1 décembre 2011
1 déc. 2011 à 14:50
Year! Merci beaucoup ca marche super!
Desole pour le derangement hehe et encore merci!
0