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 18/01/2012, 17h24   #1
Invité de passage
 
Inscription : novembre 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 15
Points : 1
Points : 1
Par défaut [AC-2010] Comment définir avec un code VBA l'accès en écriture de plusieurs champs dans un formulaire

Bonjour,

J'ai un sous-formulaire représenté par l'image jointe.

Le premier champs "Gestion :" donne accès à une liste de choix.

Je souhaite pouvoir bloquer l'accès et l'écriture des autres champs liste ou texte de ce formulaire si la réponse n'est pas "Unité de gestion gérable".

Est-ce possible de paramétrer ceci grace à un code VBA ?

Merci par avance.
Images attachées
Type de fichier : jpg formulaire.JPG (17,9 Ko, 6 affichages)
qr1687 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 17h43   #2
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 076
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 076
Points : 4 398
Points : 4 398
Envoyer un message via Skype™ à GAYOT
Bonjour
Une solution consiste sur l'ouverture du formulaire à avoir les différents contrôles, avec leur propriété "Enabled" à False.
Puis sur l'évènement Après Mise à jour de la liste de choix faire une condition.

En voici le principe:

Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub ListeChoix_Choix_AfterUpdate()
    If  Me.Liste_Choix.Value = "Unité de gestion gérable" Then
        Me.NomControl1.Enabled = True
        Me.NomControl2.Enabled = True
        ......
    Else
        Me.NomControl1.Enabled = False
        Me.NomControl2.Enabled = False
        ...
    End If
End Sub
Dans ce cas les contrôles concernés seront grisés et non actifs tant que la zone de liste n'aura pas la bonne valeur.
C'est une solution...à adapter bien sûr..
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 11h53   #3
Invité de passage
 
Inscription : novembre 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 15
Points : 1
Points : 1
Bonjour,

J'ai adapté le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub GESTION_AfterUpdate()
If Me.GESTION.Value = "Unité de gestion gérable" Then
        Me.PP_OBJECTIF.Enabled = True
        Me.COUPE_PROGRAMMEE.Enabled = True
        Me.ANNEE_PROGR_COUPE.Enabled = True
        Me.VBO_RECOLTABLE.Enabled = True
        Me.VBI_RECOLTABLE.Enabled = True
        Me.ANNEE_REAL_COUPE.Enabled = True
        Me.RETARD.Enabled = True
    Else
        Me.PP_OBJECTIF.Enabled = False
        Me.COUPE_PROGRAMMEE.Enabled = False
        Me.ANNEE_PROGR_COUPE.Enabled = False
        Me.VBO_RECOLTABLE.Enabled = False
        Me.VBI_RECOLTABLE.Enabled = False
        Me.ANNEE_REAL_COUPE.Enabled = False
        Me.RETARD.Enabled = False
    End If
End Sub
Mais quand je retourne sur mon formulaire, il m'indique un message d'erreur (en PJ)

Je ne comprend pas pourquoi il me demande d'accéder à une macro.

Merci pour votre éclairage.

Citation:
Envoyé par GAYOT Voir le message
Bonjour
Une solution consiste sur l'ouverture du formulaire à avoir les différents contrôles, avec leur propriété "Enabled" à False.
Puis sur l'évènement Après Mise à jour de la liste de choix faire une condition.

En voici le principe:

Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub ListeChoix_Choix_AfterUpdate()
    If  Me.Liste_Choix.Value = "Unité de gestion gérable" Then
        Me.NomControl1.Enabled = True
        Me.NomControl2.Enabled = True
        ......
    Else
        Me.NomControl1.Enabled = False
        Me.NomControl2.Enabled = False
        ...
    End If
End Sub
Dans ce cas les contrôles concernés seront grisés et non actifs tant que la zone de liste n'aura pas la bonne valeur.
C'est une solution...à adapter bien sûr..
Images attachées
Type de fichier : jpg erreur.JPG (41,9 Ko, 5 affichages)
qr1687 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 16h27   #4
Invité de passage
 
Inscription : novembre 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 15
Points : 1
Points : 1
Par défaut Suite

Bonjour,

J'ai enfin résolu mon problème de code. Cela fonctionne.

J'ai un nouveau problème :

C'est un sous-formulaire et si un des enregistrements est différent de "unité de gestion gérable" tous les champs de tous les enregistrements se grisent.

Est-ce qu'il faut attacher un nouveau code à l'identifiant de l'enregistrement ?

Merci
qr1687 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h48.


 
 
 
 
Partenaires

Hébergement Web