Voir le flux RSS

MarcelG

Gestion de contrôles ActiveX par classe d'objets

Noter ce billet
par , 26/02/2020 à 14h01 (200 Affichages)
Bonjour,

Au sein d'un même classeur, certains contrôles ActiveX peuvent avoir la même fonctionnalité.
Autrement dit, les mêmes actions leur sont affectées.

Dès lors, 1 processus peut à priori être envisagé:
- Affecter la même procédure évènementielle au contrôle soit en rédigeant le même code (par copier/coller) soit en faisant appel à la même procédure rédigée, elle, dans un module standard.

1 autre possibilité, qui aurait ma préférence, serait de gérer ces contrôles par une classe d'objets.
L'affectation à cette classe peut être exécutée à l'ouverture du classeur

Hypothèse:
3 feuilles de travail contiennent chacune un bouton nommé "Btn_Bonjour"

Dans un module de classe nommé "Class_boutons"

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 lebouton As CommandButton

Private Sub lebouton_Click()

MsgBox _
        Prompt:="Bonjour le Forum", _
        Buttons:=vbInformation, _
        Title:="Message d'accueil"

End Sub
Dans l'objet "ThisWorkbook"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Option Explicit

Dim clsbtn() As New Class_boutons

Private Sub Workbook_Open()
Dim b As Byte
For b = 1 To 3
        ReDim Preserve clsbtn(1 To b)
        Set clsbtn(b).lebouton = Worksheets("Wks_" & b).OLEObjects("Btn_Bonjour").Object
Next b
End Sub
L'avantage de ce processus:

Simplifier la copie ou le déplacement de la feuille de travail. Seul le contrôle serait à supprimer.
En effet, une feuille de travail déplacée ou copiée amène avec elle les codes qui lui sont associés.
Certes, la gestion de VBA par VBA est possible. Il reste néanmoins plus confortable de s'en passer.

Conclusion:


Ce qui est vrai pour un contrôle peut l'être également, du moins à priori, pour tout autre objet.
Exemple: une feuille de travail
La gestion en serait, comme pour les contrôles, d'autant plus facilitée.

Par avance, merci pour vos commentaires.

Envoyer le billet « Gestion de contrôles ActiveX par classe d'objets » dans le blog Viadeo Envoyer le billet « Gestion de contrôles ActiveX par classe d'objets » dans le blog Twitter Envoyer le billet « Gestion de contrôles ActiveX par classe d'objets » dans le blog Google Envoyer le billet « Gestion de contrôles ActiveX par classe d'objets » dans le blog Facebook Envoyer le billet « Gestion de contrôles ActiveX par classe d'objets » dans le blog Digg Envoyer le billet « Gestion de contrôles ActiveX par classe d'objets » dans le blog Delicious Envoyer le billet « Gestion de contrôles ActiveX par classe d'objets » dans le blog MySpace Envoyer le billet « Gestion de contrôles ActiveX par classe d'objets » dans le blog Yahoo

Mis à jour 26/02/2020 à 16h45 par MarcelG

Catégories
Programmation

Commentaires