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 :

Classe d'objets boutons de commande sur feuilles [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut Classe d'objets boutons de commande sur feuilles
    Bonjour les amis du Forum,

    Sur l'un de mes applicatifs, plusieurs feuilles détiennent des boutons de commandes affectés des mêmes procédures.
    Leur nom définit la procédure affectée.
    Bouton de commande nommé "Btn_Réso" ==> Procédure Go_stats avec pour argument "Réso"; Btn_Collab ==> Go_stats("Collab"), etc....

    Par souci de rigueur, je souhaiterais créer une classe d'objets relative à ces boutons de commande, afin de ne coder qu'une seule procédure via l'évènement Click

    Soit

    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
    17
    18
    Option Explicit
     
    Public WithEvents Bouton As msforms.CommandButton
     
    Private Sub Bouton_Click()
     
    Dim spb As Variant
    Dim chStats As String
     
    With Bouton
     
            spb = Split(Bouton.Name, "_")
            chStats = spb(UBound(spb))
            Call Go_Stats(chStats) 
     
    End With
     
    End Sub
    Mon problème réside dans l'instanciation de la classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim s as ....
    For Each s in ...
    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
    Public Sub déf_classBtn()
     
    Dim wks As Worksheet
    Dim classBtn() As New Class_BtnCmd
    Dim s As msforms.CommandButton
    Dim n As Byte
     
    n = 0
     
    For Each wks In Worksheets(Array("Stats_Réso", "Stats_Mercatog", "Stats_Marcel"))
            With wks
                    For Each s In ????
                            If InStr(s.Name, "Stats") > 0 Then
                                    n = n + 1
                                    ReDim Preserve classBtn(1 To n)
                                    Set classBtn(n).Bouton = s
                            End If
                    Next s
            End With
    Next wks
     
    End Sub
    Si je déclare s comme Bouton de commande, comment définir la collection de ceux-ci sur chaque feuille?
    J'ai bien essayé OleObjects mais alors l'évènement n'est plus géré.

    Merci à vous et bonne journée.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 946
    Points
    55 946
    Billets dans le blog
    131
    Par défaut
    Salut Marcel,

    Voilà comment je procéderais:
    • Création d'une classe perso;
    • Création d'une collection d'objets de cette classe attachée à ThisWorkbook;
    • Création d'une procédure qui boucle sur les shapes de la feuille pour créer les objets de la classe perso et les ajouter à la collection.




    Code de la classe perso nommée SheetButton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
     
    Public WithEvents btn As MSForms.CommandButton
     
    Sub Addbutton(Button As MSForms.CommandButton)
      Set btn = Button
    End Sub
     
    Private Sub btn_Click()
      MsgBox Replace(btn.Name, "btn_", "")
    End Sub
    Création de la collection dans le thisworkbook (une simple variable publique => elle devient propriété publique de ThisWorkbook)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public buttons As New Collection
    Une procédure d'un module standard, éventuellement appelée sur le Workbook_Open
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub AddButtons()
      Dim b As SheetButton
      Dim s As Shape
     
      For Each s In Feuil1.Shapes
        If s.Name Like "btn_*" Then
          Set b = New SheetButton
          b.Addbutton s.DrawingObject.Object
          ThisWorkbook.buttons.Add b
        End If
      Next
    End Sub
    Après avoir exécuté la procédure AddButtons, tu peux cliquer sur un des boutons et le clic de la classe perso sera appelé


    Ca, c'est la mécanique de base. Si tu souhaites appeler une procédure, alors j'imagine que cette procédure est située dans un module standard. Voilà comment je procéderais alors. J'agrémente la classe perso d'une variable privée qui reçoit le nom de la proc à appeler au clic lors de l'ajout du bouton, je crée la proc et je modifie l'évènement clic de la classe perso. Je modifie aussi la proc qui alimente la collection

    Procédure du module standard qui sera appelée sur le clic du bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ProcBouton(Value As String)
      MsgBox Value
    End Sub
    Code de la classe qui reçoit le bouton et le nom de la procédure qui sera appelée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
     
    Public WithEvents btn As MSForms.CommandButton
    Private mCalledProcName As String
     
    Sub Addbutton(Button As MSForms.CommandButton, ProcName As String)
      Set btn = Button
      mCalledProcName = ProcName
    End Sub
     
    Private Sub btn_Click()
      Run mCalledProcName, Replace(btn.Name, "btn_", "")
    End Sub
    Procédure d'un module standard qui alimente la collection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub AddButtons()
      Dim b As SheetButton
      Dim s As Shape
     
      For Each s In Feuil1.Shapes
        If s.Name Like "btn_*" Then
          Set b = New SheetButton
          b.Addbutton s.DrawingObject.Object, "ProcBouton"
          ThisWorkbook.buttons.Add b
        End If
      Next
    End Sub


    Nom : 2020-08-05_104410.png
