Liste combo box

hamardfred Messages postés 27 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 20 janvier 2008 - 24 févr. 2006 à 11:30
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 31 mars 2008 à 17:14
Bonjour,

En vb, je voudrais mettre un élément dans la liste de la combo, si ce dernier n'exite pas dans la liste. Et je voudrais qu'a chaque ouverture de mon programme, les nouveaux éléments mis dans les listes soient toujours présents.

Merci d'avance.

FRED

5 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 févr. 2006 à 12:12
Salut.
Pour verifier si un element est dans la list tu peux essayer ceci

Private Function IsInListe(Elem As String) As Boolean
Dim i As Integer
IsInListe = False
For i = 0 To cb.ListCount
If cb.List(i) = Elem Then
IsInListe = True
Exit For
End If
Next
End Function

Et dans le code tu fais: If Not IsInliste("TOTO") then Call cb.AddItem("TOTO")

Ensuite si tu veux memoriser les elements ajouter tu peux les sauvegarde dans un fichier txt du style:

Dim i As Integer


Open "C:\ListeItem.txt" For Output As #1
For i = 0 To cb.ListCount
Print #1, cb.List(i)
Next
Close #1

Ensuite pour les recuperer tu fais:

Private Sub Form_Load()
Dim It As String
Open "C:\ListeItem.txt" For Input As #1
While Not EOF(1)
Input #1, It
Call cb.AddItem(It)
Wend


Close #1



End Sub

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 févr. 2006 à 14:54
ta fonction peut s'ecrire :

Private Const CB_FINDSTRINGEXACT As Long = &H158
Private
Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA"
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef
lParam As Any) As Long

Private Function IsInListe(Elem As String) As Boolean
IsInListe = (SendMessage(cb.hwnd, CB_FINDSTRINGEXACT, -1, ByVal Text1.Text) <> -1)
End Function

attention a ta boucle d'écriture.....
For i = 0 To cb.ListCount - 1
Print #1, cb.List(i)
Next i

Renfield
Admin CodeS-SourceS - MVP Visual Basic
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 févr. 2006 à 15:36
> Renfield: Merci pour l'info. (et pour la correction)

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
cs_lembi Messages postés 3 Date d'inscription dimanche 24 septembre 2006 Statut Membre Dernière intervention 31 mars 2008
31 mars 2008 à 16:42
voici mon code qui permet d'alimenter le combo1 par des donnees de champ nom du table id
et je veux qui le nom ne repete pas(combo sans doublans)
mais dans le form load il ya un erreur le compilateur il m'affiche
nombre d'arguments ou d'affectation de propriete incorrecte
svp aidez moi et 1000 merci 

Private Sub Form_Load()
Dim strTemp As String
Adodc1.RecordSource = " select  * from id"
Adodc1.CommandType = adCmdText

Adodc1.Refresh
Combo1.Clear
While Not Adodc1.Recordset.EOF
Combo1.AddItem Adodc1.Recordset.Fields(1) & ""
  If Not IsInListe(Combo1, strTemp) Then
            Combo1.AddItem strTemp
  End If
   Adodc1.Recordset.MoveNext
Wend

Adodc1.Recordset.Close
End Sub

Private Function IsInListe(strTemp As String) As Boolean

Dim i As Integer
IsInListe = False
For i = 0 To Combo1.ListCount
    If Combo1.List(i) = strTemp Then
        IsInListe = True
        Exit For
    End If
Next
End Function
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 mars 2008 à 17:14
tu n'a pas donné de valeur à strTemp lorsque tu fais :
Combo1.AddItem strTemp

pour tes doublons, demande a la requete de faire le tri :

Avec un : " select DISTINCT * from id"

Combo1.Clear
Do Until oRs.EOF
Combo1.AddItem oRs.Fields(1)
oRs.MoveNext
Loop
oRs.Close
0
Rejoignez-nous