Lancer un module de classe depuis une modules
L
Bonjour à vous.
J'ai un module de classe que je veux activer depuis une macro. La macro lance déjà 3 modules différents.
Voici le code de la macro:
Option Explicit
Sub Lancement()
Dim result As Integer, rep&
rep = MsgBox("Voulez-vous vraiment effacer toutes les données du formulaire", vbQuestion + vbYesNo)
If rep = 7 Then
Exit Sub
Else
Module3.clearCB
Module4.vider_text
Module1.vider
End If
End Subet voici le code du module:
Public WithEvents checkB As MSForms.CheckBox
Dim cl() As New ClassCheck
Public f As Worksheet
Function init(feuille) 'classement des controls checkbox
Dim A&, obj As OLEObject
For Each obj In feuille.OLEObjects
If TypeName(obj.Object) = "CheckBox" Then A = A + 1: ReDim Preserve cl(1 To A): Set cl(A).checkB = obj.Object: Set cl(A).f = feuille
Next
End Function
Private Sub CheckB_Change()
Dim obj As OLEObject
If checkB.Value = True Then
For Each obj In f.OLEObjects
If TypeName(obj.Object) = "CheckBox" Then
If obj.Name <> checkB.Name Then If obj.Object.GroupName = checkB.GroupName Then obj.Object.Value = False
End If
Next
End If
End SubEst-ce possible.
Merci de votre support
thevPassionné d'Excel
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonsoir,
C'est possible comme ceci :
1- module de classe ClassCheck
Public sh As Worksheet
Public WithEvents checkB As MSForms.CheckBox
Private Sub CheckB_Change()
Dim obj As OLEObject
If checkB.Value = True Then
For Each obj In sh.OLEObjects
If TypeName(obj.Object) = "CheckBox" Then
If obj.Name <> checkB.Name Then If obj.Object.GroupName = checkB.GroupName Then obj.Object.Value = False
End If
Next obj
End If
End Sub2- procédure à insérer dans un module appelé par exemple LoadClass
Dim cases() As New ClassCheck
'// stockage des instances de la classe ClassCheck dans le tableau cases ()
' et stockage dans chaque instance, du contrôle CheckBox et de la feuille appelante
Sub init(feuille As Object)
Dim A&, obj As OLEObject
For Each obj In feuille.OLEObjects
If TypeName(obj.Object) = "CheckBox" Then A = A + 1: ReDim Preserve cases(1 To A): Set cases(A).checkB = obj.Object: Set cases(A).sh = feuille
Next
End Sub3- procédure à insérer dans votre feuille
Sub lancer_ClassCheck()
init Me
End Sub