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 :

Evenement checkbox_click sur plus de 300 checkboxes [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 10
    Par défaut Evenement checkbox_click sur plus de 300 checkboxes
    Bonjour à tous.

    Mon souci est au final assez simple dans l'idée.
    Le but de mon programme est que lorsque je coche une checkbox, alors le bouton devient actif, et je peux lancer la macro qui lui correspond.
    J'ai réussi à le faire, c'est à dire que je coche n'importe quelle checkbox et magie, mon bouton s'active. Et lorsque rien n'est coché il est inactif.
    C'est génial, sauf que j'ai plus de 300 checkboxes à faire comme ça, je vais pas m'amuser à définir la même macro pour chaque checkbox...
    Au final j'aimerais que pour toutes les checkboxes de ma page, 100, 200, 1000...etc, il soit possible de les cocher afin que celles-ci activent le bouton.
    Si quelqu'un à une idée parce que je vois vraiment pas comment je pourrais faire.

    Mon fichier :
    Test.xlsm

    Merci de vos réponses

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    Bonjour,

    Je pense qu'il faut que tu regardes les modules de classe pour réaliser ce que tu souhaites.
    Ceci te permettra de créer dynamiquement tes différents objets sur ta page à l'aide d'un programme.

    Attention, ces méthodes sont relativement "complexes" : J'ai déjà fait des essais réussis mais ça m'a pris bcp de temps... mais je suis débutant.

    Essaye plutôt de réévaluer ton besoin et de trouver une autre méthode pour atteindre ton objectif final.

    OBO29.

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, c'est à mon avis également impératif d'y avoir recours. Une recherche te donnera des exemples.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour,
    300 checkboxes !
    Et pour activer un seul bouton ...
    Et personne pour dire qu'il y a manifestement là un énorme problème de conception, à reconsidérer ?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour,
    Et personne pour dire qu'il y a manifestement là un énorme problème de conception, à reconsidérer ?
    Si : Essaye plutôt de réévaluer ton besoin et de trouver une autre méthode pour atteindre ton objectif final.

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 10
    Par défaut
    Très bien, merci de vos avis, je vais continuer à réfléchir à une méthode plus simple.

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    un module de classe nommé "ClCheck"

    Nom : classe ClCheck.JPG
Affichages : 121
Taille : 15,4 Ko
    son code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
     
    Public WithEvents GroupeCheck As MSForms.CheckBox
    Private Sub GroupeCheck_Click()
    If GroupeCheck = True Then
      With GroupeCheck
        Sheets("Feuil1").CommandButton1.Enabled = True
      Else
        Sheets("Feuil1").CommandButton1.Enabled = False
      End With
    End If
    End Sub
    un module standard
    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
    Option Explicit
     
    Public CollectCk As Collection
    Sub ini()
    Dim Obj As OLEObject, Cl As ClCheck
    Set CollectCk = New Collection
     
    For Each Obj In ActiveSheet.OLEObjects
      If TypeOf Obj.Object Is MSForms.CheckBox Then
        Set Cl = New ClCheck
        Set Cl.GroupeCheck = Obj.Object
        CollectCk.Add Cl
      End If
    Next Obj
    End Sub
    code dans ThisWorkBook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    ini
    End Sub
    code dans la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Activate()
    ini
    End Sub
    regardes ce fichier
    Fichiers attachés Fichiers attachés
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 10
    Par défaut
    Bonjour,

    j'ai effectivement éssayé de me documenter sur les modules de classe, mais vu que j'en avais jamais fait j'ai trouvé ça assez incompréhensible au premier abord. J'ai rien réussi à faire fonctionner avec mes essais...
    C'est gentil à toi de m'aider casefayere ! Par contre j'ai pas moyen de faire fonctionner ton fichier. Y'a un souci dans le module de classe. A l'ouverture du fichier ça me lance une erreur "object variable or with block variable not set" et me surligne la ligne du "For Each" dans le Module1.
    J'ai essayé de redeclarer comme il faut cette variable : Dim Cl As ClCheck.
    Mais cette fois quand je veux toucher les checkbox, il me dit qu'il y a une erreur de compilation : un Else sans If dans le module de classe apparement.
    C'est dommage que ça ne fonctionne pas chez moi, car j'ai vu plusieurs fois ce genre de synthaxe sur le net et j'ai jamais réussi à le faire fonctionner.

  9. #9
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    je suis étonné car chez moi il fonctionne sans problème, bon je vais essayer le fichier envoyé (peut-être une erreur mais je ne pense pas, je te tiens au courant
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    celui-ci fonctionne, normal au départ, j'ai pris un fichier vierge et n'ai pas vu le nom de ta feuille,
    ça fonctionne à l'ouverture du classeur et si reviens sur la feuille (Activate)
    Fichiers attachés Fichiers attachés
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 10
    Par défaut
    Merci à toi mais j'ai toujours le même message d'erreur. J'avais vu le "feuil1" à modifier mais ça ne changeait rien. J'suis repassé en version française et il me dit toujours "Variable objet ou variable de bloc With non définie". Si t'as pas cette erreur je vois pas de quoi ça peut venir...
    C'est dommage parce que je trouvais ça interessant de voir comment fonctionnait les modules de classe.

    Aaaaah attends, ça fonctionne nickel une fois que j'ai ouvert le fichier, changé d'onglet et repassé sur l'onglet principal. Par contre à l'ouverture du fichier, y'a pas moyen, ça me met cette erreur.

  12. #12
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    as-tu bien mis ausssi cette procédure dans "ThisWorkBook"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    ini
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  13. #13
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 10
    Par défaut
    Yes ce bout de code est bien présent.
    Du coup j'ai fait des tests et j'ai plus de problème à l'ouverture une fois que j'ai ouvert une première fois ton fichier, activé l'édition, enregistré et ensuite réouvert.
    Je sais pas pourquoi c'est assez bizarre. Mais au final tout marche parfaitement ! Merci de ton aide, c'est génial j'ai enfin une macro avec un module de classe qui fonctionne.

  14. #14
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    bien mais chez moi pas de problème, enfin si tu es satisfait, lis bien ma citation en bas de mes messages
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  15. #15
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 10
    Par défaut
    Merci à tout le monde pour vos pistes, solutions, conseils, c'était parfait !

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

Discussions similaires

  1. modification sur plus de 300 fmb
    Par hoolako dans le forum Forms
    Réponses: 5
    Dernier message: 30/01/2009, 10h26
  2. evenement onselect sur un checkbox
    Par jamesleouf dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 03/06/2008, 14h09
  3. [JS] Evénement client sur un controle ASP
    Par Coplan dans le forum ASP.NET
    Réponses: 6
    Dernier message: 26/05/2005, 17h31
  4. Evenement clavier sur toute l'interface
    Par Guybrush dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 08/02/2005, 12h13
  5. capter l'evenement clic sur une cellule d'un string grid
    Par lasconic dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/06/2003, 10h51

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