Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2509 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA / ACCESS] Problème liste déroulante avec autre liste déroulante

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA / ACCESS] Problème liste déroulante avec autre liste déroulante

n°1567921
bubut89
Posté le 31-05-2007 à 14:15:13  profilanswer
 

Bonjour le forum,
 
J'ai un petit problème au niveau de la programmation sur access.
 
Je vous explique :
J'ai une liste déroulante1 "Sous_Ensemble" avec comme valeur :  
420-1
420-2  
430-1
430-2
440
450
460
470
 
J'ai une seconde liste déroulante2 "Marque" :  
Schneider
Allen Bradley
Siemens...
 
J'ai une troisième liste déroulante3 "Type"
 
En temps normal, je choisie une valeur de la liste déroulante1, puis une valeur de la liste déroulante2 (qui est en fonction de la première liste déroulante), puis je choisie une valeur de la liste déroulante3 (qui est en fontion de la première et de la seconde liste déroulante).
 
Ca ça fonctionne, mais maintenant on me demande que lorsque l'on choisira dans "Type", si la liste déroulante1 a la valeur 420-1 ou 420-2 ou 440 ou 450 ou 460, que ça nous donne les valeurs que peut avoir tous ses Sous-Ensemble.
 
Exemple:  
420-1 ; schneider ; type = 'a' ou 'b' ou 'c'
420-2 ; schneider ; type = 'd' ou 'e' ou 'f'
440 ; schneider ; type = 'g' ou 'h
450 ; schneider ; type = 'i' ou 'j
460 ; schneider ; type = 'k' ou 'l'
Ca c'est ce que j'ai fait
 
Mais maintenant on me demande ça:
420-1 ; schneider ; type = 'a' ou 'b' ou 'c' ou 'd' ou 'e' ou 'f' ou 'g' ou 'h' ou 'i' ou 'j' ou 'k' ou 'l'
 
Et exactement la meme chose avec 420-2, 440, 450, 460.
 
Voila, si vous voulez plus d'explication n'hésité pas.
 
Cordialemant, Bubut89

mood
Publicité
Posté le 31-05-2007 à 14:15:13  profilanswer
 

n°1568045
Paul Hood
Posté le 31-05-2007 à 15:33:21  profilanswer
 

Bonjour,
 
pas tres clair ! je resume...dis moi si c'est ca !
tu as 3 listes L1, L2 et L3
Quand tu choisis une valeur dans L1 alors L2 et L3 se mettent à jour,
ensuite tu choisis une valeur dans L2 et c'est L3 qui se met à jour.
 
jusque là je suivais...maintenant je suis perdu !!!
 

n°1568094
bubut89
Posté le 31-05-2007 à 16:31:39  profilanswer
 

ok jusqu'à là c'est bon, accroche toi pour la suite car c'est assé compliqué à expliquer.
 
Je reprens mon exemple précédent :
 
420-1 ; schneider ; type = 'a' ou 'b' ou 'c'  
420-2 ; schneider ; type = 'd' ou 'e' ou 'f'  
440 ; schneider ; type = 'g' ou 'h  
450 ; schneider ; type = 'i' ou 'j  
460 ; schneider ; type = 'k' ou 'l'
 
Si je choisis 420-1, j'ai le choix pour la Marque entre schneider, allen bradley et siemans, je choisis schneider. Donc pour la marque Schneider, dans Type, j'ai le choix 'a' ou 'b' ou 'c'.
 
Maintenant je souhaiterai que lorsque je choisis 420-1 ou 420-2 ou 440 ou 450 ou 460 et que dans ma liste déroulante Marque, je choisis schneider. Il propose dans ma liste déroulante Type, tous les types correspondant à la marque schneider et appartenent au Sous Ensembles 420-1 et 420-2 et 440 et 450 et 460.
 
 
Ce que je souhaite, je choisis 420-1, je choisis schneider, dans ma dernière liste déroulante il me propose tous les enregistrements  "Type" appartenent au Sous Ensemble 420-1 et 420-2 et 440 et 450 et 460.  
 
420-1 ; schneider ; type = 'a' ou 'b' ou 'c' ou 'd' ou 'e' ou 'f' ou 'g' ou 'h' ou 'i' ou 'j' ou 'k' ou 'l'  
 
