Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 25/07/2011, 14h57   #1
Invité de passage
 
Homme Aurélien Marionneau
Responsable sécurité
Inscription : juillet 2011
Messages : 14
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Marionneau
Localisation : France

Informations professionnelles :
Activité : Responsable sécurité
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 14
Points : 3
Points : 3
Par défaut Griser un champ selon données sélectionner dans ma liste déroulante.

Bonjour à tous et merci d'avance pour vos réponses.

J'ai crée pour ma boite une application pour saisir des visites dans une zone contrôlée.

Dans mon formulaire, j'ai une liste déroulante dénommée "N°badge" auquel je peux sélectionner soit un numéro de badge soit "dosimètre".
Je voudrais que lorsque je sélectionne un n° de badge seul, les champs 1 et 2 soient grisés et inactifs et que lorsque je saisis "dosimètre" les champs 1 et 2 deviennent clairs.

Je bloque depuis plusieurs jours. Merci pour votre aide.
marionneau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 16h08   #2
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84
Bonjour,

Il te suffit d'ajouter l'évènement après maj:

Code :
1
2
3
4
5
6
Private Sub N°badge_AfterUpdate()
    Dim isDosimetre As Boolean
    isDosimetre = "dosimètre" = N°badge
    Champs1.Enabled = isDosimetre
    Champs2.Enabled = isDosimetre
End Sub
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 17h17   #3
Invité de passage
 
Homme Aurélien Marionneau
Responsable sécurité
Inscription : juillet 2011
Messages : 14
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Marionneau
Localisation : France

Informations professionnelles :
Activité : Responsable sécurité
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 14
Points : 3
Points : 3
Merci,

Le problème est que maintenant les champs 1 et 2 sont grisés même si je sélectionne "dosimètre" dans ma liste déroulante "N° badge"

Est ce que j'ai oublié un paramètre?
marionneau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 09h35   #4
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84
non, si "dosimètre" est bien écrit tel quel avec accent, sans espaces (en début ou en fin) ni majuscules ca doit fonctionner.

pour plus de sureté essaye:

Code :
1
2
3
4
5
6
Private Sub N°badge_AfterUpdate()
    Dim isDosimetre As Boolean
    isDosimetre = "dosimètre" = LCase(Trim(N°badge))
    Champs1.Enabled = isDosimetre
    Champs2.Enabled = isDosimetre
End Sub
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 12h42   #5
Invité de passage
 
Homme Aurélien Marionneau
Responsable sécurité
Inscription : juillet 2011
Messages : 14
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Marionneau
Localisation : France

Informations professionnelles :
Activité : Responsable sécurité
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 14
Points : 3
Points : 3
Merci cela fonctionne, il s'agissait d'une erreur de majuscule, autant, pour moi.

J'ai créer 10 autres dosimétres ou les champs 1 et 2 doivent étre dégriser mais un message d'erreur apparait. Comment je peux mettre plusieurs fois ce même code alors que j'ai changé le "dosimetre" en "dosimetre_01" ..etc ?
marionneau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 14h06   #6
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84
Comme ceci:

Code :
1
2
3
4
5
6
Private Sub N°badge_AfterUpdate()
    Dim isDosimetre As Boolean
    isDosimetre = "dosimetre" = LCase(Left(Trim(N°badge), 9))
    Champs1.Enabled = isDosimetre
    Champs2.Enabled = isDosimetre
End Sub
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h29   #7
Invité de passage
 
Homme Aurélien Marionneau
Responsable sécurité
Inscription : juillet 2011
Messages : 14
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Marionneau
Localisation : France

Informations professionnelles :
Activité : Responsable sécurité
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 14
Points : 3
Points : 3
Cela ne fonctionne pas, l'erreur d'éxecution '424' apparait.

Je vais préciser ma situation pour être plus clair:

J'ai une liste déroulante pouvant proposer des chiffres de 12 à 30 correspondant aux n° des badges , ceux ci n'ont pas besoin que l'on renseigne les champs 1 & 2,
par contre, si je sélectionne "dosimetre_01" ou "dosimetre_02" etc jusqu'au 11eme, je dois renseigner les champs 1 & 2.

Si cela peut aider,

encore merci.
marionneau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h36   #8
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84
oui, j'avais bien compris, ca devrait fonctionner...

aurais tu renommé un Champs ou la liste déroulante N°badge ou fait quelque chose d'autre?

En général le message de l'exception 424 "Object required" signifie que tu utilises un objet déclaré mais pas instancié (utilisation d'une propriété d'un objet = nothing ou ...).
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 17h20   #9
Invité de passage
 
Homme Aurélien Marionneau
Responsable sécurité
Inscription : juillet 2011
Messages : 14
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Marionneau
Localisation : France

Informations professionnelles :
Activité : Responsable sécurité
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 14
Points : 3
Points : 3
J'ai renommé:
mes dosimétres en "DMC_01", "DMC_02"... jusqu'à11
mon champ 1 est devenu: Dose d'entrée
mon champ 2 est devenu: Dose sortie

et j'ai modifié le code:

Code :
1
2
3
4
5
6
7
Private Sub N°_badge_DMC_AfterUpdate()
    Dim isDMC As Boolean
    isDMC = "DMC_01" = LCase(Left(Trim(N°_badge_DMC), 10))
    Dose_d_entrée.Enabled = isDMC
    Dose_sortie.Enabled = isDMC
 
End Sub
Mais les cases se grisent pour n'importe quel selection.
marionneau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 18h07   #10
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84
Je ne comprends pas tellement ce que tu as voulu faire à cette ligne et je suis sûr que toi nonplus:

Code :
isDMC = "DMC_01" = LCase(Left(Trim(N°_badge_DMC), 10))
isDMC reçoit le résultat de la comparaison ci dessous... True si vrai, False si faux

Code :
"DMC_01" = LCase(Left(Trim(N°_badge_DMC), 10))
Je traduits ce que tu fais:
tu prends les minuscules (grâce a LCase) des 10 premiers caractères (grâce au Left(string, 10)) de la valeur de N°_badge_DMC sans les espaces éventuels de début et de fin ( grâce au Trim()) et tu le compare avec "DMC_01" qui est en majuscule et qui a comme unique partie commune avec les autres dosimetre les 3 premiers caractères...

Donc... c'est normal que le résultat de la comparaison soit toujours faux...

et donc ceci fonctionnera 1000 foi mieux:

Code :
isDMC = "DMC" = UCase(Left(Trim(N°_badge_DMC), 3))
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 18h44   #11
Invité de passage
 
Homme Aurélien Marionneau
Responsable sécurité
Inscription : juillet 2011
Messages : 14
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Marionneau
Localisation : France

Informations professionnelles :
Activité : Responsable sécurité
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 14
Points : 3
Points : 3
Tu as raison, j'étais perdu dans mes codes. En tout cas cette fois ça fonctionne et je te remercie tu temps que tu as consacré pour mon cas.
marionneau 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 12h04.


 
 
 
 
Partenaires

Hébergement Web