IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

[AC-2010] Comment définir avec un code VBA l'accès en écriture de plusieurs champs dans un formulaire


Sujet :

IHM

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 26
    Points : 14
    Points
    14
    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 Images attachées  

  2. #2
    Invité
    Invité(e)
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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..

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    J'ai adapté le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 Images attachées  

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 26
    Points : 14
    Points
    14
    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

Discussions similaires

  1. Comment supprimer plusieurs champs dans un formulaire?
    Par AurelienNF dans le forum Langage
    Réponses: 13
    Dernier message: 12/03/2011, 16h27
  2. Modifier le mdw de sécurité avec du code vba?
    Par Hydex dans le forum Sécurité
    Réponses: 6
    Dernier message: 07/07/2007, 18h06
  3. Faire varier les plages d'un graphique avec du code vba?
    Par Hydex dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/07/2007, 15h19
  4. Réponses: 1
    Dernier message: 19/06/2007, 11h56
  5. Définir marge par code VBA
    Par tamyme dans le forum Access
    Réponses: 2
    Dernier message: 10/03/2006, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo