remplir listbox 2 cols via Access/ADO

  • Initiateur de la discussion Initiateur de la discussion daniel
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

daniel

Guest
Bonsoir le forum,

Je découvre peu à peu les connexions ADO et j'ai un peu de mal avec le problème suivantes : je voudrais extraire d'une table access les valeurs de deux champs d'une table pour en remplir les deux colonnes d'une listbox sur un userform. J'ai réussi à remplir une colonne mais pas la deuxième...Pouve-vous m'aider ?

Ci dessous le code que j'ai bidouillé pour la récupération d'un seul champ, passé en critère.


Code:
Sub AfficherFenetreConsultation(table, field)
Dim Enregistrements As ADODB.Recordset
Dim ConnectionADO As String
Dim InstructionSQL As String
Dim critere As String

With fmConsultation
.ListBox1.Clear
critere = ''


' Crée la chaine de connexion
ConnectionADO = 'Provider=Microsoft.Jet.OLEDB.4.0;' & 'Data Source= ' & ActiveWorkbook.Path & '\\' & 'Docubase.mdb'
 
' Crée l'instruction SQL


        InstructionSQL = 'SELECT Contacts.* FROM Contacts ' & 'WHERE (((Contacts.Trigramme) Like '%' & critere & '%'))'

 ' Crée l'objet Recordset et exécute la requête
     

     Set Enregistrements = New ADODB.Recordset
     Enregistrements.Open InstructionSQL, ConnectionADO, adLockReadOnly, adLockReadOnly, adCmdText

     ' On s'assure qu'il y a des enregistrements à récupérer ...
     If Not Enregistrements.EOF Then
    Do While Not Enregistrements.EOF
   .ListBox1.AddItem Enregistrements.Fields(field)
    Enregistrements.MoveNext
    Loop
    End If

     ' Ferme le jeu d'enregistrements s'il est toujours ouvert ...

     If CBool(Enregistrements.State And adStateOpen) Then Enregistrements.Close

     Set Enregistrements = Nothing
.Caption = 'Table des ' & UCase(table)
.Show
End With
end sub

Bonne soirée à toutes et tous 🙂
 
Bonsoir Daniel et le forum

Ci dessous extrait d'une solution avec tableau intermédiaire élaborée avec Michel XLD pour une listbox à 3 colonnes:
...
With requete
.MoveFirst
Do While Not .EOF
Tableau(0, X) = .Fields(0)
Tableau(1, X) = .Fields(1)
Tableau(2, X) = .Fields(2)
X = X + 1
ReDim Preserve Tableau(2, X)
.MoveNext
Loop
End With

' -------------------- affectations des valeurs du tableau à la liste de données (Michel_xld)
Me.LbxDonnees.Column() = Tableau
...
A toi d'adapter à ton pb!

A propos d'ADO, tu trouveras dans le WIKI d'XLd des tas de démos dans la page 6 du Wiki de MichelXLD

A+
Michel_M
 
Bonsoir Michel,

Merci de ton aide, je pense que j'arriverais à m'en sortir avec un peu de ténacité 🙂 En attendant une réponse à mon problème, je suis allé voir les pages du Wiki dont tu parles et téléchargé quelques exemples...Je suis bluffé !! La route est longue qui me verra tteindre la 'maîtrise' d'ADO !!

Bonne soirée et encore merci pour ton aide

Daniel
 
Code:
Bonsoir,

With Enregistrements
    Do While Not .EOF
         Champ1 = .Fields!Nom_de_premier_champ
         Champ2 = .Fields!Nom_de_deuxieme_champ
          .ListBox1.AddItem Champ1 & ' ' & Champ2
          .MoveNext
    Loop
 End With[code]
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
1 K
Réponses
13
Affichages
1 K
C
  • Question Question
2
Réponses
15
Affichages
3 K
Compte Supprimé 979
C
Retour