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 :

checkBox dynamiques événements Click à la chaîne [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut checkBox dynamiques événements Click à la chaîne
    Bonjour,

    Je crée dynamiquement une série de checkBox auxquelles j'associe (à chaque fois) une classe permettant de gérer l'événement Click sur ces dernières.
    Cette classe "pointe" sur d'autres checkBox filles.
    Les objets (associés aux checkBox) une fois instanciés sont stockés dans un dictionnaire de données.

    Tout marche bien hormis le comportement du Click. En effet celui ci déclenche des événements à la chaîne.

    Je m'explique; soit une chechBox, quand je la décoche, je fais en sorte que toutes ses checkBox "filles" (de niveau inférieur) soient décochées:
    1. Le fait de décocher la checkBox parente déclenche bien l’événement Click.
    2. Je parcours ensuite les CheckBox "filles" et modifie leur valeur (.Value = False) et (au malheur ) cette action déclenche l'événement Click pour chacune! Et ça je ne le veux pas et ne le comprends pas!

    En effet pour moi le fait de modifier la valeur devrait être lié à l’événement Change et pas Click!!?

    Si vous avez déjà rencontré ce problème et réussi à le contourner, je suis preneur.

    Ci dessous le code du Click incriminé.
    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
    25
    'Pour gérer l'évènement clic sur les objets type CheckBox
    Private Sub ChkBx_Clik()
     
        Dim checked As Boolean
        Dim i As Integer
        Dim ChkBxFille As MSForms.CheckBox
        Dim tabFilles As Variant
     
        checked = ChkBx.Value
     
        'On décoche tous les enfants
        If Not checked Then
            If Len(mListeChkBxFilles) > 0 Then
                tabFilles = Split(mListeChkBxFilles, "|")   'la liste des filles est une chaine contenant leur nomsséparés par des "|"
                For i = LBound(tabFilles) To UBound(tabFilles)
                    Set ChkBxFille = ChkBx.Parent.Controls(tabFilles(i))
                    With ChkBxFille
                        If .Enabled Then .Value = checked   '!!! déclenche un autre onClick :-( !!!!
                    End With
                Next i
            End If
        End If
     
        Set ChkBxFille = Nothing
    End Sub
    Merci d'avance à tous.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Tu peux utiliser une variable globale pour by-passer l'évènement associé à la procédure 'Click' des éléments filles.

  3. #3
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Oui vcottineau c'est grosso-modo ce que je fais actuellement, mais je trouve ça très moche! Pour moi l'événement Click ne doit pas se déclencher du tout!

  4. #4
    Invité
    Invité(e)
    Par défaut Bonjour, regarde ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub MyEvenement_Clik()
    Static noExecute As Boolean
    If noExecute = True Then Exit Sub
    noExecute = True
    'Code
    noExecute = False
    End Sub

  5. #5
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Même réponse que pour vcottineau Rdurupt.
    Je ne veux pas que le code entre dans la procédure Click. Même si c'est pour en sortir immédiatement.
    Je souhaiterais que l'événement Click se comporte comme tel et pas comme un Change.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par issoram Voir le message
    Même réponse que pour vcottineau Rdurupt.
    Je ne veux pas que le code entre dans la procédure Click. Même si c'est pour en sortir immédiatement.
    Je souhaiterais que l'événement Click se comporte comme tel et pas comme un Change.
    effectivement, mais j'ai jamais trouver la solution.
    alors faute de merles on mange des grives.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par issoram Voir le message
    Oui vcottineau c'est grosso-modo ce que je fais actuellement, mais je trouve ça très moche! Pour moi l'événement Click ne doit pas se déclencher du tout!
    Je viens de faire le test et je pense que tu n'as pas le choix.

    Tu peux aussi utiliser une variable 'Static' comme le suggère Rdurupt.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par issoram Voir le message
    Bonjour,

    En effet pour moi le fait de modifier la valeur devrait être lié à l’événement Change et pas Click!!?
    J'ai envie de dire oui, effectivement, il gère ça comme un click apparement. Avec le click mouse, ça donne la même chose ? En principe, le mouse est vraiment lié à la souris. Pour le click seul, je ne sais pas vraiment, mais ton exemple montre que non.

  9. #9
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Rien trouvé de mieux que passer par une variable statique.
    Je poste en résolu même si pour moi ça ne l'est pas totalement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Gestion d'évènements sur Checkbox Dynamique
    Par pinhut dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/06/2015, 17h52
  2. Réponses: 31
    Dernier message: 08/05/2011, 21h24
  3. bouton dynamique et évènement click
    Par tiy56 dans le forum jQuery
    Réponses: 3
    Dernier message: 24/01/2009, 09h43
  4. Réponses: 4
    Dernier message: 11/05/2008, 23h22
  5. [Tableaux] CheckBox dynamique, possible en php?
    Par Gumpy dans le forum Langage
    Réponses: 5
    Dernier message: 07/02/2006, 11h46

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