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

Macros et VBA Excel Discussion :

CODE pour piloter l'état des cases à cocher et verrouillage


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2025
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2025
    Messages : 3
    Par défaut CODE pour piloter l'état des cases à cocher et verrouillage
    Bonjour à tous,

    Débutant en VBA je me permet de solliciter votre aide pour réussir a a piloter l'état de certaines case a cocher dans une feuille excel et si possible :

    Contexte :

    Mes cases à cocher sont des contrôles de formulaire, et sont directement placée dans ma feuille excel.
    J'ai joints une capture d'écran exemple pour décrire mon problème, il faudra ensuite que je transpose à plus de cas.

    Dans mon cas j'aimerais travailler avec plusieurs règles :
    Exemple si je clique sur les cases "Présence Porte 1" puis "Présence Porte 2" je souhaite forcer l'état de mes cases à cocher "Présence Trappe 1" et "Présence Trappe 2" à 0 et si possible les verrouiller tant que l'état des mes cases à cocher sur les portes n'a pas changé.
    Si "Présence Porte 1" reste à 1 et "Présence Porte 2" passe à 0 suite à un clic alors les case à cocher des Trappes redeviennent cliquable.
    J'aimerais qu'à chaque clic sur n'importe quelle case l'état de toutes mes cases à cocher et leur verrouillage sois mis à jour suivant condition IF que j'aurais écris.

    D'après ce que j'ai lu sur les forums pour les verrouillages de case à cocher il faudrait que je les remplace par des case à cocher contrôle activeX, est-ce vrai ?

    J'espère avoir été clair dans mon explication et comme je suis plutôt débutant en VBA je n'ai pas fait ça depuis bien longtemps n'hésiter pas à me confirmer où je dois insérer le code

    Bonne journée à vous.
    Guillaume.
    Images attachées Images attachées  

  2. #2
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 509
    Par défaut
    Bonjour,

    Si j'ai bien tout compris, et si l'on considère le nom des case à cocher :

    • PresencePorte1
    • PresencePorte2
    • PresenceTrappe1
    • PresenceTrappe2


    Ajouter un module, coller le code ci-dessous dedans.
    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
    20
    21
    22
    23
    24
    Option Explicit
     
    Sub CheckBoxControl()
        Dim cb1 As CheckBox, cb2 As CheckBox, cb3 As CheckBox, cb4 As CheckBox
     
        Set cb1 = Feuil1.CheckBoxes("PresencePorte1")
        Set cb2 = Feuil1.CheckBoxes("PresencePorte2")
        Set cb3 = Feuil1.CheckBoxes("PresenceTrappe1")
        Set cb4 = Feuil1.CheckBoxes("PresenceTrappe2")
     
        If cb1.Value = xlOn And cb2.Value = xlOn Then
            cb3.Value = xlOff
            cb4.Value = xlOff
            cb3.Enabled = False
            cb4.Enabled = False
        ElseIf cb1.Value = xlOn And cb2.Value = xlOff Then
            cb3.Enabled = True
            cb4.Enabled = True
    ' // A voir si utile
        ElseIf cb1.Value = xlOn Then
            cb3.Enabled = True
            cb4.Enabled = True
        End If
    End Sub
    Ensuite vous attribuez la même macro à toute les case à cocher cela devrait le faire.

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2025
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2025
    Messages : 3
    Par défaut
    Bonjour,

    Merci pour votre retour.

    J'ai tenté de récupérer le code et de le transformer/compléter selon mes règles réelles et au début j'ai cru que c'était ok mais finalement non.
    Voici mon code :

    Sub CheckBoxControl()
    Dim cb1 As CheckBox, cb2 As CheckBox, cb3 As CheckBox, cb4 As CheckBox, cb5 As CheckBox, cb6 As CheckBox, cb7 As CheckBox, cb8 As CheckBox, cb9 As CheckBox, cb10 As CheckBox, cb11 As CheckBox, cb12 As CheckBox, cb13 As CheckBox, cb14 As CheckBox

    Set cb1 = Feuil1.CheckBoxes("Présence Porte 1 D")
    Set cb2 = Feuil1.CheckBoxes("Présence Porte 2 D")
    Set cb3 = Feuil1.CheckBoxes("Présence Trappe 1 D")
    Set cb4 = Feuil1.CheckBoxes("Présence Trappe 2 D")
    Set cb5 = Feuil1.CheckBoxes("Présence Traversée Cloison 1 D")
    Set cb6 = Feuil1.CheckBoxes("Présence Traversée Cloison 2 D")
    Set cb7 = Feuil1.CheckBoxes("Présence Traversée Cloison 3 D")
    Set cb8 = Feuil1.CheckBoxes("Présence Porte 1 G")
    Set cb9 = Feuil1.CheckBoxes("Présence Porte 2 G")
    Set cb10 = Feuil1.CheckBoxes("Présence Trappe 1 G")
    Set cb11 = Feuil1.CheckBoxes("Présence Trappe 2 G")
    Set cb12 = Feuil1.CheckBoxes("Présence Traversée Cloison 1 G")
    Set cb13 = Feuil1.CheckBoxes("Présence Traversée Cloison 2 G")
    Set cb14 = Feuil1.CheckBoxes("Présence Traversée Cloison 3 G")


    If cb8.Value = xlOn Or cb9.Value = xlOn Then
    cb3.Enabled = True
    cb4.Enabled = True
    Else
    cb3.Value = xlOff
    cb4.Value = xlOff
    cb3.Enabled = False
    cb4.Enabled = False
    ' // A voir si utile
    ' ElseIf cb1.Value = xlOn Then
    ' cb3.Enabled = True
    ' cb4.Enabled = True
    End If
    End Sub

    Ce que je cherchais à faire :
    "Présence Trappe 1 D" et "Présence Trappe 2 D" ne sont cliquable seulement si "Présence Porte 1 G" ou "Présence Porte 2 G" sont cochées. Dans tous les autres cas "Présence Trappe 1 D" et "Présence Trappe 2 D" passent en off et ne sont plus cliquables.
    Depuis que j'ai inséré et modifié le code les cases à cocher "Présence Trappe 1 D" et "Présence Trappe 2 D" ne sont plus du tout sélectionnables. Même si je clique sur "Présence Porte 1 G" ou "Présence Porte 2 G".
    Même en plaçant le code en commentaire pour annuler les actions, rien à faire.
    Je dois très probablement mal intégrer ce code c'est pourquoi j'ai ajouté une capture d'écran pour montré où je l'ai inséré.
    Peut-être manque-t-il un élément pour qu'il lise ce code à chacun de mes clics peut importe la case à cocher que je sélectionne ?
    Images attachées Images attachées  

  4. #4
    Candidat au Club
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2025
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2025
    Messages : 3
    Par défaut
    Ok j'ai compris, je n'avais pas affecté la macro nouvellement créée à chacune de mes cases à cocher.
    ça semble mieux fonctionner.
    Je continue de tester avec mes différentes règles.

    Encore merci pour le tuyau.

  5. #5
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 189
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    si les états verrouillés/déverrouillés des contrôles se multiplient, il peut être conseillé de lister les états dans un tableau du type

    et envisager une macro qui lirait la liste en donnant le nom d'un état en entrée pour appliquer contrôle par contrôle ce qu'on veut

    Nom : etats.png
Affichages : 74
Taille : 19,6 Ko

Discussions similaires

  1. [AC-2013] Code pour modifier le label des boutons d'une boite de dialogue
    Par rag83 dans le forum VBA Access
    Réponses: 3
    Dernier message: 08/12/2015, 21h49
  2. Code pour forcer l'activiation des macros ?
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/05/2011, 18h39
  3. Réponses: 8
    Dernier message: 14/09/2006, 16h43
  4. [VBA -A]Code pour répondre au question des msg d'alertes
    Par soad029 dans le forum VBA Access
    Réponses: 8
    Dernier message: 23/03/2006, 12h21
  5. [javac] code pour lancer la compilation des classes
    Par viena dans le forum Général Java
    Réponses: 6
    Dernier message: 19/07/2004, 17h41

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