Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[Access VBA] problème pour récuperer un champ

CyPile, le mardi 20 mars 2007 à 10:45:42
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!!
Configuration: Windows XP
Internet Explorer 7.0
Répondre à CyPile  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
_goni, le mardi 20 mars 2007 à 10:57:29
Salut,
Pourrais tu etre plus précis ? C'est la requete à réaliser que tu veux ? Benoit.
Enlèves tes doigts sales de mon clavier.
Répondre à _goni

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
bachoune, le mardi 20 mars 2007 à 10:57:31
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.

;)
Répondre à bachoune

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 12:16:51
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)


:(
Répondre à CyPile

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mardi 20 mars 2007 à 13:40:53
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é... A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 14:02:49
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
Répondre à CyPile

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
bachoune, le mardi 20 mars 2007 à 14:24:09
List4.Column(2, List4.ListIndex)

2-> ta colonne
List4.ListIndex -> l'index de la ligne sélectionnée
Répondre à bachoune

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
bachoune, le mardi 20 mars 2007 à 13:45:51
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

;)
Répondre à bachoune

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 14:05:08
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..


:)
Répondre à CyPile

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
zenon, le mardi 20 mars 2007 à 14:13:00
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...
Répondre à zenon

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 14:21:23
Merci bcp je vais esseyer de retrouver l article de Bux.. ;)


thanks :)
Répondre à CyPile

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mardi 20 mars 2007 à 15:30:06
Yep, l'est là :

access mise en forme contenu zonen de liste#3
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fl0, le mardi 20 mars 2007 à 14:20:52
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
Répondre à fl0

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 14:25:14
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..
Répondre à CyPile

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fl0, le mardi 20 mars 2007 à 14:49:50
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"
Répondre à fl0

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fl0, le mardi 20 mars 2007 à 14:58:00
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
Répondre à fl0

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 15:29:29
Merci bcp..

J ai tt changé pour que sa aille avec ma BD mais j ai une erreur : 3102 " Réference circulaire causé par "nom de ma requete""


je sais pas qui faire...
Répondre à CyPile

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fl0, le mardi 20 mars 2007 à 15:32:55
tu as creé une requete avec le nom que je t'ai dit ?
Répondre à fl0

19


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 15:46:00
j ai reussi merci bcp bcp bcp bcp..



franchement merci



:)
Répondre à CyPile

20


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fl0, le mardi 20 mars 2007 à 15:48:15
c'etait quoi le probleme pour info
Répondre à fl0

21


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 16:14:41
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,


..
Répondre à CyPile

22


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fl0, le mardi 20 mars 2007 à 16:20:21
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 = ".....
Répondre à fl0

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fl0, le mardi 20 mars 2007 à 15:39:59
ce msg n'est pas pour ici
Répondre à fl0

23


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 16:27:27
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 ?
Répondre à CyPile

24


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fl0, le mardi 20 mars 2007 à 16:32:47
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
Répondre à fl0

25


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 16:37:09
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
Répondre à CyPile

27


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 16:40:53
requete créé à laide de l assitant...
Répondre à CyPile

26


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fl0, le mardi 20 mars 2007 à 16:40:21
si je te comprend et il te marque un message d'erreur ou tu as juste ta requete qui est vide
Répondre à fl0

28


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 16:42:34
En fait j ai mis un MsgBox comme tu peux voir dans le code il me retourne la requete mais vide...

et si je regarde ma requete physiquement elle est vide aussi...
Répondre à CyPile

29


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fl0, le mardi 20 mars 2007 à 16:46:23
bouge pas j'essaye la msgbox mais je vois pas a quoi ca sert
Répondre à fl0

30


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 16:48:43
Juste a visualiser la requete.. en entier
Répondre à CyPile

31


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fl0, le mardi 20 mars 2007 à 16:49:42
dans ta msgbox tu a quand meme ce que tu as mis entre "" apres le Sql = "...?
Répondre à fl0

32


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mardi 20 mars 2007 à 16:53:52
ui bien sur. La requete s ecrit normalement il manque juste les données...
Répondre à CyPile

34


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mardi 20 mars 2007 à 16:59:36
La plupart du temps, c'est une erreur de syntaxe si la msgbox s'affiche mais que rien ne s'exécute...

J'ai vu que tu avais des double-quotes (guillemets)... Le mieux est de mettre entre simple quote (apostrophe) les valeurs de type chaine, comme j'ai donné l'exemple dans mon message 4...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

39


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mercredi 21 mars 2007 à 08:40:18
Okay merci je vais test..
Répondre à CyPile

41


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyPile, le mercredi 21 mars 2007 à 08:53:14
Okay c est fait... Mais tjr rien ne s affiche dans la nouvelle requette nom_PC



:(
Répondre à CyPile

81


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
nicoaccess, le mercredi 11 avril 2007 à 09:11:52
puis je te poser une question sur access
Répondre à nicoaccess

33


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fl0, le mardi 20 mars 2007 à 16:57:07