remplir une listbox

fr832

XLDnaute Occasionnel
Bonsoir, j'utilise ce code car je souhaite remplir une listbox, mais ça ne fonctionne pas .
Code:
Private Sub Button_visualiser_Click()
 Dim Lig As Long
  ' La ligne = 1 (ligne de titre) + ListIndex + 1 (car listindex commence à 0)
  Lig = 1 + Me.Combo_engins.ListIndex + 2
  With Sheets("Situation")
    Me.ListBox1 = .Range("B" & Lig)
    Me.ListBox2 = .Range("C" & Lig)
    Me.TextBox4.Value = Format(.Range("E1").Value, "dddd dd mmmm yyyy")
   
  End With
End Sub

Quelle code faut il utiliser pour remplir les listbox ?

Par avance merci
 

stefan373

XLDnaute Occasionnel
Bonsoir à tous.
A adapter à votre besoin.
Colonne A et B.

Code:
Private Sub UserForm_Initialize()
  col = 0
  With Sheets("Feuil1")
   For i = 2 To .[A65000].End(xlUp).Row
    If .Cells(i, 2) > 0 Then
      Me.ListBox1.AddItem
      Me.ListBox1.List(col, 0) = .Cells(i, 1)
      Me.ListBox1.List(col, 1) = .Cells(i, 2)
      col = col + 1
    End If
   Next i
 End With
End Sub

A +
 

fr832

XLDnaute Occasionnel
Re : Re: remplir une listbox

bonsoir stéfan 373,
merci pour votre aide mais je n'arrive pas à l'adapter à mon userform.
Je met en pièce jointe un exemple de ce que je cherche à réaliser, ça sera plus parlant.

Par avance merci à tous
 

Pièces jointes

  • essai listbox.zip
    19.2 KB · Affichages: 61
  • essai listbox.zip
    19.2 KB · Affichages: 58
  • essai listbox.zip
    19.2 KB · Affichages: 65

fr832

XLDnaute Occasionnel
Re : remplir une listbox

Bonjour, stephan373 et forum super pour votre travail j'ai réussi à l'adapter à mon programme.
J'ai pris le code de forum car j'utilise une combobox avec option button pour filtrer l'alimentation de cette dernière.

Il y a juste une chose que je n'arrive pas à modifier,
dans la listbox s'affiche en première le nom de l'engin et mois je voudrais faire afficher le matériel en panne (colonne B)

Comment dois je modifier afin d'afficher la colonne B?

Par avnce un grand merci mes amitiés
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : remplir une listbox

Bonjour le fil, bonjour le forum,

En pièce jointe le fichier de Forum modifié :
 

Pièces jointes

  • fr_v01.xls
    40.5 KB · Affichages: 79
  • fr_v01.xls
    40.5 KB · Affichages: 78
  • fr_v01.xls
    40.5 KB · Affichages: 76

fr832

XLDnaute Occasionnel
Re : remplir une listbox

Bonjour, robert et merci pour ton aide, avec les explications c'est mieux pour comprender effectivement, trop cool.
Je ne veux pas t'offenser mais j'ai réussi à adapter à mon programme celui de forum le seul hic c'est que je n'arrive pas à afficher matériel en panne dans la première liste de la listbox.
De plus la fonction des optionbutton est tout à fais ce que je cherchais à faire c'est à dire filtrer les situations de l'engin sélectionné via la combobox.

Un grand merci pour ton aide avec ton exemple je vais essauyer d'afficher la colonne B en premier dans la listbox.

Mes amitiés et bonne journée.
 

Fo_rum

XLDnaute Accro
Re : remplir une listbox

Re