Affichages : 293
Taille : 4,7 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Merci beaucoup, Pierre.

    Je regarde et reviens au plus tard en début de semaine prochaine.
    (impératif grave personnel)

    Bonne journée à tous

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 946
    Points
    55 946
    Billets dans le blog
    131
    Par défaut
    En complément, tu pourrais aussi vouloir passer la valeur de l'argument lors de l'ajout du bouton, pour ne pas que ce soit ta classe qui contienne le code qui le détermine. Ca rend ainsi ta classe générique car tu lui passes le nom de procédure à appeler ET l'argument à passer à cette procédure...

    La classe perso:
    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
    Option Explicit
     
    Public WithEvents btn As MSForms.CommandButton
    Private mCalledProcName As String
    Private mValue As String
     
    Sub Addbutton(Button As MSForms.CommandButton, ProcName As String, Value As String)
      Set btn = Button
      mCalledProcName = ProcName
      mValue = Value
    End Sub
     
    Private Sub btn_Click()
      Run mCalledProcName, mValue
    End Sub
    L'alimentation de la collection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub AddButtons()
      Dim b As SheetButton
      Dim s As Shape
     
      For Each s In Feuil1.Shapes
        If s.Name Like "btn_*" Then
          Set b = New SheetButton
          b.Addbutton s.DrawingObject.Object, "ProcBouton", Replace(s.Name, "btn_", "")
          ThisWorkbook.buttons.Add b
        End If
      Next
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Je regarderai avec attention (après ce p... d'impératif personnel)
    Mais d'ores et déjà, ces boutons sont déjà existants sur les feuilles.
    Or, je crois pouvoir noter que ton développement en crée de nouveaux.

    Si je schématise
    La feuille Réso contient 2 boutons Btn_Marcel et Btn_Mercatog l'un activant la feuille Marcel, l'autre la feuille Mercatog
    La feuille Marcel contient 2 boutons Btn_Réso et Btn_Mercatog l'un activant la feuille Réso, l'autre la feuille Mercatog
    La feuille Mercatog contient 2 boutons Btn_Réso et Btn_Marcel l'un activant la feuille Réso, l'autre la feuille Marcel

    Une seule procédure serait attachée à ces boutons Go_stats
    Celle-ci serait argumentée d'une variable String indiquant le nom de la feuille à activer

    D'où mon idée d'instancier la classe contenant ces 6 boutons
    L'évènement Click géré par cette classe lancerait l'exécution de la procédure Go_Stats argumentée par le nom du bouton appelant
    Btn_Réso ==> Go_stats("Réso")
    Btn_Mercatog ==> Go_stats("Mercatog")

    Cela étant, vu les circonstances, j'ai lu rapidement.

    Un grand merci à toi.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 946
    Points
    55 946
    Billets dans le blog
    131
    Par défaut
    La procédure ne crée pas les boutons, elle parcourt la feuille pour récupérer les commandbutton activex présents sur une feuille et nommés btn_* (on pourrait les reprendre tous en testant le type d'objet). Si tu en as sur plusieurs feuilles, la procédure qui les ajoute à la collection doit seulement parcourir les feuilles.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    D'accord.
    C'est la lecture du "Add" qui m'a trompé.

    Sans vouloir être présomptueux, ces échanges pourraient intéresser nos amis du Forum.

    Je reviens dès que possible

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 946
    Points
    55 946
    Billets dans le blog
    131
    Par défaut
    Il y deux Add, en fait.

    Le Add de la classe perso. J'aurais dû l'appeler Init, ça aurait été plus logique, et le Add de la collection des boutons située dans le ThisWorkBook...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour les amis du Forum, Bonjour Pierre,



    Quelques remarques à toute fin utile sur ce que j'ai appris et adapté

    1 - Depuis un module standard, il est possible de procéder à l'exécution d'une autre procédure, qui plus est argumentée, incluse dans un module de classe;

    2 - Comme la collection de boutons est déclarée dans le code affecté à l'objet classeur, l'instanciation de la classe peut être lancée également depuis l'évènement Open de celui-ci

    3 - Les variables bouton (btn) et classe (b) peuvent, et à mon habitude, doivent être libérées au bon endroit

    Je reprends ci-dessous le code de façon scolaire (A mon âge, je suis toujours lycéen )

    Module de classe nommé Class_BtnCmd contenant le code

    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
    Option Explicit
     
     'https://www.developpez.net/forums/d2088167/logiciels/microsoft-office/excel/macros-vba-excel/classe-d-objets-boutons-commande-feuilles/
     
    Public WithEvents btn As MSForms.CommandButton
    Private mCalledProcName As String
    Private mArgu_wks As String
     
    Sub Init_bouton(Button As MSForms.CommandButton, ProcName As String, Argu_wks As String)
     
      'Procname est le nom de la procédure Go_Stats
      'Argu_wks est la valeur de l'argument (Résox, Marcel, Mercatog) de cette procédure
     
      Set btn = Button
      mCalledProcName = ProcName
      mArgu_wks = Argu_wks
     
    End Sub
     
    Private Sub btn_Click()
      'Procédure Go_Stats avec son argument
      Application.Run mCalledProcName, mArgu_wks
      'Ici! ibération de variable
      Set btn = Nothing
    End Sub
    Dans le module affecté à l'objet ThisWorkbook, en entête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public collection_btn As New Collection
    Dans la procédure évènementielle Open

    Dans un module standard, pour trois boutons nommés Btn_Stats_Résox, Btn_Stats_Marcel, Btn_Stats_Mercatog
    - répétés dans plusieurs feuilles de calculs
    - à l'activation desquels une procédure "Go_Stats" ayant pour arguments possibles Résox, Marcel et Mercatog va être exécutée

    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
    Option Explicit
     
    'https://www.developpez.net/forums/d2088167/logiciels/microsoft-office/excel/macros-vba-excel/classe-d-objets-boutons-commande-feuilles/
     
    Sub Gest_boutons()
     
    Dim b As Class_BtnCmd
    Dim s As Shape
    Dim w As Variant
     
    For Each w In Array("Résox", "Marcel", "Mercatog")
            For Each s In Worksheets("Stats_" & w).Shapes
                    If s.Name Like "Btn_Stats*" Then
                            Set b = New Class_BtnCmd
                            'Exécution de la procédure incluse dans le module de classe
                            b.Init_bouton Button:=s.DrawingObject.Object, ProcName:="Go_Stats", Argu_wks:=Replace(s.Name, "Btn_Stats_", "")
                            ThisWorkbook.collection_btn.Add b
                            Set b = Nothing
                    End If
            Next s
    Next w
     
    End Sub
    (Comme toujours, je conseille à nos amis de toujours reporter, dans le code, la discussion d'origine qui a servi à son établissement "http\monboforum...")

    Pour illustration, l'unique procédure appelée

    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
    Public Sub Go_Stats(don As String)
     
    Select Case don
            Case "Résox"
                    Call uneautreprocédure
            Case "Mercatog"
                    Call laprocéduredédiéeàlamimercatog
    End Select
     
    With Worksheets("Stats_" & don)
            Application.Goto reference:=.Range("A1"), Scroll:=True
            Application.Goto reference:=.Range("B2"), Scroll:=False
    End With
     
    End Sub
    Question

    Le code que tu proposes, Pierre, utilise la propriété

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shape.DrawingObject.Object
    Je n'en cerne pas très bien la signification.

    Sauf erreur, ou lacune, de ma part, l'aide Microsoft n'est pas très explicite à ce sujet.

    Merci à toi.

    Bonne journée à tous.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 946
    Points
    55 946
    Billets dans le blog
    131
    Par défaut
    Salut Marcel,

    Lorsque tu places un objet sur une feuille, il est encapsulé dans un shape qui possède des méthodes et propriétés différentes de l'objet encapsulé. Son type est lui aussi différent de celui du shape qui le contient.

    Shape.DrawingObject.Object permet d'accéder à l'objet encapsulé qui, dans ce cas-ci est un commandbutton. Or, la méthode Init attend un commandbutton, d'où l'obligation de "décapsuler" le bouton de son shape pour le passer à la méthode.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut Pierre,

    D'accord, merci à toi.

    Par ailleurs, je me suis souvenu que tu évoques cette notion d'encapsulation dans ton tutoriel consacré aux classes d'objet.

    Discussion résolue qui, je l'espère, pourra servir.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


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

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/10/2008, 23h25
  2. Création d'un bouton de commande sur formulaire
    Par larangel dans le forum IHM
    Réponses: 4
    Dernier message: 13/09/2008, 18h15
  3. bouton de commande sous feuille masquée
    Par brewen dans le forum Excel
    Réponses: 1
    Dernier message: 21/08/2007, 18h00
  4. bouton de commande sur le bureau
    Par emmablue dans le forum Access
    Réponses: 6
    Dernier message: 28/07/2006, 11h28
  5. Apparence des boutons de commande sur les forms
    Par azopei dans le forum Access
    Réponses: 2
    Dernier message: 17/02/2006, 14h19

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