{Access}problème condition sur menu déroulant
Résolu/Fermé
Iruka72
Messages postés
255
Date d'inscription
mardi 16 février 2010
Statut
Membre
Dernière intervention
5 juin 2014
-
1 mars 2010 à 10:41
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 - 4 mars 2010 à 15:53
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 - 4 mars 2010 à 15:53
A voir également:
- {Access}problème condition sur menu déroulant
- Menu déroulant excel - Guide
- Excel cellule couleur si condition texte - Guide
- Excel menu déroulant en cascade - Guide
- Menu déroulant google sheet - Accueil - Guide bureautique
- Windows 11 menu démarrer classique - Guide
8 réponses
blux
Messages postés
26531
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 décembre 2024
3 317
1 mars 2010 à 11:26
1 mars 2010 à 11:26
On supppose :
- un formulaire nommé form1
- une liste déroulante nommée liste1
- une liste déroulante nommée liste2
- un champ nommé champ1
L'opération consiste à créer une fonction qui sera appelée lors du changement de valeur de liste1 ou de liste2. Cette fonction ira vérifier les valeurs de liste1 ET de liste2 puis en déduira l'action à faire sur champ1 : masquage/démasquagee, verrouillage/déverrouillage, remise à zéro...
Cependant, il faudra que champ1 soit verrouillé à l'entrée sur form1.
Est-ce que ça répond à ta demande ?
- un formulaire nommé form1
- une liste déroulante nommée liste1
- une liste déroulante nommée liste2
- un champ nommé champ1
L'opération consiste à créer une fonction qui sera appelée lors du changement de valeur de liste1 ou de liste2. Cette fonction ira vérifier les valeurs de liste1 ET de liste2 puis en déduira l'action à faire sur champ1 : masquage/démasquagee, verrouillage/déverrouillage, remise à zéro...
Cependant, il faudra que champ1 soit verrouillé à l'entrée sur form1.
Est-ce que ça répond à ta demande ?
blux
Messages postés
26531
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 décembre 2024
3 317
1 mars 2010 à 10:52
1 mars 2010 à 10:52
Salut,
tu peux masquer/invalider des champs lorsque tu saisis une certaine valeur dans une liste.
Peut-être que cela répond à te demande ?
tu peux masquer/invalider des champs lorsque tu saisis une certaine valeur dans une liste.
Peut-être que cela répond à te demande ?
Iruka72
Messages postés
255
Date d'inscription
mardi 16 février 2010
Statut
Membre
Dernière intervention
5 juin 2014
22
1 mars 2010 à 11:05
1 mars 2010 à 11:05
Merci de la réponse, je vois bien ce que tu veux me faire faire, mais j'ai cherché le moyen de le mettre en place, mais ne le trouve pas, j'avais déjà pensé a cette possibilité, elle rejoint d'ailleurs ma deuxième question.
Pourrais tu m'expliquer la marche à suivre?
Pourrais tu m'expliquer la marche à suivre?
Iruka72
Messages postés
255
Date d'inscription
mardi 16 février 2010
Statut
Membre
Dernière intervention
5 juin 2014
22
1 mars 2010 à 14:34
1 mars 2010 à 14:34
Merci pour ton aide, j'ai eu du mal a trouver le code correct mais j'y suis finalement parvenu, il a l'air de bien prendre en compte les changements. Je n'ai pas verrouillé liste 1 comme mis dans ton exemple, et ca fonctionne bien ainsi.
J'ai utilisé ce code ci, je le mets a titre indicatifs ca pourrait être utile à d'autre : (petit lexique Enseignement général est la liste dont dépende les deux autres, les deux commençants par "sous cas" sont les listes qui dépende de la première)
Private Sub Enseignement_Général_AfterUpdate()
[Sous_cas_pour_2ème__3ème__].Visible = False
[Sous_cas_pour_secondaire_complémentaire].Visible = False
If [Enseignement Général] = "3" Or [Enseignement Général] = "4" Then
[Sous_cas_pour_2ème__3ème__].Visible = True
ElseIf [Enseignement Général] = "5" Then
[Sous_cas_pour_secondaire_complémentaire].Visible = True
Else
[Sous_cas_pour_2ème__3ème__].Visible = False
[Sous_cas_pour_2ème__3ème__] = Null
[Sous_cas_pour_secondaire_complémentaire].Visible = False
[Sous_cas_pour_secondaire_complémentaire] = Null
End If
End Sub
J'ai également ceci dans l'ouverture du formulaire afin qu'il soit également caché au démarrage du formulaire:
Private Sub Form_Current()
[Sous_cas_pour_secondaire_complémentaire].Visible = False
[Sous_cas_pour_2ème__3ème__].Visible = False
End Sub
Je ne sais pas si c'était la meilleure solution, mais en y réfléchissant avec ce que tu m'as donné comme information et mes petites connaissances en VBA, c'est ce que j'ai trouvé de mieux.
Mais il me reste encore deux petit truc que j'aimerais améliorer si possible, je cherche le moyen de rafraichir pas la page mais juste le champs en cas de modification, bien qu'il ne sauvegarde pas avec les informations si je change et que les conditions ne sont plus valide, quand je regarde dans le bas de mon formulaire double affichage, je vois apparaître les informations comme si elle était dans une feuille de donnée, et la ca prend du temps à se mettre à jour, c'est du chipotage, mais j'aimerais que pour les utilisateurs leur affichage soit propre, même si je ne pense pas le mettre en double affichage, je préfère prévoir toute les possibilités.
Le deuxième est qu'ici j'ai mis le numéro correspondant au numéro de la clé de l'entrée que je voulais tester dans ma condition, j'ai essayé de mettre le nom en entier mais il ne l'accepte pas. Ça pourrait poser problème si un jour on modifiait la table dans laquelle se trouve ma liste déroulante car le numéro ne serait plus le même.
J'ai utilisé ce code ci, je le mets a titre indicatifs ca pourrait être utile à d'autre : (petit lexique Enseignement général est la liste dont dépende les deux autres, les deux commençants par "sous cas" sont les listes qui dépende de la première)
Private Sub Enseignement_Général_AfterUpdate()
[Sous_cas_pour_2ème__3ème__].Visible = False
[Sous_cas_pour_secondaire_complémentaire].Visible = False
If [Enseignement Général] = "3" Or [Enseignement Général] = "4" Then
[Sous_cas_pour_2ème__3ème__].Visible = True
ElseIf [Enseignement Général] = "5" Then
[Sous_cas_pour_secondaire_complémentaire].Visible = True
Else
[Sous_cas_pour_2ème__3ème__].Visible = False
[Sous_cas_pour_2ème__3ème__] = Null
[Sous_cas_pour_secondaire_complémentaire].Visible = False
[Sous_cas_pour_secondaire_complémentaire] = Null
End If
End Sub
J'ai également ceci dans l'ouverture du formulaire afin qu'il soit également caché au démarrage du formulaire:
Private Sub Form_Current()
[Sous_cas_pour_secondaire_complémentaire].Visible = False
[Sous_cas_pour_2ème__3ème__].Visible = False
End Sub
Je ne sais pas si c'était la meilleure solution, mais en y réfléchissant avec ce que tu m'as donné comme information et mes petites connaissances en VBA, c'est ce que j'ai trouvé de mieux.
Mais il me reste encore deux petit truc que j'aimerais améliorer si possible, je cherche le moyen de rafraichir pas la page mais juste le champs en cas de modification, bien qu'il ne sauvegarde pas avec les informations si je change et que les conditions ne sont plus valide, quand je regarde dans le bas de mon formulaire double affichage, je vois apparaître les informations comme si elle était dans une feuille de donnée, et la ca prend du temps à se mettre à jour, c'est du chipotage, mais j'aimerais que pour les utilisateurs leur affichage soit propre, même si je ne pense pas le mettre en double affichage, je préfère prévoir toute les possibilités.
Le deuxième est qu'ici j'ai mis le numéro correspondant au numéro de la clé de l'entrée que je voulais tester dans ma condition, j'ai essayé de mettre le nom en entier mais il ne l'accepte pas. Ça pourrait poser problème si un jour on modifiait la table dans laquelle se trouve ma liste déroulante car le numéro ne serait plus le même.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
blux
Messages postés
26531
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 décembre 2024
3 317
1 mars 2010 à 15:59
1 mars 2010 à 15:59
Je n'ai pas verrouillé liste 1
Ca tombe bien, je ne l'avais pas proposé :-)
je cherche le moyen de rafraichir pas la page mais juste le champs en cas de modification
Si tu fais une modif dans le champ, elle est visible immédiatement, non ? Ou alors, ce que tu appelles 'champ' n'est pas ce que je pense...
Le deuxième est qu'ici j'ai mis le numéro correspondant au numéro de la clé de l'entrée que je voulais tester dans ma condition, j'ai essayé de mettre le nom en entier mais il ne l'accepte pas. Ça pourrait poser problème si un jour on modifiait la table dans laquelle se trouve ma liste déroulante car le numéro ne serait plus le même.
Pas compris...
Ca tombe bien, je ne l'avais pas proposé :-)
je cherche le moyen de rafraichir pas la page mais juste le champs en cas de modification
Si tu fais une modif dans le champ, elle est visible immédiatement, non ? Ou alors, ce que tu appelles 'champ' n'est pas ce que je pense...
Le deuxième est qu'ici j'ai mis le numéro correspondant au numéro de la clé de l'entrée que je voulais tester dans ma condition, j'ai essayé de mettre le nom en entier mais il ne l'accepte pas. Ça pourrait poser problème si un jour on modifiait la table dans laquelle se trouve ma liste déroulante car le numéro ne serait plus le même.
Pas compris...
Iruka72
Messages postés
255
Date d'inscription
mardi 16 février 2010
Statut
Membre
Dernière intervention
5 juin 2014
22
1 mars 2010 à 16:29
1 mars 2010 à 16:29
c'était pas liste 1 mais champ 1 désolé.
Pour rafraichir, sur le formulaire en double affichage, j'ai une partie normale et une partie en feuille de donnée, sur la partie "normale", je vois la modification immédiatement, sur celle en feuille de données il y a une certaine latence, le temps varie, parfois c'est presque automatiquement, parfois ca prend un peu de temps, il finit par le faire mais bon.
Pour la deuxième, désolé de ce fouillis, je vais essayer de reformuler ca plus clairement. Dans la table ou j'ai créer les options pour le menu déroulant, y a un numéro qui me sert de clé primaire et un champ pour les options. ici je me sert du numéro dans mon code pour faire mes tests, et j'aimerais faire les test directement sur l'option, je sais pas si c'est possible.
Pour rafraichir, sur le formulaire en double affichage, j'ai une partie normale et une partie en feuille de donnée, sur la partie "normale", je vois la modification immédiatement, sur celle en feuille de données il y a une certaine latence, le temps varie, parfois c'est presque automatiquement, parfois ca prend un peu de temps, il finit par le faire mais bon.
Pour la deuxième, désolé de ce fouillis, je vais essayer de reformuler ca plus clairement. Dans la table ou j'ai créer les options pour le menu déroulant, y a un numéro qui me sert de clé primaire et un champ pour les options. ici je me sert du numéro dans mon code pour faire mes tests, et j'aimerais faire les test directement sur l'option, je sais pas si c'est possible.
blux
Messages postés
26531
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 décembre 2024
3 317
1 mars 2010 à 16:36
1 mars 2010 à 16:36
1 - sous_form.refresh ou sous_form.repaint ?
2 - Une zone de liste renvoie par défaut la valeur qui est dans la 'colonne liée', mais on peut parfaitement lire le contenu des autres colonnes : zone_de_liste.column(0), zone_de_liste.column(1), ....
2 - Une zone de liste renvoie par défaut la valeur qui est dans la 'colonne liée', mais on peut parfaitement lire le contenu des autres colonnes : zone_de_liste.column(0), zone_de_liste.column(1), ....
Iruka72
Messages postés
255
Date d'inscription
mardi 16 février 2010
Statut
Membre
Dernière intervention
5 juin 2014
22
4 mars 2010 à 15:53
4 mars 2010 à 15:53
Au final on dirait que le problème ne se produit plus, et le code mis pour le menu déroulant fonctionne, désolé du temps de réponse, j'ai fait plusieurs test et on dirait que je suis finalement parvenu à faire ce que je désirais merci.