[VBA] Boucle sur private sub

imadeus

XLDnaute Nouveau
Voilà je vous explique en quelques mots.

Je crée un ensemble de checkbox sur une feuille excel. Pour exécuter le code lié à chaque checkbox j'ai le code suivant :

Code:
Private Sub CheckBox1_Click()
    Process_CheckBox1 CheckBox1
End Sub
Private Sub CheckBox2_Click()
   Process_CheckBox1 CheckBox2
End Sub
Private Sub CheckBox3_Click()
   Process_CheckBox1 CheckBox3
End Sub
Private Sub CheckBox4_Click()
   Process_CheckBox1 CheckBox4
End Sub

Qui fait référence à :
Code:
Sub Process_CheckBox1(pObject)
'Code
End Sub

Ici il n'y a que 4 checkbox mais au final, il y en aura + de 100.
Dès lors j'aimerais boucler. Je me suis déjà un peu renseigner, mais je suis trop débutant en VBA.
Il faudrait que je crée un event je crois mais je ne trouve pas de site explicite à mon goût.
Pourriez-vous m'aider ?
 

imadeus

XLDnaute Nouveau
Re : [VBA] Boucle sur private sub

Me revoici :).

J'ai lu plusieurs posts et ai bien fait le rapprochement. La majorité des post sont pour un userform, alors que j'ai opté pour oleobject.

Cependant le principe reste le même.

J'ai donc créé un module de classe (nommé : classe1) dans lequel j'ai mis :
Code:
Public WithEvents GroupCheckBoxes As MsForms.CheckBox
 
Private Sub GroupCheckBoxes_Click()
    MsgBox ("Test")
    Process_CheckBox1 GroupCheckBoxes
End Sub

Cependant, au click des checkbox, je n'ai aucun message (ni le process qui s'exécute, normal).
Pourtant cela à l'air assez simple dans le fonctionnement mais je dois rater une étape.
 

Jam

XLDnaute Accro
Re : [VBA] Boucle sur private sub

Salut imadeus, job75,

Heu très basiquement, tu fais pointer toutes tes checkboxes sur ta procédure Sub Process_CheckBox1 (plus besoin du string associé)
Si tu veux connaître quelle checkboxes a été cliquée, il faut que tu utilises application.caller qui renverra l'objet ayant effectué l'action. Après c'est un jeu d'enfant.


Bon courage
 

Jam

XLDnaute Accro
Re : [VBA] Boucle sur private sub

Re,

Un petit exemple pour faire plus simple.
A adapter par la suite.


Petite précision: j'utilise ici des contrôles de form, pas des ActiveX. Sinon, il faut effectivement passer par module de class. Ça devient un peu plus compliqué là :rolleyes:
 

Pièces jointes

  • Application Caller.xlsm
    16.3 KB · Affichages: 131
Dernière édition:

imadeus

XLDnaute Nouveau
Re : [VBA] Boucle sur private sub

Salut Jam, merci pour ton post. Je vais regarder cela.
Effectivement, cela est plus complexe pour de l'activeX (malheureusement mon choix).
Je suis tombé sur un post en anglais qui traitait mon problème, je vais essayer de le retrouver (je suis nouveau en vba :) alors je tente de comprendre le code :)). Je reviens vers vous dès que.
 

Jam

XLDnaute Accro
Re : [VBA] Boucle sur private sub

imadeus,

Si tu es plutôt nouveau sur VBA et que tes checkboxes n'ont pas besoin du tri-état (coché, grisé, non-coché), alors je te conseille vivement de prendre mon option.
Y'a plus simple pour commencer avec les modules de class et l'encapsulation ;) Maintenant, si tu as le temps, alors pourquoi pas.

Bon courage,
 

imadeus

XLDnaute Nouveau
Re : [VBA] Boucle sur private sub

Merci Jam, mais justement, mes checkbox ont des liens entre elles (coché, visible, invisible, non cochée).
Il y a 4 checkbox par lignes dont l'état change en fonction des choix avec des liens cellules. Mais ca va, j'ai réussi à m'en sortir :).
Il ne me reste que la boucle sur les private sub. Cela fonctionne mais j'ai envie de faire un code plus propre :).
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
176

Statistiques des forums

Discussions
312 488
Messages
2 088 862
Membres
103 979
dernier inscrit
imed