Alimenter une listbox en fonction d'un texte [Résolu]

Messages postés
23
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
26 mars 2013
- - Dernière réponse : sweaty41
Messages postés
23
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
26 mars 2013
- 24 mars 2013 à 18:19
Bonjour

Malgré plein de recherches, je n'arrive pas à comprendre comment faire .
Je cherche comment alimenter une listbox en fonction d'un texte saisi dans une textbox.
Pardonnez mon ignorance mais là je sèche complètement.

J'ai essayé en copiant ce qui est dans la textbox dans une cellule ( B1 ).
Mais lorsque je visualise ma listbox, si je n'ai qu'un item de rempli, je peux faire dérouler des cases vides.



Voici ce que j'ai mis dans mon code :
Private Sub CommandButton1_Click()
[B1] = TextBox1.Text
Sheets(1).Cells(1, 2).Copy
Sheets(1).Cells(65535, 1).End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
ListBox1.RowSource = "A2:A25"
End Sub

Bien à vous et bon dimanche, merci
Afficher la suite 

8 réponses

Meilleure réponse
3
Merci
Eh bien.. j'ai rien compris de ce que tu veux faire avec ta recherche dans les cellules, mais pour les doublons ça devrait le faire:
Dim Derlig As Byte, Lig As Byte
Dim i As Long
Dim Existe As Boolean

With Sheets(1)
     Derlig = .Columns("D").Find("*", , , , , xlPrevious).Row
     If Derlig > 170 Then
          For Lig = 171 To Derlig
              Existe = False
              For i = 0 To listbox1an.ListCount - 1
                  If listbox1an.List(i) .Cells(Lig, "D") Then Existe True
              Next
              If Existe = False Then listbox1an.AddItem .Cells(Lig, "D")
          Next
     End If
End With

Dim Ligvide As Byte
Dim i As Long
Dim Existe As Boolean

Existe = False
For i = 0 To listbox1an.ListCount - 1
    If listbox1an.List(i) Labelannee.Caption Then Existe True
Next
If Existe = False Then listbox1an.AddItem Labelannee.Caption

With Sheets(1)
     Ligvide = .Columns("D").Find("", .Range("D170"), xlValues).Row
     .Cells(Ligvide, "D") = Labelannee
End With



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 197 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Utilisateur anonyme
0
Merci
Bonjour,
eh bien, je ne sais pas si j'ai tout compris mais ça ressemble à ça:
Private Sub CommandButton1_Click()
ListBox1.AddItem TextBox1.Text
End Sub
'Ou encore en appuyant sur entrée à la saisie dans le textbox:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then ListBox1.AddItem TextBox1.Text
End Sub



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Messages postés
23
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
26 mars 2013
0
Merci
Bonjour

J'ai modifié mon code par ceci :
Private Sub UserForm_Initialize()
Dim Derlig As Byte, Lig As Byte
With Sheets(1)
Derlig = .Columns("A").Find("*", , , , , xlPrevious).Row
If Derlig > 2 Then
For Lig = 3 To Derlig
ListBox1.AddItem .Cells(Lig, "A")
Next
End If
End With
End Sub

Private Sub CommandButton1_Click()
Dim Derlig As Byte, Lig As Byte
With Sheets(1)
Derlig = .Columns("A").Find("*", , , , , xlPrevious).Row
If Derlig > 2 Then
For Lig = 3 To Derlig
ListBox1.AddItem .Cells(Lig, "A")
Next
End If
End With
End Sub

Cela marche mais comment maintenant empêcher les doublons ?

Cordialement
Commenter la réponse de sweaty41
0
Merci
Re:
On reprend depuis le début;
tu disais:
Je cherche comment alimenter une listbox en fonction d'un texte saisi dans une textbox

Il est où ton textbox dans ce code?

Autre chose, quand tu postes un code sur le forum utilise stp les balises de code VB (troisième icone en partant de droite) sinon c'est illisible.

Pour les doublons tu dois vérifier ce qui existe dans la listbox, quelque chose dans ce genre:
Private Sub CommandButton1_Click()
Dim TexteAInserer As String
Dim i As Long
TexteAInserer = "toto" 'Exemple
For i = 0 To ListBox1.ListCount - 1
    If ListBox1.List(i) = TexteAInserer Then Exit Sub
Next
ListBox1.AddItem TexteAInserer
End Sub


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Messages postés
23
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
26 mars 2013
0
Merci
Oups, j'ai mélanger mon code et celui d'un essai sur une autre feuille.
Je m'en excuse, j'ai remplacer mon textbox par un label ( chose qui revient au même je pense ).
Ce label récupère des infos d'un textbox plus tôt dans mon programme.

J'ai donc mis ce qui suit :
A l'activation de mon userform :

Dim Derlig As Byte, Lig As Byte
With Sheets(1)
     Derlig = .Columns("D").Find("*", , , , , xlPrevious).Row
     If Derlig > 170 Then
          For Lig = 171 To Derlig
               ListBox1an.AddItem .Cells(Lig, "D")
          Next
     End If
End With


Et ceci sur mon bouton :
Dim Ligvide As Byte
ListBox1an.AddItem Labelannee
With Sheets(1)
     Ligvide = .Columns("D").Find("", .Range("D170"), xlValues).Row
     .Cells(Ligvide, "D") = Labelannee
End With


Voilà où j'en suis.
Commenter la réponse de sweaty41
Messages postés
23
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
26 mars 2013
0
Merci
Je vais tester votre code et je reviendrais vous répondre.
Merci encore de votre temps passer à m'aider.
Commenter la réponse de sweaty41
Messages postés
23
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
26 mars 2013
0
Merci
Cela fonctionne à merveille !!!!!!!!
Je compte me servir de cette listbox pour en fonction de l'item choisi, pouvoir ouvrir un fichier mhtml qui est généré auparavant dans mon code, en quelque sorte, un archivage.
Commenter la réponse de sweaty41
Messages postés
23
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
26 mars 2013
0
Merci
J'ai réussi avec votre aide à faire ce que je souhaitais, milles merci à vous.
Commenter la réponse de sweaty41