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 :

erreur 459 classe ne gere pas jeu evenement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2007
    Messages : 117
    Par défaut erreur 459 classe ne gere pas jeu evenement
    Bonjour,

    j'ai une classe avec plusieur "withevents" quand
    dans mon userform je met par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    dim cl as classe1
    set cl.opt = me.optionbutton1
     
    la tout va bien meme avec un tableau et for next cela marche
    mais si je met :
    i=1
    for each control in me.controls
        if typeof control is msforms.optionbutton then
              set cl(i).opt=control
              i=i+1
         end if
    next
    la j'ai une erreur (n° 459) l'objet ou la classe ne gere pas le jeu d'evenement

    voila la classe :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    Private numQ As Integer
    Private numpoids As Integer
    Private numvaleur As Integer
    Public WithEvents chq As MSForms.CheckBox
    Public WithEvents optoui As MSForms.OptionButton
    Public WithEvents optnon As MSForms.OptionButton
    Private groupe As Collection
    Private temppoids
    Property Let NUMERO(nmQ As Integer)
    numQ = nmQ
    End Property
    Property Get NUMERO() As Integer
    NUMERO = numQ
    End Property
    Property Let poids(nmpoids As Integer)
    numpoids = nmpoids
     
    End Property
    Property Get poids() As Integer
    poids = numpoids
    temppoids = numpoids
    End Property
    Property Get valeur() As Integer
    valeur = numvaleur
    End Property
    Private Sub chq_Click()
    If chq.Value = True Then
    Me.poids = 0
    numvaleur = 0
    With Me.optnon
    .Value = False
    .Enabled = False
    End With
    With Me.optoui
    .Value = False
    .Enabled = False
    End With
    Else
    Me.poids = temppoids
    Me.optnon.Enabled = True
    Me.optoui.Enabled = True
    End If
     
    End Sub
    Property Get Count() As Long
       Count = groupe.Count
    End Property
    Public Sub Remove(ByVal Index As Variant)
        groupe.Remove (Index)
    End Function
    Public Function Item(ByVal Index As Variant) As question
        Set Item = groupe.Item(Index)
    End Function
    Public Sub add(ByRef gg As question, Optional ByVal key As String = "")
    groupe.add gg, key
    End Sub
    Private Sub Class_Initialize()
    Set groupe = New Collection
    End Sub
    Private Sub Class_Terminate()
     If Not (groupe Is Nothing) Then Set groupe = Nothing
    End Sub
    Private Sub optnon_Click()
    If optnon.Value = True Then
    numvaleur = 0
    End If
    End Sub
    Private Sub optoui_Click()
    If optoui.Value = True Then
    numvaleur = Me.poids
    End If
    End Sub
     
    Public Function Createquestion(Nomd As Integer, mpoids As Integer) As question
    Dim q As question
        Set q = New question
        With q
            .NUMERO = Nomd
            .poids = mpoids
        End With
        Set Createquestion = q
        If Not (q Is Nothing) Then Set q = Nothing
    End Function
    et l'evement initialize du userform :


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Private Sub UserForm_Initialize()
     
     
     
    Set Eval_Question = New question
    i = 1
        For Each ctrl In Me.Controls
            If TypeOf ctrl Is MSForms.CheckBox Then
                    If Len(Me(ctrl.GroupName)) > 3 Then
                        poid_Q = Right(Me("" & ctrl.GroupName & ""), 2)
                    Else
                        poid_Q = Right(Me("" & ctrl.GroupName & ""), 1)
                    End If
                    i = i + 1
     
            Eval_Question.add Eval_Question.Createquestion(i, CInt(poid_Q)), "" & ctrl.GroupName & ""
                    Set Eval_Question.Item("" & ctrl.GroupName & "").chq = ctrl
                    End If
        Next
        For Each ctrl In Me.Controls
            If TypeOf ctrl Is MSForms.OptionButton Then
                    If ctrl.Caption = "OUI" Then
                        Set Eval_Question.Item("" & ctrl.GroupName & "").optoui = ctrl
                    Else
                        Set Eval_Question.Item("" & ctrl.GroupName & "").optnon = ctrl
                    End If
            End If
        Next
     
      With ListView1
            With .ColumnHeaders
                .Clear
                .add , , "NOM", 100
                .add , , "PRENOM", 100, lvwColumnLeft
                .add , , "TEL", 50, lvwColumnCenter
          End With
        .View = lvwReport
        .Gridlines = True
        .FullRowSelect = True
        End With
     
    End Sub
    merci de votre aide

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonjour,

    Ta déclaration de variable WithEvents doit correspondre au type de l'objet avec lequel tu l'initialise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public WithEvents opt As MSForms.OptionButton
    Cordialement,

    Tirex28/

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2007
    Messages : 117
    Par défaut
    oui justement c'est pour cela que j'ai mis:

    If TypeOf ctrl Is MSForms.OptionButton Then


    dans la classe il ya :

    public withevents optoui as msforms.optionbutton


    et dans le userform :

    Set Eval_Question.Item(ctrl.GroupName).optoui = ctrl

    c'est pour cela que je reste perplex face à ce problem, je comprend pas

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonjour,

    Tu m'excuse mais j'ai un peu de mal a dechiffrer ton code, si j'en crois ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'dans le userform:
    Set Eval_Question = New question
    Eval_Question.add Eval_Question.Createquestion(i, CInt(poid_Q)), "" & ctrl.GroupName & ""
     
    'Dans la classe:
    Private groupe As Collection
    Public Function Createquestion(Nomd As Integer, mpoids As Integer) As question
     
    Public Sub add(ByRef gg As question, Optional ByVal key As String = "")
    groupe.add gg, key
    End Sub
    Cela revient a dire que la collection définie dans la classe contient de multiples instances de la classe ou elle est définie..

    Qu'essaye tu de faire exactement? (en francais pas en code)

    Cordialement,

    Tirex28/

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2007
    Messages : 117
    Par défaut
    eh bien oui effectivement la collection est dans la classe elle même je sais ce n'est ptetre pas la meilleure chose à faire ?!
    le projet consiste à avoir plusieurs questions avec trois possibilité de réponse: oui, non et pas de réponse,
    le but étant d'évaluer un employé et donc je voulais une classe question et une collection pour grouper toute les questions d'un meme sujet sur lequel se porte l'évaluation !

    j'espère que vous comprenez ! et merci de vouloir m'aider vue mon niveau en programmation j'en ai besoin

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonjour,

    A priori ca ne me semble pas etre la meilleure solution. Pour moi tu dois creer une classe Question qui devrait contenir au minimum:

    - Trois variables WithEvents représentants des boutons d'options
    - Une propriete Texte représentant l'intitule de la question
    - Une propriete Reponse mise a jour par le click sur les boutons d'options

    Pour gérer les différentes questions soit tu te contente d'une Collection basique, soit tu emballe cette collection dans une autre classe Questions si tu veux la personnaliser.

    Reste ensuite a savoir comment tu compte afficher tes questions (simultanément ou l'une apres l'autre) pour determiner comment gerer les boutons d'options.

    Cordialement,

    Tirex28/

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

Discussions similaires

  1. erreur d'executin 430 la classe ne gere pas automation ou l'interface attendue
    Par zied.ellouze dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/07/2011, 10h46
  2. [AC-2003] l'objet ou la classe ne gere pas le jeu d'evenement
    Par desi dans le forum Access
    Réponses: 1
    Dernier message: 01/04/2010, 14h37
  3. Erreur composant TImage : "la classe n'existe pas"
    Par jeroe dans le forum Composants VCL
    Réponses: 2
    Dernier message: 05/03/2006, 17h46
  4. Erreur : La classe n'est pas enregistrée
    Par Le Pharaon dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/08/2005, 13h04
  5. Erreur : La classe ne gère pas Automation..
    Par Invité dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/09/2004, 11h24

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