[Access VBA] problème pour récuperer un champ [Résolu/Fermé]

Signaler
-
 Polux31 -
Résuperer un champ dans une liste.

Bonjour a tous.

J'ai un petit problème et je suis sur que vous pourrez m'aider.

J'ai une BD Access avec pour tous les programmes de mon entreprises, tous les ordinateur ou ceux-ci (les prog) sont installé.

J'aimerai que quand je double clique sur la liste des programmes il m'affiche dans une 2 eme liste tt les pc ou ce programme serai installé..

et je sais pas comment résuperer le champ du programme pour faire ma requete....



Help!!

26 réponses

Messages postés
964
Date d'inscription
jeudi 21 décembre 2006
Statut
Membre
Dernière intervention
30 juillet 2009
33
Salut,
Pourrais tu etre plus précis ? C'est la requete à réaliser que tu veux ?
Messages postés
5
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
20 mars 2007

Hello

En VBA, il te suffit de faire :

nomListe.Value

Et là, il te renvoie la valeur sur laquelle tu as double-cliqué par exemple.

;)
Merci pour vos réponse!!

EN fait pas forcement avec une requete mais j'aimerai recuperer cette valeur d'une maniere ou d une autre..



pour le : Nom_de_ma_liste.value j ai un probleme d execution 94 (utilisation incorrect de null)


:(
Messages postés
23761
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 898
Salut,

une zone de saisie peut rester vide, dans ce cas elle possède la valeur "null", mais on ne teste pas liste.value = "Null", on teste avec if isnull(liste.value)...

Pour le reste, il suffit donc d'affecter le contenu de la liste à une variable (ou de l'utiliser en tant que tel) :

toto = liste.value

if liste.value = "tata" then

dans ton cas, tu peux générer une requête qui tu mettras en source de la zone dans laquelle tu veux afficher tes PC :
Dim StrSql As String
StrSql = "SELECT num_pc WHERE "
StrSql = " progra = '" & liste.value & "';"
liste2.rowsource = StrSql
Mais c'est un exemple, car dans ton cas, je ne sais pas comment sont tes données et donc comment rechercher les PCs qui ont le programme que tu as sélectionné...
>
Messages postés
23761
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020

Merci pour ta réponse compléte.


Mon problème est maheureusement plus complexe il m semble...


Je m explique:


J ai une liste qui existe deja avec 3 colones (nom du programme, nom des machines, date du programme)(le tout est dans un formulaire)


moi se que je veut c est quand je double clique sur une ligne de ma liste (pour selectionner un nom de programme), access me retourne juste le nom du programme (et nn tt le ligne) pour que je puisse par la suite construire une requete pour afficher les machines ou le programme que j aurai selectionner est installer.



voila voila...


j espere que tu m as compris un peu mieu :)


parce que normalement ma liste ne devrai pas pouvoir etre NULL puisqu elle est completement rempli..



thanks pour tt
Messages postés
5
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
20 mars 2007
> CyPile
List4.Column(2, List4.ListIndex)

2-> ta colonne
List4.ListIndex -> l'index de la ligne sélectionnée
Messages postés
5
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
20 mars 2007

Programme le sur un "Double-Click" et teste le sur une liste non vierge à partir du formulaire.

Private Sub List0_DblClick(Cancel As Integer)

MsgBox List0.Value

End Sub

Pour éviter le message d'erreur, fais juste un test sur la valeur renvoyée :

If Not IsNull(List0.Value) Then

' Ton code

End If

;)
Merci mais c est le mm problème que j ai expliquer plus haut à Blux...


ma liste n est pas vide...


elle fais partie d un formulaire et se rempli par une requete..


:)
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
179
Bin, pour récupérer la valeur d'une liste, il suffit de déterminer quelle colonne est liée (ou de lier la "bonne colonne").

Dans la feuille des propriétés de la liste, sous l'onglet données, tu peux le paramétrer.
Blux a posté récemment la même manoeuvre en VBA mais je l'ai plus trouvée...
Merci bcp je vais esseyer de retrouver l article de Bux.. ;)


thanks :)
Messages postés
23761
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 898 > CyPile
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207
salut

les noms que tu a dans ta liste sont rempli avec une requete c'est ca
peut tu la mettre pour que je te donne le code
moi c'est ce que j'ai fais quand je clique sur un nom d'un utlilisateur dans la liste ca me marque le nom de PC sur lequel ce trouve cette utilisateur
Si j'ai ta requete je pense que je pourrais t'aider
Okay voila la requete:




SELECT DISTINCTROW NomDeProgramme.* FROM NomDeProgramme WHERE (([NomDeProgramme].[Champ3] Like "*"));



champ3 étant le champ3 étant le champ avec le nom des prog...

NomDeProgramme est une requete..


