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 :

Vba module de classe


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Vba module de classe
    Bonjour à tous,
    J'aurais besoin d'un petit coup de main.
    Je réalise un petit programme et dans celui-ci j'ai besoin de créer des checkbox mais leurs nombre n'est pas toujours le même. Par conséquent je me suis diriger vers la solution des modules de classe pour gérer les nombres suivant une variables et que je puisse travailler avec par la suite.

    Ai-je pris la bonne solution ? si oui, voila ma deuxième question.
    J'ai mit ci-joint mon document.

    Ce que j'ai réussi à faire :
    Créer en automatique des checkbox et un commandbutton à l'aide d'un commanbutton.

    Tous fonctionne bien mais maintenant si je clic sur le commanbutton créé en automatique il n'arrive pas a gérer la macro qui lui est rattaché.

    Voilà merci d'avance

    Cordialement Yannick
    Fichiers attachés Fichiers attachés

  2. #2
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut ficher excel dészippé
    Bonjour,
    On dirait que les contributeurs n'aiment pas travailler sur un fichier zip.
    Donc je me suis permis de l'ouvrir sur mon poste.
    J'aimerais bien aussi avoir la réponse du non fonctionnemnt de ton module
    de classe car j'aurais ecris aussi la même chose.
    Merci de vos idées.

    Module de Classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public WithEvents Bn As MSForms.CommandButton
    Public WithEvents Cb As MSForms.CheckBox
     
    Private Sub Bn_Click()
        Sheets("Feuil1").Cells(1, 1).Value = 1
    End Sub

    code declencher sur click dans un formulaire

    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
    Private Sub toto_click()
     
     
    Dim Obj As MSForms.CheckBox
    Dim Obj2 As MSForms.CommandButton
    Dim Collect As Collection
    Dim Cl As Classe1
    Dim i As Integer
     
    Set Collect = New Collection
     
    For i = 1 To 3 'boucle pour la création des CheckBox
        Set Obj = Me.Controls.Add("forms.checkbox.1")
        Set Cl = New Classe1
        Set Cl.Cb = Obj
        Collect.Add Cl
        With Obj
            .Name = "moncheckbox" & i
            .Object.Caption = "le texte" & i
            .Left = 140
            .Top = 30 * i + 10
            .Width = 50
            .Height = 20
        End With
     
     
     
     
    Next i
     
        Set Obj2 = Me.Controls.Add("forms.CommandButton.1")
     
        Set Cl.Bn = Obj2
        Collect.Add Cl
        With Obj2
            .Name = "Boutton"
            .Object.Caption = "le texte" & i
            .Left = 50
            .Top = 50
            .Width = 50
            .Height = 20
        End With
     
    End Sub

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    J'ai trouvé, j'ai oublier de leur donner un nom lors de leurs création.


    exemple: Set Obj = Me.Controls.Add("forms.checkbox.1", "Cd" & i, True)

    Maintenant,
    Saurais-tu me dire comment je peux faire pour vérifier, en cliquant sur le commandbutton, si les checkbox son cocher et si c'est le cas générer un code (peu importe du code)

    merci
    cordialement Yannick

  4. #4
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut
    Bonjour,

    Y aurait il pas un parametre à mettre à true pour vérifier si la checkbox est cliquée ou pas.
    Tu lances ton code sur un worksheet.change par exemple, ou sur un userform.click.

  5. #5
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir,

    Je ferai plutôt de cette façon, a mettre dans le module de la Form :

    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
    Dim Btn As New Classe1
    Dim Chk() As New Classe1
     
    Private Sub toto_click()
     
        Dim I As Integer
     
        'le bouton :
        Set Btn.GroupeBtn = Me.Controls.Add("Forms.commandbutton.1")
     
        With Btn.GroupeBtn
     
            .Name = "Boutton"
            .Caption = "Mon beau bouton !"
            .Left = 50
            .Top = 50
            .Width = 50
            .Height = 20
     
        End With
     
        'les cases à cocher :
        For I = 1 To 3 'boucle pour la création des CheckBox
     
            ReDim Preserve Chk(1 To I)
     
            Set Chk(I).Cb = Me.Controls.Add("Forms.checkbox.1")
     
            With Chk(I).Cb
     
                .Name = "moncheckbox" & I
                .Caption = "le texte " & I
                .Left = 140
                .Top = 30 * I + 10
                .Width = 100
                .Height = 20
     
            End With
     
         Next I
     
    End Sub
    et ceci, à mettre dans le module de 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
    Public WithEvents GroupeBtn As MSForms.CommandButton
    Public WithEvents Cb As MSForms.CheckBox
     
     
    Private Sub GroupeBtn_Click()
     
        MsgBox GroupeBtn.Caption 'ou Name ou autre...
        Sheets("Feuil1").Cells(1, 1).Value = 1
     
    End Sub
     
    Private Sub Cb_Click()
     
        MsgBox "La valeur est '" & Cb.Value & "'" & vbCrLf & "Le titre est '" & Cb.Caption & "'"
     
    End Sub
    Hervé.

Discussions similaires

  1. [VBA] Module de classe et évènement
    Par Caroline1 dans le forum Access
    Réponses: 9
    Dernier message: 20/03/2013, 23h23
  2. VBA Module de classe
    Par koolWak dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2007, 22h50
  3. [VBA-Excel] les modules de Classe
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/07/2007, 11h21
  4. [VBA]Import modules de classe dans Access 2003
    Par pht33 dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/04/2007, 15h45
  5. Réponses: 8
    Dernier message: 22/02/2006, 15h09

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