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 :

Lié un module de classe à un Button OleObjects


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Lié un module de classe à un Button OleObjects
    Bonjour,

    Il s'agit de mon premier post sur ce super site !

    Je suis néophyte dans le domaine et je suis en quête comme beaucoup de réponse afin de pouvoir avancer.
    Je suis sur un projet nommée "Facturateur" qui permettra à terme de gérer des factures.

    J'aimerais utiliser le module de classe afin de*créer des*"Bouton personnalisés" dans une feuille et pas un formulaire.

    A ce stade, le code créé bien les boutons mais ne lie pas le code du module de classe et je ne trouve pas où ce situe mon erreur ou mes erreurs

    Voici le code dans mon module :

    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
    Option Explicit
    Public collect As Collection
    
    Sub créa_pack()
    
    
    'Création Variable
    Dim Obj As OLEObject
    Dim Cl As Classe1
    Dim i As Integer, Y As Integer
    Dim largeur As Single, hauteur As Single, PH As Long, PG As Long
    Dim destcell As Range, Val As String, cell As Range
    
    i = 1
    
    
    'boucle création bouton
    For Each cell In Range("PackId[ID]")
    
        'destination bouton
        Set destcell = Worksheets("Facturation").Cells(7, 6 + i)
        
        'val est le nom du pack
        Val = cell.Offset(0, 1).Value
        
        'taille cellule
        largeur = Columns(destcell.Column).Width
        PG = Columns(destcell.Column).Left
        hauteur = Rows(destcell.Row).Height
        PH = Rows(destcell.Row).Top
            
        Set Obj = Worksheets("Facturation").OLEObjects.Add("Forms.CommandButton.1", Left:=PG, Top:=PH, Width:=largeur, Height:=hauteur)
        With Obj
        .Name = "Pack" & " " & Val
        .Object.Caption = "Pack" & " " & Val
        End With
        
    
        'ajout de l'objet dans la classe (c'est ici que le probleme ce situe*surement)
        Set collect = New Collection
        Set Cl = New Classe1
        Set Cl.ChkBx = Obj.Object
        collect.Add Cl
    
        i = i + 1
        
    Next cell
    
    'Worksheets("Facturation").Protect
    
    End Sub


    Mon code de module de classe est le suivant :

    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 ChkBx As MSForms.CommandButton
     
     
    Sub ChkBx_Click()
     
    Range("A1").Select
    MsgBox "yo"
     
    End Sub

    Je l'avoue je fais tout en autodidacte et je suis pas trop doué.
    Mais en comprenant mon erreur, ça me permettra de m'améliorer.

    Je ne sais pas si je procède de la*bonne manière mais je suis prêt à en découdre pour avancer.

    Merci beaucoup !

  2. #2
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Bonjour à vous,

    Il conviendrait tout d'abord de sortir la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set collect = New Collection
    de la boucle "For Each".
    En effet, à chaque itération, la collection est réinitialisée et seul le dernier bouton créé est susceptible de fonctionner.

    Cordialement.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Extraire collect
    Hello,

    Super merci !

    Effectivement pas malin de ma part, j'ai arrangé le code que j'ai trouvé par ci par là. Et d'un pas de fait vers la finalité.
    Le bouton*crée n'affiche toujours pas la Msgbox*
    Et pourtant en suivant la même logique j'ai réussi à obtenir un résultat mais sur Formulaire.

    J'ai peur de me fourvoyer totalement.

    Merci encore !

Discussions similaires

  1. [XL-2010] Pb. OLEObjects + module de classe
    Par mécano41 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/10/2012, 10h27
  2. [XL-2003] Modules de classe événement click sur OLEObjects
    Par pijaku dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/08/2011, 08h25
  3. Réponses: 4
    Dernier message: 31/03/2006, 15h16
  4. Réponses: 8
    Dernier message: 22/02/2006, 15h09
  5. variables publiques ou module de classe ?
    Par niclalex dans le forum Access
    Réponses: 3
    Dernier message: 04/10/2005, 18h49

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