Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/01/2011, 17h18   #1
Membre régulier
 
Inscription : janvier 2003
Messages : 254
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 254
Points : 76
Points : 76
Par défaut Ajouter mes elements à ma listbox

Bonjour,

J'ai fait une connexion en ADO et je récupère les données mais je
n'arrive pas à les intégrer dans ma ListBox.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub ADOOpenRecordset()
    Dim cnn As New ADODB.Connection, rst As New ADODB.Recordset, fld As ADODB.Field
    ' Ouverture de la connexion
 
    strSQL = "SELECT * FROM LeTest"
    Set cnn = CurrentProject.Connection
 
    ' Ouverture du Recordset en défilement en avant, et en lecture seule
    rst.Open "SELECT * FROM LeTest", cnn, adOpenForwardOnly, adLockReadOnly
    While (rst.EOF = False)
         Liste2.AddItem (rst.Fields.Item(0).Value)
         rst.MoveNext
    Wend
 
 
    ' Fermeture du Recordset
    rst.Close
End Sub
J'ai l'erreur Objet Requis sur la ligne AddItem, alos qu'en propriété le nom de ma listeBox est bien Liste2" Y aurait il un moyen de récupèrer la liste de mes objets crées pour pouvoir y accéder ?
Merci de votre retour.

cdlt
comme de bien entendu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2011, 21h13   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 458
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 458
Points : 7 534
Points : 7 534
La seule méthode que je connaisse pour allimenter une liste sans passer par une requête ou une table est la suivante :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
    dim s as string
 
    While (rst.EOF = False)
         if s<>"" then
           s=s & ";"
         end if
 
         s=s & rst.Fields.Item(0).Value
         rst.MoveNext
    Wend
 
    me.liste2.RowSource=s
C'est assez basic merci mais ça marche :-).

Ne pas oublier : VBA c'est un langage de programmation procédurale (de la même famille que COBOL ou C) AVEC des objets. Ce n'est pas un VRAI langage objet comme VB.Net ou Java.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/01/2011, 10h29   #3
Membre régulier
 
Inscription : janvier 2003
Messages : 254
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 254
Points : 76
Points : 76
Sauf que sur mon Access l'interpreteur ne comprend pas le Me.
Je n'ai pas le point d'entrée pour accéder à la listbox présente sur mon formulaire.
J'ai essayé avec les différents noms disponibles dans l'interface et je n'obtiens rien. Je n'ai pas de complétion du nom avec le "Me" non plus.
Lorsque je mets 'Me' il met utilisaton incorrecte du mot clef Me.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
Sub ADOOpenRecordset()
    Dim cnn As New ADODB.Connection, rst As New ADODB.Recordset, fld As ADODB.Field
    ' Ouverture de la connexion
    Dim s As String
    s = ""
    strSQL = "SELECT * FROM LeTest"
    Set cnn = CurrentProject.Connection
 
    ' Ouverture du Recordset en défilement en avant, et en lecture seule
    rst.Open "SELECT * FROM LeTest", cnn, adOpenForwardOnly, adLockReadOnly
    While (rst.EOF = False)
         s = s & rst.Fields.Item(0).Value
         rst.MoveNext
    Wend
 
    Me.liste2.RowSource = s
    rst.Close
End Sub
comme de bien entendu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 13h46   #4
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 458
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 458
Points : 7 534
Points : 7 534
Ok, désolé je pensais que le code était dans le formulaire qui contenait liste2. me. réfère à l'objet courrant.

Si le formulaire est ouvert tu devrais pour faire :

Code :
[forms]![NomTomFormulaire]![Liste2].RowSource=s
Je ne l'ai jamais fait mais cela devrait fonctionner.

Au passage je t'invite à donner un nom plus significatif, liste2 cela ne révèle pas grand chose un truc du genre ListeCommande ou ListeAchat ou LîstePersonne apporte plus d'information quand au contenu de ta liste.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/01/2011, 14h36   #5
Membre régulier
 
Inscription : janvier 2003
Messages : 254
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 254
Points : 76
Points : 76
Merci bien de l'info. Je suis en train de redécouvrir Access et je fais un peu des tests dans tous les sens.
Bonne journée.
comme de bien entendu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h58.


 
 
 
 
Partenaires

Hébergement Web