Liste déroulante active/Désactive un Champ
Tinco
Messages postés
134
Date d'inscription
Statut
Membre
Dernière intervention
-
Tessel75 -
Tessel75 -
Bonjour,
C'est encore moi, j'y suis presque dans la conception de ma base de données mais il me manque un truc important que j'arrive pas a faire ! lol
J'ai une table, avec plusieurs listes déroulantes : Mois, Sexe, Et Types !
Dans la liste Type j'ai des choix : Choix1, Choix2, Choix3, Et Choix4
Dans la même table j'ai des cellules qui vont recevoir des chiffres suivant les choix entrés dans la liste "Type", les cellules sont comme ça : C1, C2, C3, C4 .........jusquà C22
Ce que je veut faire, c'est avoir les cellules de 12 a 22 comme qui dirait Désactivés pour que l'utilisateur n'y saisisse rien SAUF ! si dans la Combo box "Type" le Choix4 est selectionné
Dans la même Foulée, si l'utilisateur Séléctionne le "Choix4" pour que les Cellules 12-22 soient activées, je souhaite que dans le même temps, les Cellules de 1-11 soient désactivées pour ne rien y saisir !
Je sais que le truc se fait dans la région After_Update sous VBA, mais n'étant pas une lumière celeste dans le codage, je chasse les mouches en attendant une âme charitable qui me guidera pour ce faire lollll
Merci a tous :)
C'est encore moi, j'y suis presque dans la conception de ma base de données mais il me manque un truc important que j'arrive pas a faire ! lol
J'ai une table, avec plusieurs listes déroulantes : Mois, Sexe, Et Types !
Dans la liste Type j'ai des choix : Choix1, Choix2, Choix3, Et Choix4
Dans la même table j'ai des cellules qui vont recevoir des chiffres suivant les choix entrés dans la liste "Type", les cellules sont comme ça : C1, C2, C3, C4 .........jusquà C22
Ce que je veut faire, c'est avoir les cellules de 12 a 22 comme qui dirait Désactivés pour que l'utilisateur n'y saisisse rien SAUF ! si dans la Combo box "Type" le Choix4 est selectionné
Dans la même Foulée, si l'utilisateur Séléctionne le "Choix4" pour que les Cellules 12-22 soient activées, je souhaite que dans le même temps, les Cellules de 1-11 soient désactivées pour ne rien y saisir !
Je sais que le truc se fait dans la région After_Update sous VBA, mais n'étant pas une lumière celeste dans le codage, je chasse les mouches en attendant une âme charitable qui me guidera pour ce faire lollll
Merci a tous :)
A voir également:
- Liste déroulante active/Désactive un Champ
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Compte facebook désactivé - Guide
- Pave tactile desactive - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
5 réponses
Il est vraiment......il est vraiment.......Il est vraiment phé-no-mé-nal la la la la mdrrr
Mon Chere Tessel, j'ai une excellente nouvelle a t'annoncer, j'ai enfin pu faire fonctionner le truc comme je le souhaite, et voici le code dans sa totalité :
Au Chargement du Formulaire, les bonnes cases restent actives, et les autres non, Le bon code est inséré dans (On_Load).......et lorsque je click sur accidents du travail, les autres cases se désactives, et celles qui m'interessent sont activées !
A Présent, je vais essayer de modifier le code pour un autre formulaire un peu plus compliqué que celui là ensuite, j'essayerais de trouver des lignes de codes plus petites que tout ceci !!! :D lolll
Tout ceci ne serais être sans ta contribution, Mille merci Amigo :D
Mon Chere Tessel, j'ai une excellente nouvelle a t'annoncer, j'ai enfin pu faire fonctionner le truc comme je le souhaite, et voici le code dans sa totalité :
Private Sub Accidents_AfterUpdate() If Me!Accidents = "Domestiques" Then Me![18a35ans].Enabled = False Me![36 a 45 ans].Enabled = False Me![46 a 65 ans].Enabled = False Me![65 ans et Plus].Enabled = False ElseIf Me!Accidents = "De La Voie Publique" Then Me![18a35ans].Enabled = False Me![36 a 45 ans].Enabled = False Me![46 a 65 ans].Enabled = False Me![65 ans et Plus].Enabled = False ElseIf Me!Accidents = "Coups Et Blessures" Then Me![18a35ans].Enabled = False Me![36 a 45 ans].Enabled = False Me![46 a 65 ans].Enabled = False Me![65 ans et Plus].Enabled = False ElseIf Me!Accidents = "Du Travail" Then Me![0 a 15 ans].Enabled = False Me![16 a 35 ans].Enabled = False Me![36 a 55 ans].Enabled = False Me![55 ans et Plus].Enabled = False Me![18a35ans].Enabled = True Me![36 a 45 ans].Enabled = True Me![46 a 65 ans].Enabled = True Me![65 ans et Plus].Enabled = True End If End Sub Private Sub Form_Current() If Me!Accidents = "Domestiques" Then Me![18a35ans].Enabled = False Me![36 a 45 ans].Enabled = False Me![46 a 65 ans].Enabled = False Me![65 ans et Plus].Enabled = False ElseIf Me!Accidents = "De La Voie Publique" Then Me![18a35ans].Enabled = False Me![36 a 45 ans].Enabled = False Me![46 a 65 ans].Enabled = False Me![65 ans et Plus].Enabled = False ElseIf Me!Accidents = "Coups Et Blessures" Then Me![18a35ans].Enabled = False Me![36 a 45 ans].Enabled = False Me![46 a 65 ans].Enabled = False Me![65 ans et Plus].Enabled = False ElseIf Me!Accidents = "Du Travail" Then Me![0 a 15 ans].Enabled = False Me![16 a 35 ans].Enabled = False Me![36 a 55 ans].Enabled = False Me![55 ans et Plus].Enabled = False Me![18a35ans].Enabled = True Me![36 a 45 ans].Enabled = True Me![46 a 65 ans].Enabled = True Me![65 ans et Plus].Enabled = True End If End Sub Private Sub Form_Load() Me![18a35ans].Enabled = False Me![36 a 45 ans].Enabled = False Me![46 a 65 ans].Enabled = False Me![65 ans et Plus].Enabled = False End Sub
Au Chargement du Formulaire, les bonnes cases restent actives, et les autres non, Le bon code est inséré dans (On_Load).......et lorsque je click sur accidents du travail, les autres cases se désactives, et celles qui m'interessent sont activées !
A Présent, je vais essayer de modifier le code pour un autre formulaire un peu plus compliqué que celui là ensuite, j'essayerais de trouver des lignes de codes plus petites que tout ceci !!! :D lolll
Tout ceci ne serais être sans ta contribution, Mille merci Amigo :D
Bonsoir,
Pas tout compris avec tes histoires de "choix" et de "cellules". Sans chercher à pinailler sur les termes, il est plus facile de se faire comprendre en parlant de "Contrôles" et de "Valeurs".
Mais ici ce n'est pas trop grave.
Pour obtenir qqch qui ressemble à ce que tu veux, il faut que tu jongles avec les "If ... Then ..." les "ElseIf ...Then ...." et autres "Else ...." et "End If"
Il faut seulement que tu saches que les mots-clés pour "Actif" et "Inactif" sont les propriétés des contrôles "Enable = True" et "Enable = False" et aussi tu peux disposer de la propriété "Vérrouillé ou Déverrouilé" qui est "Locked = true (or False)"
Tes écritures seront donc du type:
Bon courage
Pas tout compris avec tes histoires de "choix" et de "cellules". Sans chercher à pinailler sur les termes, il est plus facile de se faire comprendre en parlant de "Contrôles" et de "Valeurs".
Mais ici ce n'est pas trop grave.
Pour obtenir qqch qui ressemble à ce que tu veux, il faut que tu jongles avec les "If ... Then ..." les "ElseIf ...Then ...." et autres "Else ...." et "End If"
Il faut seulement que tu saches que les mots-clés pour "Actif" et "Inactif" sont les propriétés des contrôles "Enable = True" et "Enable = False" et aussi tu peux disposer de la propriété "Vérrouillé ou Déverrouilé" qui est "Locked = true (or False)"
Tes écritures seront donc du type:
If Me![ControleA] = "ABC" then . Me![ControleB].Enable= true ElseIf Me![ControleA] = "DEF" then . Me![ControleB].Enable= False End If
Bon courage
Bonjour Tessel et merci :)
J'ai expliqué du mieux que je pouvais, mais je pense , en effet que le mieux aurait été de dire que ma combo box contient 4 choix, si l'utilisateurs selectionne le Choix 4, les Champs de 12-22 s'activent et receveront des valeurs numériques :)
C'est justement là le Blem, j'ai pas su comment formuler les ecritures que tu a mis en bas avec les noms, de ma Combo Box [ControleA] et les champs 12-22 [ControleB] .......j'ai fait un test hier et Access a fini par beuguer et m'envoyer paitre mdrr :D
J'ai expliqué du mieux que je pouvais, mais je pense , en effet que le mieux aurait été de dire que ma combo box contient 4 choix, si l'utilisateurs selectionne le Choix 4, les Champs de 12-22 s'activent et receveront des valeurs numériques :)
C'est justement là le Blem, j'ai pas su comment formuler les ecritures que tu a mis en bas avec les noms, de ma Combo Box [ControleA] et les champs 12-22 [ControleB] .......j'ai fait un test hier et Access a fini par beuguer et m'envoyer paitre mdrr :D
Non du Tout, je suis assez obstiné dans ce domaine, j'ai essayé de changer les noms que tu a mis entre crochets, par les noms de ma combo box et le champ que je voulais désactiver mais VB n'a pas du tout aimé la blague loll :p
J'ai oublié peut être de mentionner que je souhaite faire cette manip sur un formulaire, et d'après se que j'ai vu sur le Net, la phrase que tu ma donné va dans after_Update, et il y'aurait une autre phrase a mettre dans Current_Event du Formulaire lui même ......lol :p
En attendant ta réponse je vais faire des testes :D
Merci de ta patience avec mon ignorance :p
J'ai oublié peut être de mentionner que je souhaite faire cette manip sur un formulaire, et d'après se que j'ai vu sur le Net, la phrase que tu ma donné va dans after_Update, et il y'aurait une autre phrase a mettre dans Current_Event du Formulaire lui même ......lol :p
En attendant ta réponse je vais faire des testes :D
Merci de ta patience avec mon ignorance :p
Je pense qu'une image vaut mille mots lolll .....ca marche toujours pas :
voila ce que j'ai mis dans after_update :
https://www.casimages.com/i/130514085804707878.jpg.html
Et voilà ce que j'ai mi dans Current_Event :
https://www.casimages.com/i/130514085929898675.jpg.html
voila ce que j'ai mis dans after_update :
https://www.casimages.com/i/130514085804707878.jpg.html
Et voilà ce que j'ai mi dans Current_Event :
https://www.casimages.com/i/130514085929898675.jpg.html
Bonjour,
Pour ce que tu envoies le bug n'est pas du tout étonnant. Ton écriture montre des grosses fautes de syntaxes sans aller plus avant dans la fonction désirée.
Alors il faut reprendre au début, excuse-moi si j'écris des choses que tu connais déjà
1) le mot "Me" est un mot réservé qui indique à VBA que tu te réfères au formulaire ou à l'état actif, il ne doit pas être précédé d"un " . " comme tu as fais, cela signifie autre chose de particulier.
Je me rends compte avec horreur que mon écriture comprenait également un point en début de ligne, mais c'était parce que je tiens à toujours ménager un décalage entre les "IF" et les propositions qui suivent "then" pour garder une vue claire des enchainements, et comme sur CCM je n'ai tjrs pas réussi à reproduire les écarts de début de ligne je mets un point pour que mes espaces soient pris en compte. Mais je répète: il ne faut PAS de " . " avant "Me"
2) C'est juste une explication parce qu'il n'y a pas de faute sur le point suivant. Différence entre les " . " et les " ! ".
Les points simples " . " doivent précéder les mots réservés de propriétés des formulaires, sous-formulaires, contrôles, comme ici "enable" ou "locked"
Les points d'exclamations précédent les noms propres des objets, donnés par le concepteur de la base
3) Conseil à mon sens important: ne pas hésiter à utiliser la touche F1 qui t'ouvre le didacticiel Access-MS, il y a là une mine d'infos proprement inépuisable.
Ainsi pour s'y retrouver dans l'enchainement des évènements et la signification des appellation donner par Access, ton place ton pointeur sur la propriété évènementielle que tu crois t'intéresser (ou tu sélectionnes un mot de ton code), + Touche F1, la fenêtre du didacticiel s'ouvre à la page appelée et t'indique sa place dans la suite des évènements. Dans le genre, vu le nombre des évènements possibles, tu ne trouveras rien de meilleur nulle part.
Pour ce qui est de ta préoccupation, la réponse est "Oui", l'évènement pour entrer le morceau de code est bien "AprèsMàJ"
Il faut aussi savoir que lorsque tu changes la propriété d'un contrôle dans un formulaire, tu changes cette propriété pour ce formulaire pour tous les enregistrements. Ce qui des fois pose des problèmes quand tu changes d'enregistrement, parce qu'alors il te faut une procédure qui réactualise toutes tes propriétés à chaque changement d'enregistrement. C'est grosso modo ce que tu as fait en créant un petit code valable pour "SurActualisation".
J'ai été long. Donc en résumé, reprend le code que tu as mais sans les points " . " en début de ligne, et cela devrait bien se passer.
Pour vérifier comment VBA travaille, je ne peux que te conseiller de mettre un point d'arrêt en début de procédure, et puis de suivre pas à pas comment le ligne de code s'enchainent. Conseil valable tout le temps.
Bonne suite, en espèrant que ton prochain message annoncera que tout passe au poil!
Pour ce que tu envoies le bug n'est pas du tout étonnant. Ton écriture montre des grosses fautes de syntaxes sans aller plus avant dans la fonction désirée.
Alors il faut reprendre au début, excuse-moi si j'écris des choses que tu connais déjà
1) le mot "Me" est un mot réservé qui indique à VBA que tu te réfères au formulaire ou à l'état actif, il ne doit pas être précédé d"un " . " comme tu as fais, cela signifie autre chose de particulier.
Je me rends compte avec horreur que mon écriture comprenait également un point en début de ligne, mais c'était parce que je tiens à toujours ménager un décalage entre les "IF" et les propositions qui suivent "then" pour garder une vue claire des enchainements, et comme sur CCM je n'ai tjrs pas réussi à reproduire les écarts de début de ligne je mets un point pour que mes espaces soient pris en compte. Mais je répète: il ne faut PAS de " . " avant "Me"
2) C'est juste une explication parce qu'il n'y a pas de faute sur le point suivant. Différence entre les " . " et les " ! ".
Les points simples " . " doivent précéder les mots réservés de propriétés des formulaires, sous-formulaires, contrôles, comme ici "enable" ou "locked"
Les points d'exclamations précédent les noms propres des objets, donnés par le concepteur de la base
3) Conseil à mon sens important: ne pas hésiter à utiliser la touche F1 qui t'ouvre le didacticiel Access-MS, il y a là une mine d'infos proprement inépuisable.
Ainsi pour s'y retrouver dans l'enchainement des évènements et la signification des appellation donner par Access, ton place ton pointeur sur la propriété évènementielle que tu crois t'intéresser (ou tu sélectionnes un mot de ton code), + Touche F1, la fenêtre du didacticiel s'ouvre à la page appelée et t'indique sa place dans la suite des évènements. Dans le genre, vu le nombre des évènements possibles, tu ne trouveras rien de meilleur nulle part.
Pour ce qui est de ta préoccupation, la réponse est "Oui", l'évènement pour entrer le morceau de code est bien "AprèsMàJ"
Il faut aussi savoir que lorsque tu changes la propriété d'un contrôle dans un formulaire, tu changes cette propriété pour ce formulaire pour tous les enregistrements. Ce qui des fois pose des problèmes quand tu changes d'enregistrement, parce qu'alors il te faut une procédure qui réactualise toutes tes propriétés à chaque changement d'enregistrement. C'est grosso modo ce que tu as fait en créant un petit code valable pour "SurActualisation".
J'ai été long. Donc en résumé, reprend le code que tu as mais sans les points " . " en début de ligne, et cela devrait bien se passer.
Pour vérifier comment VBA travaille, je ne peux que te conseiller de mettre un point d'arrêt en début de procédure, et puis de suivre pas à pas comment le ligne de code s'enchainent. Conseil valable tout le temps.
Bonne suite, en espèrant que ton prochain message annoncera que tout passe au poil!
Bonsoir Tessel :)
Je ne saurais te remercier pour toutes ces explication, C'est super cool de ta part d'avoir pris le temps de tout m'expliquer comme tu la fait, C'est Génial :)
Je te l'avait deja dit, je ne suis pas une lumière en code, je ne suis qu'un infirmier qui tente tant bien que mal de trouver une solution qui me fera gagner du temps quant a la saisie de toutes ces activités lolll .......Pour être tout a fait honnête, je ne sais meme pas se que chaque mot veut dire dans ce code, mais j'aime bien faire de la gym a mes neuronnes de temps a autre, histoire de tout tester ! :D
Hier, j'ai essayé de nommer ou se trouvait le control dans le code, étape par étape : Form_name!.Control_name! = "Accidents du travail then ....etc mais rien n'y fait ......en plus j'ignore ce qu'il faut mettre dans Current_Event du formulaire j'ai beau cherché sur le net je ne trouve pas mon cas spécifique, je ne trouve que les autres cas ou des gens veulent carrément cacher les champs qui receveront les valeurs !
L'aide de monAccess ne fonctionne pas, dés que j'appuis sur F1 tout part en cacachuettes lolll.....je pense que j'aurais beaucoup plus de chance de trouver une solution sur un Forum Anglais loll
En attendant, je vais reprendre le code depuis le début pour trouver ou ça coince :D
Merci beaucoup Tessel, je pense que Blux a été gavé de mes questions lolll
Je ne saurais te remercier pour toutes ces explication, C'est super cool de ta part d'avoir pris le temps de tout m'expliquer comme tu la fait, C'est Génial :)
Je te l'avait deja dit, je ne suis pas une lumière en code, je ne suis qu'un infirmier qui tente tant bien que mal de trouver une solution qui me fera gagner du temps quant a la saisie de toutes ces activités lolll .......Pour être tout a fait honnête, je ne sais meme pas se que chaque mot veut dire dans ce code, mais j'aime bien faire de la gym a mes neuronnes de temps a autre, histoire de tout tester ! :D
Hier, j'ai essayé de nommer ou se trouvait le control dans le code, étape par étape : Form_name!.Control_name! = "Accidents du travail then ....etc mais rien n'y fait ......en plus j'ignore ce qu'il faut mettre dans Current_Event du formulaire j'ai beau cherché sur le net je ne trouve pas mon cas spécifique, je ne trouve que les autres cas ou des gens veulent carrément cacher les champs qui receveront les valeurs !
L'aide de monAccess ne fonctionne pas, dés que j'appuis sur F1 tout part en cacachuettes lolll.....je pense que j'aurais beaucoup plus de chance de trouver une solution sur un Forum Anglais loll
En attendant, je vais reprendre le code depuis le début pour trouver ou ça coince :D
Merci beaucoup Tessel, je pense que Blux a été gavé de mes questions lolll
Bonsoir Collègue! Tu sais, Je ne suis pas un phare non-plus, juste un IDE comme toi, qui s'est acharné parce que, du jour où j'ai découvert ACCESS, j'ai trouvé ça tellement génial que j'ai passé des milliers d'heures dessus.
Donc, reprenons les conseils en attendant la réponse que tu souhaites.
1) N'essayes pas d'aller trop vite. En l'occurrence, je crois qu'avant d'attaquer les modules VBA tu devrais bien apprendre à bien faire les Macros. Après il existe un traducteur des macros en VBA, qui te permet de reprendre et de suivre les actions que tu as goupillées pour tes objets. C'est comme ça que j'ai fait, et il m'arrive encore de retourner sur le générateur de macros pour voir comment s'écrit une action nouvelle que je ne maîtrise pas. En plus c'est bien plus valorisant parce qu'on obtient rapidement et intuitivement un résultat correct pour des actions simples; et cela sans patauger pendant 3 jours.
2) Des images que tu envoies, je suis désolé de te dire que l'écriture est encore déficiente. De toute façon, en informatique, ou c'est correct et ça passe, ou ça ne l'est pas et ça plante. C'est pas compliqué: ou bon, ou pas bon.
Donc, tu écrit:
L'écriture correcte aurait dû être:
Explications:
a) Tu dois avoir autant de "End If" que de "If ..." . "If ...." ouvre la boucle conditionnelle, il faut donc qu'elle soit fermée à sa fin. D'autre part, il ne faut pas confondre "If..." avec "ElseIf ..." . "ElseIf ..." prolonge la boucle avec une autre conditionnelle; et enfin "Else ..." inclut tous les autres cas.
Il faut te figurer en français:
Si .... alors
.... faire ceci
Ou bien si .... alors
.... faire cela
Sinon
.... faire encore autre chose
Fin des Si
Bien évidemment tu peux mettre autant de "ElseIf... " que tu veux mais il faut savoir que dès que VBA en a trouvé un valide, il exécute l'action indiquée, et puis saute à la fin; il ne faut donc pas espérer qu'après la 1ère action il ira chercher une autre plus bas. Pour ça, soit il faut des boucles "If ..." imbriquées, mais sans entre-chevauchement, soit une autre boucle complètement en-dessous de la 1ère.
3) Les guillemets et les crochets:
Toutes les valeurs doivent être mises entre guillemets. Quand tu écris la ligne:
Pour VBA, Domestique, écrit comme ça, n'est pas une valeur, qu'il a reçu du contrôle, mais une variable ou un paramètre qui aurait dû figuré dans le cour du code. Comme il n'y a aucune ligne du genre "Domestique = "çaçaça""
Domestique est une variable quelconque dont la valeur est nulle quand il la rencontre.
Idem pour Du_Travail
Je te ferais remarquer que dans le modèle envoyé avant hier, j'avais mis les guillemets.
Enfin les crochets. Evite de t'abstenir d'en mettre; tu te prépares des soucis. Tu ne peux le faire que si les mots sont continus, sans espace. D'où aussi l'intérêt de toujours donner des noms sans espace aux objets.
4) Détail technique. Il n'est pas du tout indispensable d'envoyé une vue d'écran pour envoyer un bout de code. Un copier/coller sur le post CCM est bien préférable. En plus mon McAfee n'aime vraiment pas trop Casimages.com qui ajoute des pages indésirables.
Si tout ça ne va toujours pas, envoie plutôt un extrait de la base via cjoint.com , ce sera plus facile.
En espérant avoir pu t'aider.
Donc, reprenons les conseils en attendant la réponse que tu souhaites.
1) N'essayes pas d'aller trop vite. En l'occurrence, je crois qu'avant d'attaquer les modules VBA tu devrais bien apprendre à bien faire les Macros. Après il existe un traducteur des macros en VBA, qui te permet de reprendre et de suivre les actions que tu as goupillées pour tes objets. C'est comme ça que j'ai fait, et il m'arrive encore de retourner sur le générateur de macros pour voir comment s'écrit une action nouvelle que je ne maîtrise pas. En plus c'est bien plus valorisant parce qu'on obtient rapidement et intuitivement un résultat correct pour des actions simples; et cela sans patauger pendant 3 jours.
2) Des images que tu envoies, je suis désolé de te dire que l'écriture est encore déficiente. De toute façon, en informatique, ou c'est correct et ça passe, ou ça ne l'est pas et ça plante. C'est pas compliqué: ou bon, ou pas bon.
Donc, tu écrit:
If Me!Accidents = Domestique then Me!Ctl18a35ans.Enable= False Else If Me!Accidents =Du_Travail then Me!Ctl18a35ans.Enable= True End If
L'écriture correcte aurait dû être:
If Me![Accidents] = "Domestique" then Me![Ctl18a35ans].Enable= False ElseIf Me![Accidents] ="Du_Travail" then Me![Ctl18a35ans].Enable= True End If
Explications:
a) Tu dois avoir autant de "End If" que de "If ..." . "If ...." ouvre la boucle conditionnelle, il faut donc qu'elle soit fermée à sa fin. D'autre part, il ne faut pas confondre "If..." avec "ElseIf ..." . "ElseIf ..." prolonge la boucle avec une autre conditionnelle; et enfin "Else ..." inclut tous les autres cas.
Il faut te figurer en français:
Si .... alors
.... faire ceci
Ou bien si .... alors
.... faire cela
Sinon
.... faire encore autre chose
Fin des Si
Bien évidemment tu peux mettre autant de "ElseIf... " que tu veux mais il faut savoir que dès que VBA en a trouvé un valide, il exécute l'action indiquée, et puis saute à la fin; il ne faut donc pas espérer qu'après la 1ère action il ira chercher une autre plus bas. Pour ça, soit il faut des boucles "If ..." imbriquées, mais sans entre-chevauchement, soit une autre boucle complètement en-dessous de la 1ère.
3) Les guillemets et les crochets:
Toutes les valeurs doivent être mises entre guillemets. Quand tu écris la ligne:
If Me!Accidents = Domestique'(sans guillemets à Domestique)
Pour VBA, Domestique, écrit comme ça, n'est pas une valeur, qu'il a reçu du contrôle, mais une variable ou un paramètre qui aurait dû figuré dans le cour du code. Comme il n'y a aucune ligne du genre "Domestique = "çaçaça""
Domestique est une variable quelconque dont la valeur est nulle quand il la rencontre.
Idem pour Du_Travail
Je te ferais remarquer que dans le modèle envoyé avant hier, j'avais mis les guillemets.
Enfin les crochets. Evite de t'abstenir d'en mettre; tu te prépares des soucis. Tu ne peux le faire que si les mots sont continus, sans espace. D'où aussi l'intérêt de toujours donner des noms sans espace aux objets.
4) Détail technique. Il n'est pas du tout indispensable d'envoyé une vue d'écran pour envoyer un bout de code. Un copier/coller sur le post CCM est bien préférable. En plus mon McAfee n'aime vraiment pas trop Casimages.com qui ajoute des pages indésirables.
Si tout ça ne va toujours pas, envoie plutôt un extrait de la base via cjoint.com , ce sera plus facile.
En espérant avoir pu t'aider.
Bonsoir Collègue ! :D
C'est vraiment super ce que tu me raconte là, j'ai pris grand plaisir a le lire et a l'analyser phrase par phrase, c'est vrai qu'Access est vraiment pas mal, je me suis dit comment j'ai pu passer a coté depuis des années maintenant ! :p
Pour l'instant, j'essaye juste de cerner certains points pour finir ma base de données car le temps m'est vraiment compté, et je dois rendre beaucoup de travail dans tres peu de temps, les requêtes sont vraiment un délice a utiliser, j'ai fait des testes simples et elles me sortent exactement se que je cherche avec exactitude car mes calcules ne sont pas très compliqués! comme tu a pu le constater avec le Fichier Excel que j'ai posté l'autre fois, j'ai envie de zapper Excel car Access me donne la possibilité de tout faire en un seul endroit, sans me repeter et d'un seul coup :)
Pour VBA j'ai plein de cours que je vais eplucher dés cet été, j'irai pas a pas pour ne rien rater, j'ai même telechargé des Cours vidéos, ça s'annonce Assez chargé lolll
Pour ce qui est de mon codage, au debut je cherchait un truc assez simple en faite, comme tu la vu dans le fichier Excel de l'autre fois, l'avant dernier tableau se revele être un tantinet récalcitrant car la tranche d'age n'est pas la même pour les trois activité que j'ai mis dans la combo box, je voulais que le Formulaire en s'ouvrant affiche des champs activé et d'autres pas......ceux qui ne sont pas activé : 18a35ans - 36 a 45 ans - 46 a 65 - et enfin 65 ans et plus ...seront activés pour recevoir des chiffres dés que l'utilisateur choisisse dans la combo box, les accidents du travail......si cette manip n'est pas possible, alors peut être cacher carrément les cases et ne les rendres visible que lorsque le choix adéquat (C'est a dire Accidents du travail) soit séléctionné dans la combo box.......Mais VBA semble ne pas apprécier la chose lollll
Pour faire court : voici la base jointe si tu veut y jeter un coup d'oeil de près et dit moi se que tu en pense loll
Merci infiniment pour tes explications, ça va beaucoup m'aider :)
https://www.cjoint.com/c/CEqrV5fFCDS
C'est vraiment super ce que tu me raconte là, j'ai pris grand plaisir a le lire et a l'analyser phrase par phrase, c'est vrai qu'Access est vraiment pas mal, je me suis dit comment j'ai pu passer a coté depuis des années maintenant ! :p
Pour l'instant, j'essaye juste de cerner certains points pour finir ma base de données car le temps m'est vraiment compté, et je dois rendre beaucoup de travail dans tres peu de temps, les requêtes sont vraiment un délice a utiliser, j'ai fait des testes simples et elles me sortent exactement se que je cherche avec exactitude car mes calcules ne sont pas très compliqués! comme tu a pu le constater avec le Fichier Excel que j'ai posté l'autre fois, j'ai envie de zapper Excel car Access me donne la possibilité de tout faire en un seul endroit, sans me repeter et d'un seul coup :)
Pour VBA j'ai plein de cours que je vais eplucher dés cet été, j'irai pas a pas pour ne rien rater, j'ai même telechargé des Cours vidéos, ça s'annonce Assez chargé lolll
Pour ce qui est de mon codage, au debut je cherchait un truc assez simple en faite, comme tu la vu dans le fichier Excel de l'autre fois, l'avant dernier tableau se revele être un tantinet récalcitrant car la tranche d'age n'est pas la même pour les trois activité que j'ai mis dans la combo box, je voulais que le Formulaire en s'ouvrant affiche des champs activé et d'autres pas......ceux qui ne sont pas activé : 18a35ans - 36 a 45 ans - 46 a 65 - et enfin 65 ans et plus ...seront activés pour recevoir des chiffres dés que l'utilisateur choisisse dans la combo box, les accidents du travail......si cette manip n'est pas possible, alors peut être cacher carrément les cases et ne les rendres visible que lorsque le choix adéquat (C'est a dire Accidents du travail) soit séléctionné dans la combo box.......Mais VBA semble ne pas apprécier la chose lollll
Pour faire court : voici la base jointe si tu veut y jeter un coup d'oeil de près et dit moi se que tu en pense loll
Merci infiniment pour tes explications, ça va beaucoup m'aider :)
https://www.cjoint.com/c/CEqrV5fFCDS
Mdrrrr Tessel, j'ai réussi a cacher la case dés que je choisi l'un des 4 choix, mais elle ne réapparait pas je sais pas trop pourquoi lolll........voilà ce que j'ai mis :
Private Sub Accidents_AfterUpdate() If Me.[Accidents] = "Domestiques" Then Me.[Ctl18a35ans].Visible = False ElseIf Me.[Accidents] = "De_La_Voie_Publique" Then Me.[Ctl18a35ans].Visible = False ElseIf Me.[Accidents] = "Coups_Et_Blessures" Then Me.[Ctl18a35ans].Visible = False ElseIf Me.[Accidents] = "Du_Travail" Then Me.[Ctl18a35ans].Visible = True End If End Sub Private Sub Form_Current() If Me.[Accidents] = "Domestiques" Then Me.[Ctl18a35ans].Visible = False ElseIf Me.[Accidents] = "De_La_Voie_Publique" Then Me.[Ctl18a35ans].Visible = False ElseIf Me.[Accidents] = "Coups_Et_Blessures" Then Me.[Ctl18a35ans].Visible = False ElseIf Me.[Accidents] = "Du_Travail" Then Me.[Ctl18a35ans].Visible = True End If End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir,
J'ai ouvert ton extrait de base. Après avoir pas mal cherché j'ai obtenu le résultat attendu. Mais, mazette!!!, les fautes étaient tellement énAAAAUUUUrmes que je ne les ai pas vu au premier regard.Tu avais écrit:
1) Il manque les guillemets à "Domestique", "De_La_Voie_Publique", "Coups_Et_Blessures", "Du_Travail". Les guillemets sont absolument indispensables pour signaler qu'il s'agit de valeur et non pas de variables ou de paramètres propres à la procédure en cours.
2) Tu écris :
3) Tu écris:
4) Ton code indique:
5) Alors à l'arrivée le code qui marche est le suivant:
Ou pour être plus simple, tu peux aussi écrire:
(ATTENTION: Toute la suite des "or" doit être sur une seule ligne jusqu'à "Then" et après une nouvelle ligne)
6) Pour voir ton code se dérouler, il faut mettre un point d'arrêt au début de la procédure quand tu as fini de l'écrire et regarder ce qui se passe. En le faisant, tu pouvais voir qu'il ne s'arrêtait pas du tout, ce qui signifie qu'aucune condition n'était remplie et donc qu'il descendait jusqu'à la fin sans effectuer aucune action.
J'ai ouvert ton extrait de base. Après avoir pas mal cherché j'ai obtenu le résultat attendu. Mais, mazette!!!, les fautes étaient tellement énAAAAUUUUrmes que je ne les ai pas vu au premier regard.Tu avais écrit:
Private Sub Form_Current() If Me.Accidents.Enabled = Domestique Then Me.Ctl18a35ans.Enabled = False ElseIf Me.Accidents.Enabled = De_La_Voie_Publique Then Me.Ctl18a35ans.Enabled = False ElseIf Me.Accidents.Enabled = Coups_Et_Blessures Then Me.Ctl18a35ans.Enabled = False ElseIf Me.Accidents.Enabled = Du_Travail Then Me.Ctl18a35ans.Enabled = True End If End Sub
1) Il manque les guillemets à "Domestique", "De_La_Voie_Publique", "Coups_Et_Blessures", "Du_Travail". Les guillemets sont absolument indispensables pour signaler qu'il s'agit de valeur et non pas de variables ou de paramètres propres à la procédure en cours.
2) Tu écris :
If Me.Accidents.Enabled = Domestique
, au lieu de:
If Me.Accidents= ....Il est évident que "Me.Accidents.Enabled" ne peut valoir "Domestique" puisque les seules valeurs admises pour .....Enable sont "True" ou "False", et que de toutes façons c'est la valeur du contrôle que tu testes. Donc il faut écrire :
If Me.Accidents= "Domestique"et les suivants pareil.
3) Tu écris:
Me.Ctl18a35ans.Enabled = Falsemais le contrôle "Ctl18a35ans" n'existe pas, le nom du contrôle en question s'appelle en réalité: "18a35ans" donc VBA ne peut pas le trouver. Il faut faire extrêmement attention au nom des objets, tables, champs, requêtes, formulaires, contrôles, etc..., sinon tu cours au plantage à chaque ligne. Le plus sûr est de chaque fois faire un copier/coller des noms pour être certain de ne pas se tromper dans la recopie.
4) Ton code indique:
ElseIf Me.Accidents.Enabled = De_La_Voie_Publique Then ...., ou pour les autres lignes:
Coups_Et_Blessures / Du_Travailmais ta liste de choix est écrite : "De La Voie Publique, Coups Et Blessures, Du Travail ", si bien que VBA ne retrouve jamais les valeurs annoncées puisqu'elles sont différentes des valeurs à chercher. Là encore, le plus sûr est de faire un copier/coller.
5) Alors à l'arrivée le code qui marche est le suivant:
Private Sub Accidents_AfterUpdate() If Me!Accidents = "Domestiques" Then Me!18a35ans.Enabled = False ElseIf Me!Accidents = "De La Voie Publique" Then Me!18a35ans.Enabled = False ElseIf Me!Accidents = "Coups Et Blessures" Then Me!18a35ans.Enabled = False ElseIf Me!Accidents = "Du Travail" Then Me!18a35ans.Enabled = True End If End Sub
Ou pour être plus simple, tu peux aussi écrire:
If Me!Accidents = "Domestiques" or Me!Accidents = "De La Voie Publique" or Me!Accidents = "Coups Et Blessures" or Me!Accidents = "Du Travail" Then Me!18a35ans.Enabled = True End If End Sub
(ATTENTION: Toute la suite des "or" doit être sur une seule ligne jusqu'à "Then" et après une nouvelle ligne)
6) Pour voir ton code se dérouler, il faut mettre un point d'arrêt au début de la procédure quand tu as fini de l'écrire et regarder ce qui se passe. En le faisant, tu pouvais voir qu'il ne s'arrêtait pas du tout, ce qui signifie qu'aucune condition n'était remplie et donc qu'il descendait jusqu'à la fin sans effectuer aucune action.
Bonjour Tessel :)
Encore une fois Mille merci pour tes explications, c'est vrai qu'a force de ne pas obtenir le moindre résultat j'ai du appauvrir mon code de tout, puis progressivement j'ajoutais les choses comme les " " comme tu me le disais avant, et je pense que j'ai envoyé le morceau de base avant d'y avoir apporté des modifications.......Enfin bon, bref, le code que tu ma donné semble fonctionner a merveille, c'est celui là :
le Blem qui reste en suspond c'est : comment désactiver ce champ dés l'ouverture du formulaire, et ne le rendre activé que lorsque je selectionne "Du Travail" dans la combo box ?
Ensuite, es ce que je peut faire la même chose avec les autres controles, (dans le carré superieur bleu que tu vois dans la DB que j'ai envoyé hier) lorsque "Du Travail" est choisie dans la combo box ? ou dois aller le code dans ce cas ?
Merci beaucoup, je sais que mes questions deviennent trop collantes lolll.....mais j'ai vraiment envie de réussir cette DB :D
Encore une fois Mille merci pour tes explications, c'est vrai qu'a force de ne pas obtenir le moindre résultat j'ai du appauvrir mon code de tout, puis progressivement j'ajoutais les choses comme les " " comme tu me le disais avant, et je pense que j'ai envoyé le morceau de base avant d'y avoir apporté des modifications.......Enfin bon, bref, le code que tu ma donné semble fonctionner a merveille, c'est celui là :
5) Alors à l'arrivée le code qui marche est le suivant: Private Sub Accidents_AfterUpdate() If Me!Accidents = "Domestiques" Then Me!18a35ans.Enabled = False ElseIf Me!Accidents = "De La Voie Publique" Then Me!18a35ans.Enabled = False ElseIf Me!Accidents = "Coups Et Blessures" Then Me!18a35ans.Enabled = False ElseIf Me!Accidents = "Du Travail" Then Me!18a35ans.Enabled = True End If End Sub
le Blem qui reste en suspond c'est : comment désactiver ce champ dés l'ouverture du formulaire, et ne le rendre activé que lorsque je selectionne "Du Travail" dans la combo box ?
Ensuite, es ce que je peut faire la même chose avec les autres controles, (dans le carré superieur bleu que tu vois dans la DB que j'ai envoyé hier) lorsque "Du Travail" est choisie dans la combo box ? ou dois aller le code dans ce cas ?
Merci beaucoup, je sais que mes questions deviennent trop collantes lolll.....mais j'ai vraiment envie de réussir cette DB :D
j'ai modifié le code pour l'intégrer a plusieurs formulaires, et ça marche super bien :D
merci Tessel :)