Merci Robert d'avoir pris le relais.
Une autre façon de faire avec une seule liste de choix (plus il y a de boutons, moins j'aime).
Pour les commentaires, je n'en mets pas beaucoup. Si un demandeur en demande pour sa formation alors je les donne hors code (lisibilité oblige).
 

Pièces jointes

  • ListBoxSiCombo.xls
    37.5 KB · Affichages: 71

Robert

XLDnaute Barbatruc
Repose en paix
Re : remplir une listbox

Bonjour le fil, bonjour le forum,

J'ai regardé ton code Fo_rum que je n'ai pas compris au début. J'ai ensuite compris que c'était pour alimenter la ComboBox1 sans doublon.
Je me suis alors rendu compte que je n'avais pas tenu compte du fait qu'il y avait des doublons dans la colonne A. Voici donc une nouvelle version avec la méthode de Jacques BOISGONTIER pour alimenter, à l'initialisation de l'UserForm, la ComboBox1 sans doublons et classée par ordre alphabétique (même si visiblement Fr s'en fout)...
 

Pièces jointes

  • fr_v02.xls
    60.5 KB · Affichages: 70

fr832

XLDnaute Occasionnel
Re : remplir une listbox

bonjour forum et robert un grand merci pour votre aide je suis en train d'essayer de voir comment l'adapter à mon programme. Sachez que je suis trés touché de l'aide que vous m'apportez.

Robert, Loin de moi l'idée de me foutre de l'alimentation de la combobox, mais comme c'est un exemple que je vous ai envoyé ce n'est pas mon programme final.

Pour alimenter ma combobox (combo_engins) j'utilise des filtre sen amont voici mon code.
Code:
Private Sub OptionButton_RPC_Click()
  AlimCombo 1
End Sub
Private Sub OptionButton_Caudataire_Click()
  AlimCombo 2
End Sub
Private Sub OptionButton_Levage_Click()
  AlimCombo 3
End Sub
Private Sub OptionButtonPSS10T_Click()
  AlimCombo 4
End Sub

Private Sub OptionButton_PSS4T_Click()
  AlimCombo 5
End Sub
Sub AlimCombo(Cl As Integer)
Dim I As Long

  Me.Combo_engins.Clear
  With Sheets("données")
   For I = 2 To .Cells(65536, Cl).End(xlUp).Row
      Me.Combo_engins = .Cells(I, Cl)
      If Me.Combo_engins.ListIndex = -1 Then
        Me.Combo_engins.AddItem .Cells(I, Cl)
      End If
    Next I
  End With
  Me.Combo_engins.ListIndex = -1
End Sub

Vos codes d'hier fonctionnait à merveille ceux d'aujourd'hui également je vais m'y pencher dessus .
Mon seul problème était que dans la première colonne de la listbox s'affichait le nom de l'engins, alors que moi je souhaitais afficher la colonne B du tableau (matériel en panne).
Je vais essayé avec vos nouveau code de l'adapter.

Encore un grand merci amitiés.

Un autre dernière petite question l'appel de l'usf se fait d'une autre feuille (accueil) et de ce fait la listbox ne se remplie par faut il rajouter l'adresse de la feuille sheets("Situation").Select ?

Merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : remplir une listbox

Bonjour le fil, bonjour le forum,

Ooopops désolé Fr mais comme tu n'apparaissais plus j'ai pensé (à tort) qu'ayant obtenu une solution tu te désintéressais du problème...
Pour ta question finale, tu pourrais utiliser une variable privée accessible à tout l'Userform (placée en haut) et ensuite tu la définit à l'initialisation de l'Userform :
Code:
Private dl As Integer 'déclare la varaible dl (Dernière Ligne)
Private cel As Range 'déclare la varaible cel (CELlule)
Private o As String 'déclare la varaible o (Option)
Private f As Worksheet 'déclare la variable f (Feuille) *****ici*****
 
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
'code adapté du site de Jacques BOISGONTIER
Set f = Sheets("Situation") 'définit l'onglet f *****ici*****
dl = f.Cells(Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne du tableau
Set MonDico = CreateObject("Scripting.Dictionary") 'définit le dictionnaire
For Each cel In f.Range("A4:A" & dl) 'boucle sur toutes les cellules éditées cel de la colonne A
    MonDico.Item(cel.Value) = cel.Value 'remplissage sans doublons du dictionnaire
Next cel 'prochaine cellule de la boucle
temp = MonDico.items 'définit le tableau temporaire pour le tri
Call tri(temp, LBound(temp), UBound(temp)) 'lance la macro de tri alphabétique
Me.ComboBox1.List = temp 'alimente la ComboBox1 sans doublons, classé par ordre alphabétique
End Sub
Ensuite tu rajoutes f. devant toutes les Range ou Cells qui font référence à l'onglet Situation. Un exemple dans la version 3 où le bouton est dans un autre onglet.
 

Pièces jointes

  • fr_v03.xls
    66 KB · Affichages: 81

Robert

XLDnaute Barbatruc
Repose en paix
Re : remplir une listbox

Bonjour le fil, bojour le forum,

Clermont l'Hérault... J'ai donné, il y a plus d'une dizaine d'années, des cours d'informatique (bureautique, Word, Excel) à Saint André-de-Sangonis tout près... après avoir fait un stage de PAO à au Greta de Clermont l'Hérault... J'en garde un excellent souvenir.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 461
dernier inscrit
dams94