Alimenter une listbox en fonction d'un texte

Résolu
sweaty41 Messages postés 23 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 26 mars 2013 - 24 mars 2013 à 12:36
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

8 réponses

Utilisateur anonyme
24 mars 2013 à 16:12
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
3
Utilisateur anonyme
24 mars 2013 à 15:00
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
0
sweaty41 Messages postés 23 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 26 mars 2013
24 mars 2013 à 15:08
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
0
Utilisateur anonyme
24 mars 2013 à 15:26
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sweaty41 Messages postés 23 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 26 mars 2013
24 mars 2013 à 15:50
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.
0
sweaty41 Messages postés 23 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 26 mars 2013
24 mars 2013 à 16:25
Je vais tester votre code et je reviendrais vous répondre.
Merci encore de votre temps passer à m'aider.
0
sweaty41 Messages postés 23 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 26 mars 2013
24 mars 2013 à 16:59
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.
0
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
J'ai réussi avec votre aide à faire ce que je souhaitais, milles merci à vous.
0
Rejoignez-nous