voila voila..
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207
Desolé mais je comprend pas trop ta requete
tu l'as fait avec l'assistant

est ce qu tu as une table PC qui contient lse champs "pc" "nom programme"
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207
je vais tenté quand meme


Dim Sql As String
Dim Qry As DAO.QueryDef
Dim rs As DAO.Recordset


Sql = "SELECT PC.nom_PC FROM PC"
Sql = Sql & " WHERE (((PC.nom_programme) = """ & Me.lstnom_prog & """)) "

DoCmd.DeleteObject acQuery, "nom_PC" 'supprime la requête
CurrentDb.CreateQueryDef "nom_PC", Sql 'crée une nouvelle requete

Set Qry = CurrentDb.QueryDefs("nom_PC")
Set rs = Qry.OpenRecordset

While Not rs.EOF

txtnom_PC = rs(0)
rs.MoveNext

Wend

Set Qry = Nothing
Set rs = Nothing


dans mon exemple je suppose que tu a une table qui s'appelle PC avec les champ "nom_PC" et "nom_programme"

""" & Me.lstnom_prog & """ c'est pour prendre la valeur de ta liste

par contre moi je l'affiche dans un texte je n'ai pas cherché pour la liste je pense que ca ce ressemble

il faut que tu creer une requete toute bidon vraiment nimp que tu appelle "nom_PC" seul le nom que tu donne a la requete est important
>
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016

j ai reussi merci bcp bcp bcp bcp..



franchement merci



:)
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207 >
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016

c'etait quoi le probleme pour info
>
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016

Me*%de en fait sa marche trop pas..

la requete est vide..



voila le code :


Sql = "SELECT NomDeProgramme.Name FROM NomDeProgramme"
    Sql = Sql & " WHERE (((NomDeProgramme.champ3) = """ & Me.lst_Resultat & """)) "

    DoCmd.DeleteObject acQuery, "nom_PC" 'supprime la requête
    CurrentDb.CreateQueryDef "nom_PC", Sql 'crée une nouvelle requete

    Set Qry = CurrentDb.QueryDefs("nom_PC")
    Set rs = Qry.OpenRecordset
    MsgBox (Sql)

    While Not rs.EOF

    
    Texte138.Value = rs(0)
    
    rs.MoveNext
    
    
    Wend
    
    Set Qry = Nothing
    Set rs = Nothing



NomDeProgramme est une requete,
champ3 est le champ ou se trouve le nom des programmes,


..
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207 >
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016

c'est pas pour critiquer mais c'est plus pratique avec des noms logique parceque champ3 dans deux mois si il faut que tu i retouche c'est mort

je ne comprend pas pourquoi tous ca ce trouve dans une requete

peut tu me dire comment tu a fais pour creer la requete que tu utilise dans le code
Sql = ".....
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207
ce msg n'est pas pour ici
je sais les champs sont merdique mais je peu pas changer c est une table exporter de fichier XLS..


Pour la requete c est le code que tu ma donné avant.. c est pas juste ?
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207
je ne sais pas mais tu me dit que
NomDeProgramme est une requete
c'est que tu l'as créé avant mais dit moi comment
Ha ui sorry..

c est une requete tt simple... vu qu aucune table physique existe (juste une liaison sur les fueille exel..) il me faut une requete comme une table...


je sais pas si tu me comprend
requete créé à laide de l assitant...
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207
si je te comprend et il te marque un message d'erreur ou tu as juste ta requete qui est vide
Messages postés
3
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
16 avril 2007
> CyPile
puis je te poser une question sur access
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207
bon la je vais me barré du boulot donc je ne pourrais pas repondre avant demain
mais si tu ne trouve pas
essaye au moment ou tu creé ta requete "NomDeProgramme" de transférer en meme temps dans une table que tu creer avant
je t'explique au cas ou tu ne sais pas

tu as select............... pour creer ta requete
avant tu met

CREATE TABLE table2
SELECT utilisateur, SUM(table1.traitement) INTO table2 FROM table1 ..................

into table2 sert a exporter les infos de la requete que tu creer vers la table2
>
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016

Ok moi aussi je me barre..


ouai je connait tt sa mais sa change quoi qu on aye une requete a la palce d une table ??
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207 >
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016

je sais pas mais ca peut merder moi ca marche ùais avec une table
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207
tu peut aussi essayer dans access au niveau requete tu creer une requete en mode creation tu clique sur le bouton droit dans la fenetre grise et tu fait mode sql et tu ecrit

SELECT NomDeProgramme.Name FROM NomDeProgramme
WHERE NomDeProgramme.champ3 = "le nom d'un programme que tu est sur qui est sur un pc":
Je ne sais pas si il te faut des "" ou j'en ai mis essaye

bonne soiré
Ciao..


J'ai creer une table nommer "Tbl_Prog" sur la base de ma requete..

    Sql = "SELECT Tbl_Prog.NomPc FROM Tbl_Prog"
    Sql = Sql & " WHERE (((Tbl_Prog.NomProg) = """ & Me.lst_Resultat & """)) "

    DoCmd.DeleteObject acQuery, "nom_PC" 'supprime la requête
    CurrentDb.CreateQueryDef "nom_PC", Sql 'crée une nouvelle requete

    Set Qry = CurrentDb.QueryDefs("nom_PC")
    Set rs = Qry.OpenRecordset

    While Not rs.EOF
   ' MsgBox (Sql)
   
    txtTest.Value = rs(0)
    rs.MoveNext

    Wend

    Set Qry = Nothing
    Set rs = Nothing



NomPc et NomProg étant des nom de champ de ma table
nom_pc étant une requete tt simple



Je sais vraiment pas comment car normalement il faudrai que ma MsgBox me mette la requete avec le nom du champ que j ai sélectionner nn ?
Messages postés
23761
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 898
En plus des simple quotes, tu peux essayer avec :

Me.lst_Resultat.value
>
Messages postés
23761
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020

Merci pour tes réponses..


mais sa ne mmarche tjr pas...


voila le code:


= ""' & Me.lst_Resultat.Value & '"")) "

les ' je n ai pas pu les mettre exactement ou toi tu les avait mis.. car il les pend comme un commentaire... je sais donc pas si s est bon la ou je les ai mis...

@plush
Messages postés
23761
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 898 > CyPile
Si tu les refermes correctement avec " ça marche !
= '" & Me.lst_Resultat.Value & "'));" 
Et ce sont bien des simple-quotes (touche 4) et non des back-quotes (touche 7 en ALT-GR).
N'oublie pas non plus le ; à la fin, ça peut servir...
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207 > CyPile
ca fait la meme chose mais ecrit differement
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207 >
Messages postés
23761
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020

ca ne sert a rien de mettre des .value partout si tu est sous access
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207
si tu veut que ta msgbox s'affiche il ne faut pas la mettre en commentaire

c'est quoi ton probleme ca ne met toujours rien dans ta requete ?
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207 >
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016

en fait si tu peut envoyer une impressin d'ecran ca serait bien parceque je doit etre c.. je ne vois pas du tou les lignes que ta liste affiche mais ne tinquiete pas ca vien de moi
>
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016

Heu moi aussi je doit etre c.. je sais pas comment t envoyer une copie d ecran... ??
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207 >
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016

moi non plus j'esperais que tu savais
essaye le test on va faire autrement
Messages postés
23761
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 898 >
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016

Ca y est, je crois que j'ai compris...

Il faut que tu récupères la valeur de la colonne qui affiche le logiciel :

liste.column(0), liste.column(1)...

A toi de voir dans la requête que tu as créée quel est le bon numéro de colonne...
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207 >
Messages postés
23761
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020

je pense qu'on ne tape pas les bonne chose pour la requete
Je pense qu'il y a une probleme au niveau du "ma_liste.value"

etes vous sur que la propriété value raporte la veleur selectionné dans la liste ?
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207
j'ai dit plus haut que le .value pour moi ca ne sert a rien

pour moi le probleme vien de

Sql = "SELECT Tbl_Prog.NomPc FROM Tbl_Prog"
Sql = Sql & " WHERE (((Tbl_Prog.NomProg) = """ & Me.lst_Resultat & """)) "

on demande de selectionner des truc pour lequel le nomProg est = a la liste mais si tu affiche des nom de pc dans ta liste ca ne marchera jamais

tu me suis ?
Ben comme tu peux le voir dans le message 62 sa serai juste le nom du programme qu il faudrai récuperer pour pourvoir faire la requete d afficher juste les nom des pc ou le prog est installé...
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207
OK on va faire un test tous simple

tu creer un texte dans ton formulaire ou tu a ta liste tu l'appelle txttest et dans ta zone de liste tu creer le code sur click

txttest=lst_Resultat

et tu me dit si tu as quelque chose qui ce met dans le texte et surtout quoi
Rien ne s affiche...


mais dans ma lst_resultat j'ai 4 colonnes... donc si je clique sur une sa selectionne tt la ligne pas juste une données...
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207
fqait ce que blux a dit avec mon test mais tu met
txttest=lst_Resultat.column(0)
apres 1 , apres 2 etc...
Merci a vous 2..


J ai test mais une erreur (2185) apparait : impossible de faire reference a une propriété ou de la definir pour un controle si celle ci n est pas activé...
Messages postés
353
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
9 février 2016
207
c'est peut etre un probleme de reference dans option Vba mais je n'ai aucune idée de laquelle