si je choisis 420-2, le choix du type sera la meme que pour 420-1 et que pour 440 et 450 et 460.
 
J'espère que j'ai assez bien expliqué.
 
Cordialement,  
 
Bubut89

n°1568132
Paul Hood
Posté le 31-05-2007 à 17:02:25  profilanswer
 

Il suffit de faire la sélection uniquement sur la marque et plus sur ta liste1 (420-1, etc..)
En clair (j'espere...)
Quand tu choisis dans ta liste 1, ca te donne les marques possibles dans ta liste 2.
Quand tu choisis la marque dans ta liste 2 tu dois rechercher indépendamment de la sélection de ta liste 1, tous les éléments qui ont pour marque celle que tu as choisi.
Tu ne peux pas te contenter des valeurs présentes dans tes listes mais soit de tableaux temporaires, soit d'interrogations à ta base access.
 
J'espère que ca t'aide !!

n°1568359
bubut89
Posté le 01-06-2007 à 07:55:28  profilanswer
 

Bonjour Paul Hood,
 
Excuse moi mais je ne te suie pas totalement.

Tu ne peux pas te contenter des valeurs présentes dans tes listes mais soit de tableaux temporaires, soit d'interrogations à ta base access.

Je ne te comprends pas.
Il faut pas oublier qu'il n'y a pas que : 420-1, 420-2, 440, 450, 460 il y a aussi le reste : 430-1, 430-2, 470.
Donc si :

Quand tu choisis la marque dans ta liste 2 tu dois rechercher indépendamment de la sélection de ta liste 1, tous les éléments qui ont pour marque celle que tu as choisi.

Alors j'aurai aussi les marque de ce que je ne désir pas.
 
Cordialement,
 
Bubut

n°1568361
Paul Hood
Posté le 01-06-2007 à 08:13:54  profilanswer
 

Donc je n'ai pas été clair où je n'ai rien compris !!!!
Dans ta liste 1 tu choisis un nombre 420-1, ca te donne en liste2 un certain nombre de marque (Schneider, Siemens, etc...).
ensuite...
Dans ta liste2 tu choisis une marque (Schneider, Siemens, etc...) parmi celles présentes. Et dans la liste3 tu dois indiquer tous les types associés à la marque (sélectionnée en liste2) quelque soit le nombre sélectionné dans ta liste1.
J'y suis ?

n°1568366
bubut89
Posté le 01-06-2007 à 08:26:27  profilanswer
 

ok, pour ma liste 3, elle est en fonction de ma liste 1 et de ma liste 2 (ça s'est ce que j'ai aujourd'hui).
Pour ma liste 3 ce n'est pas quelque soit le nombre sélectionné en liste 1.
 
Ce que je veux:
Si 420-ou 420-2 ou 440 ou 450 ou 460 est sélectionné, dans la liste 3 on aura la meme chose pour n'importe laquel de ses 5 valeurs.
 
Si 430-1 ou 430-2 ou 470 ets sélectionné en liste 1, ma liste 3 sera à chaque fois différente pour les 3 valeurs sélectionné en liste 1.
 
Pfff c'est compliqué à expliquer. :pt1cable:

n°1568761
jpcheck
Pioupiou
Posté le 01-06-2007 à 18:22:59  profilanswer
 

je me permets de m'immiscer dans votre conv ^^
 
ma méthode pour ce dont tu parles est assez simple :
- dans les tables, j'ai une clé primaire en autonumber (nommé i_nomdelatable_ID) / je prends ici un exemple de table à 2 colonnes.
- dans les listbox j'ai 2 colonnes :  1 visible, 1 invisible
- la listbox 1 a pour source ta table 1
- les listbox 2 et 3 ont une source respectivement du type "SELECT * FROM table2 WHERE Litval1();" et "SELECT * FROM table3 WHERE Litval2();"  
les fonctions litval1 et 2 récupèrent la valeur de la listbox
- j'associe à ces listbox un évènement after_update qui donne ceci

Code :
  1. listbox1_after_update()
  2. if not isnull(listbox1) then
  3.     ival1 = listbox1.value
  4.     listbox2.requery
  5. end if
  6. end


 
avec

Code :
  1. function Litval1() as Integer
  2. Litval1 = ival1
  3. end function


 
et
en variable
 

Code :
  1. Public ival as Integer


 
tu vois le raisonnement ?

n°1569420
bubut89
Posté le 04-06-2007 à 07:49:09  profilanswer
 

Bonjour jpcheck,
 
Oui je vois à peu près le raisonnement.
 
Donc faut que je mettes une clé primaire en NuméroAuto à chacune de mes tables, dc 2 colonnes une visible (la valeur) et la seconde invisible (le NuméroAuto).
 
Mais après comment je fais pour lui dire que tel et tel valeur doit faire tel chose??
 
Merci de ton aide jpcheck
 
Cordialement,
 
Bubut89

n°1569566
jpcheck
Pioupiou
Posté le 04-06-2007 à 12:14:16  profilanswer
 

pour les listbox tu peux associer une colonne. Tu prends celle de ton autonumber caché.
 
voir la propriété boundcolumn notamment.


Message édité par jpcheck le 04-06-2007 à 12:14:37
mood
Publicité
Posté le 04-06-2007 à 12:14:16  profilanswer
 

n°1569649
bubut89
Posté le 04-06-2007 à 14:01:52  profilanswer
 

Donc j'a

n°1569667
bubut89
Posté le 04-06-2007 à 14:16:46  profilanswer
 

Faute de frappe précédement désolé.
 
Donc j'ai créé mon NuméroAuto pour ma liste déroulante Sous_Ensemble. J'ai caché les colonnes non interressantes.
Mes 2 autres zones de listes ont comme source chacunes une requête.

Code :
  1. Public ival as Integer
  2. function Litval1() as Integer
  3. Litval1 = ival1
  4. end function
  5. listbox1_after_update()
  6.   if not isnull(listbox1) then
  7.      ival1 = listbox1.value
  8.      listbox2.requery
  9.   end if
  10. end

Donc le dedans faut que je mette la propriété BoundColumn.
Comme tu dis je lui spécifie la colonne cachée, mais après je vois pas trop le rapport avec mon sujet? Moi ce dont je recherche c'est une certaine valeur de la colonne cachée.
 
Excuse j'suis nul en programmation, donc j'ai des grosses lacunes.
 
Cordialement,
 
Bubut89

n°1569694
jpcheck
Pioupiou
Posté le 04-06-2007 à 14:32:26  profilanswer
 

[quotemsg=1568761,8,189214]les listbox 2 et 3 ont une source respectivement du type "SELECT * FROM table2 WHERE Litval1();" et "SELECT * FROM table3 WHERE Litval2();"  
 
[quotemsg]
c'est là qu'st lié mon raisonnement à ta question :)

n°1569749
bubut89
Posté le 04-06-2007 à 14:53:46  profilanswer
 

Liste 2:Contenu

SELECT [R_Marque / Sous Ensemble].Marque FROM [R_Marque / Sous Ensemble];

Liste 3:Contenu

SELECT [R_Type / Marque / Sous Ensemble].Types FROM [R_Type / Marque / Sous Ensemble];

Voici ce que j'ai pour mes listes déroulantes.
 
Donc je dois faire ça :
Liste 2:Contenu

SELECT [R_Marque / Sous Ensemble].Marque FROM [R_Marque / Sous Ensemble] WHERE Litval1();

Liste 3:Contenu

SELECT [R_Type / Marque / Sous Ensemble].Types FROM [R_Type / Marque / Sous Ensemble] WHERE Litval2();

Et donc faut que je déclare Litval1() et Litval2().
Maintenant faut programmer je présume :??:  :??:  
 
Y a-t-il possibilité que tu m'aide encor point de vu programmation car je sais pas trop comment faire?
 
Cordialement,
 
Bubut89


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA / ACCESS] Problème liste déroulante avec autre liste déroulante

 

Sujets relatifs
[WORD, ACCESS]Lié des requêtes SQL à l'aide d'une macro sous wordProblème avec le contenu d'un fichier
[Résolu] Problème avec FirefoxProbleme centrage site sous differentes résolutions
Problème débutantEquation de la chaleur en 2D. Problème avec mon logiciel.
[PHP][ORACLE] Problème de requête SQL[RESOLU] FPDF probleme mise en page tableau
Problème de compilo en ligne de commande : run-time error R6009[Algo]Combinaison d'une liste d'entier
Plus de sujets relatifs à : [VBA / ACCESS] Problème liste déroulante avec autre liste déroulante


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR