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 04/09/2011, 14h48   #1
Nouveau Membre du Club
 
Homme Mickaël
Dessinateur industriel
Inscription : décembre 2010
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Localisation : France

Informations professionnelles :
Activité : Dessinateur industriel
Secteur : Industrie

Informations forums :
Inscription : décembre 2010
Messages : 61
Points : 31
Points : 31
Par défaut Problème sur sélection d'une combobox

Bonjour,

Sur un groupe de combobox, j'obtiens systématiquement un comportement étrange. Supposons par exemple que l'une d'elles contiennent 3 valeurs. Si je tente de sélectionner la 2ème, elle me sélectionne la première (comme si je cliquais en fait sur la première valeur). Pareil, pour toutes les valeurs.

J'ai vérifié aux niveau des propriétés des combobox concernées, et n'y ai rien trouvé. Je ne vois rien dans mon code qui pourraient altérer ce fonctionnement.
Je vous joins le bout de code qui permet de remplir les combobox:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
i = 1
 
Set Rst = CurrentDb.OpenRecordset("SELECT * FROM AttributsFamille WHERE AttributsFamille.IDFamille= " & CodeFamille)
 
Do Until Rst.EOF = True
    CurrentCBox = "cbattrib" & i
    CurrentLbl = "lblattrib" & i
    Form_GPE.Controls(CurrentCBox).Visible = True
    Form_GPE.Controls(CurrentLbl).Visible = True
    Form_GPE.Controls(CurrentLbl).Caption = DLookup("Nom", "Attribut", "ID = " & Rst!IDattribut)
    Form_GPE.Controls(CurrentCBox).RowSource = "SELECT IDAttribut, Valeur FROM ValeurAttributPossible WHERE IDAttribut = " + CStr(Rst!IDattribut) + " ;"
    Rst.MoveNext
    i = i + 1
Loop
 
Rst.Close
Si quelqu'un à une idée, je vous en remercie par avance.
Mickaël
Vhalar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 17h23   #2
Membre confirmé
 
Avatar de lelensois16
 
Homme Romain M.
Étudiant
Inscription : avril 2009
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Romain M.
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 167
Points : 204
Points : 204
Bonjour,

En réalité , la première ligne de la combobox commence à zéro.
Il suffit de vérifier avec la propriété ListIndex qui te renvoie la position actuelle ex:
Code :
MsgBox Me.MaListe.ListIndex
A mon avis , remplaces

par
et adaptes le reste du code

Cdt
lelensois16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 19h59   #3
Nouveau Membre du Club
 
Homme Mickaël
Dessinateur industriel
Inscription : décembre 2010
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Localisation : France

Informations professionnelles :
Activité : Dessinateur industriel
Secteur : Industrie

Informations forums :
Inscription : décembre 2010
Messages : 61
Points : 31
Points : 31
Re,

Concernant le Listindex d'une combobox je connaissais.
Mais dans le cas présent, je ne me sers pas de cette fonction.

Les combobox incriminées se nomment "cbattrib1", jusqu'à 7.
Qui plus est, les combobox affichent les bonnes valeurs. Leur Rowsource respectif est donc correct.

Il y a de toute évidence, quelque chose qui m'échappe. De même je n'ai pas du bien comprendre ce que tu me dis sur les Listindex.
Néanmoins, j'ai quand même tenté de remplacer le i = 1 par i = 0 mais ça ne venait pas de ça.
Vhalar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 21h22   #4
Membre confirmé
 
Avatar de lelensois16
 
Homme Romain M.
Étudiant
Inscription : avril 2009
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Romain M.
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 167
Points : 204
Points : 204
Le problème ne vient pas du rowsource à coup sur.


C'est juste la sélection du combobox qui est en cause d'où le listindex , si tu cliques sur la ligne 1 ,le combobox va considérer que t'as cliqué sur la ligne 0

Essaies de mettre ce code à l'évenement On_Click de l'un des combobox :

Code :
MsgBox MeMaListe.ItemData(Me.MaListe.ListIndex)
Si Access t'indique le champ précédent , le problème vient de l'évenement on_click . Est ce que tu as déja un code dessus ?

Cdt
lelensois16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 11h14   #5
Nouveau Membre du Club
 
Homme Mickaël
Dessinateur industriel
Inscription : décembre 2010
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Localisation : France

Informations professionnelles :
Activité : Dessinateur industriel
Secteur : Industrie

Informations forums :
Inscription : décembre 2010
Messages : 61
Points : 31
Points : 31
Salut

Alors pour répondre à ta question, et il est vrai que j'aurais dû le préciser dès le départ, je n'ai aucun évènement sur mes combobox pour le moment. (J'en aurai plus tard sur l'évènement AfterUpdate lorsque ce bug sera résolu).

En ce qui concerne le test que tu m'as fait faire, quelque soit le listindex sélectionné, il me retourne la même valeur qui semble être la première qu'il trouve. Cela dit, je suis en train de vérifier les valeurs trouvées, peut être que ça pourrait m'amener un élément de réponse.

Je ne comprends vraiment pas sur ce coup la.
Vhalar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 11h40   #6
Membre confirmé
 
Avatar de lelensois16
 
Homme Romain M.
Étudiant
Inscription : avril 2009
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Romain M.
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 167
Points : 204
Points : 204
Bonjour,

J'aurais encore besoin de ta base si ceci ne te dérange pas ...

Cdt

PS : précises moi le module et le nom du formulaire où le problème a lieu. J'essaierai de te répondre au plus vite.
lelensois16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 12h51   #7
Nouveau Membre du Club
 
Homme Mickaël
Dessinateur industriel
Inscription : décembre 2010
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Localisation : France

Informations professionnelles :
Activité : Dessinateur industriel
Secteur : Industrie

Informations forums :
Inscription : décembre 2010
Messages : 61
Points : 31
Points : 31
Re,

Pour accèder à l'interface je te propose de l'utiliser tel qu'elle sera en fonctionnement. Donc lance le formulaire "Accueil" (pour initialiser certaines variables), puis clique sur le bouton "GPE". (tu peux te rajouter dans la table utilisateur pour éviter un éventuel plantage).

Ensuite sélectionne dans Famille: "Orfice" puis "Plate" pour la catégorie.
Tu verras apparaitre les attributs en haut à droite. Pour tester d'autres valeurs, tu pourras choper la famille "Manifold" puis la catégorie "Heater".

Point de vue code, la majeure partie se situe dans "Form_GPE" puis la sub "RefreshQuerry". (toutes les autres cbox du formulaire, qui n'ont pas de problème, appellent grâce à leur évènement AfterUpdate "RefreshQuerry".

Les fonctions / procédures appellée par ResfreshQuerry se trouvent dans le module "Common".

Si tu as des critiques, n'hésite pas. N'étant pas programmeur (je suis autodidacte) et n'ayant eu aucune formation, je n'utilise probablement pas les conventions.

ps: Ca ne me dérange aucunement. Au contraire, ça me permet de progresser. Grâce à ton aide ainsi que quelque autres membres de ce forum, j'ai réussi à créer quelque chose de pas trop mal en l'espace de 3 semaines.
Vhalar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 15h07   #8
Membre confirmé
 
Avatar de lelensois16
 
Homme Romain M.
Étudiant
Inscription : avril 2009
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Romain M.
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 167
Points : 204
Points : 204
Bonjour,

J'ai trouvé le problème :

1 - Les listIndex sont corrects
2 - En regardant dans les propriétés , j'ai remarqué qu'il y a 2 colonnes ... Normal ! la requête source comporte 2 valeurs dont la première est toujours la même ! la clé primaire. Par conséquent , Access te renvoie toujours la première valeur !
3 - Donc pour corriger le problème , rien de plus simple , 1 seule valeur dans la requête source :

Code :
Form_GPE.Controls(CurrentCBox).RowSource = "SELECT Valeur FROM ValeurAttributPossible WHERE IDAttribut = " & CStr(Rst!IDAttribut) & " ;"
Cdt ,

PS : je te renvoie la base dans 3 min , ma connexion est bizarre today !
lelensois16 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/09/2011, 15h56   #9
Nouveau Membre du Club
 
Homme Mickaël
Dessinateur industriel
Inscription : décembre 2010
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Localisation : France

Informations professionnelles :
Activité : Dessinateur industriel
Secteur : Industrie

Informations forums :
Inscription : décembre 2010
Messages : 61
Points : 31
Points : 31
Eh ben... Chapeau à toi. Je ne l'aurais jamais trouvé.
Pour la simple et bonne raison, que je ne comprends pas pourquoi ça ne fonctionne pas dans ce cas, alors que je procède de la même manière ailleurs.

Si jamais tu arrives à me le faire comprendre, je t'applaudis !!!



Encore une fois, merci énormément à toi !
Vhalar 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 23h44.


 
 
 
 
Partenaires

Hébergement Web