[Résolu] Un soucis avec "RaiseEvent"

Jenovae

XLDnaute Nouveau
Bonjour le forum,

Soit un module de classe nommé "cBtnPC" avec le code suivant :
Code:
Option Explicit


Public Event AjoutAppartement()
Public Event SuppressionAppartement()
Public WithEvents Btn As MSForms.CommandButton

Public Sub Btn_Click()

If Not InStr(1, Btn.Name, "Ajouter") = 0 Then
    MsgBox "ajouter"
    RaiseEvent AjoutAppartement
Else
    MsgBox "supprimer"
    RaiseEvent SuppressionAppartement
End If

End Sub

Soit un UserForm sur lequel sont créés automatiquement des boutons selon divers paramètres, boutons qui appartiennent à une Collection d'objets de ma classe "cBtnPC" et qui réagissent au clic en lançant la procédure ci dessus.

Les évènements "AjouterAppartement" et "SuppressionAppartement" sont déclarés dans le module Userform où sont placés les boutons :

Code:
Public Sub oBtnPC_AjoutAppartement()
    ...  mon code
End Sub

Public Sub oBtnPC_SuppressionAppartement()
    ...  mon code
End Sub

Je ne parviens pas à faire en sorte que mes évènements "AjoutAppartement" et "SuppressionAppartement" soit lancés. En suivant le déroulement en pas à pas, mes MsgBox s'affichent, puis on passe bien sur la ligne "RaiseEvent SuppressionAppartement", mais sans être redirigé vers "Public Sub oBtnPC_AjoutAppartement()".

Si vous pouviez m'éclairer un peu sur le sujet.... Je découvre juste les classe et collections alors ça rame un peu :)

Merci beaucoup pour votre aide!!
 
Dernière édition:

Theze

XLDnaute Occasionnel
Re : Un soucis avec "RaiseEvent"

Bonjour,

Les proc dans le formulaire ne sont pas appelées par le module de classe, utilise un module standard avec les proc déclarée Public.
Dans ton module de classe :
Code:
Public WithEvents Btn As MSForms.CommandButton

Public Sub Btn_Click()

    If Not InStr(1, Btn.Name, "Ajouter") = 0 Then
    
        AjoutAppartement
        
    Else
    
        SuppressionAppartement
        
    End If

End Sub
Dans le module standard :
Code:
Public MesBoutons() As New cBtnPC

Public Sub AjoutAppartement()

    MsgBox "AjoutAppartement"
    
End Sub

Public Sub SuppressionAppartement()

    MsgBox "SuppressionAppartement"
    
End Sub
Et dans le module du formulaire (pour mon test) :
Code:
Private Sub UserForm_Initialize()

    Dim Btn As CommandButton

    Set Btn = Controls.Add("Forms.CommandButton.1", "BtnAjouter")


    ReDim Preserve MesBoutons(1 To 2)
    Set MesBoutons(1).Btn = Btn
    
    Set Btn = Controls.Add("Forms.CommandButton.1", "BtnSupprimer")
    With Btn
    .Top = 100
    End With
    Set MesBoutons(2).Btn = Btn


End Sub

Hervé.
 

kjin

XLDnaute Barbatruc
Re : Un soucis avec "RaiseEvent"

Bonjour,
Sans fichier exemple et une explication plus claire c'est un peu compliqué de discerné s'il s'agit de gérer des événements multiples ou non
Si les 2 boutons se nomment "Ajouter" et "Suprimer"
Dans le module du USF
Code:
Dim btn(1) As New Classe1

Sub AjoutAppartement()
MsgBox "ajout"
End Sub

Sub SuppressionAppartement()
MsgBox "Suppr"
End Sub

Private Sub UserForm_Initialize()
Set btn(0).btn = Ajouter
Set btn(1).btn = Supprimer
End Sub
...et dans le module de classe nommé "Classe1"
Code:
Public WithEvents btn As MSForms.CommandButton

Public Sub Btn_Click()
If btn.Name = "Ajouter" Then
UserForm1.AjoutAppartement
Else
UserForm1.SuppressionAppartement
End If
End Sub
A+
kjin
 

Jenovae

XLDnaute Nouveau
Re : Un soucis avec "RaiseEvent"

Bonjour,

Grace à vos réponses j'ai pu me débloquer. J'ai simplement remplacé le "Raise Event" par l'appel à une Sub publique qui réalisait la même chose..... Ainsi j'ai maintenant dans mon module de classe :

Code:
If Not InStr(1, Btn.Name, "Ajouter") = 0 Then
    MsgBox "ajouter"
    'RaiseEvent AjoutAppartement
    Call AjouterAppartement
Else
    MsgBox "supprimer"
    'RaiseEvent SuppressionAppartement
    Call SupprimerAppartement
End If

Ainsi tout va bien dans le meilleur des mondes :)

Merci encore pour votre aide!


EDIT : Je passe en résolu.
 
Dernière édition:

Discussions similaires

Réponses
29
Affichages
920
L
Réponses
0
Affichages
1 K
L

Statistiques des forums

Discussions
312 211
Messages
2 086 292
Membres
103 171
dernier inscrit
clemm