Microsoft 365 plusieurs command button qui inscrivent au fil de l'eau

gilles37

XLDnaute Occasionnel
Bonjour le forum🖐️

J'ai plusieurs commandbutton disons 10, je souhaiterais qu'a chaque fois l'un de ces boutons est cliqué que cela enregistre dans un sheet2 le nom du commanbutton cliqué date et heure. si un second, l'est, meme chose sur la feuille 2 inscriptions a la suite du précédent.....je bloque🤔

merci pour votre aide et bon week end a toutes et tous
 

Staple1600

XLDnaute Barbatruc
Un exemple repris dans mes archives
Un classeur avec deux feuilles
Sur la feuille 1, N CommandButton

Dans un module de classe nommé: Classe1
VB:
Public WithEvents ButtonGroup As CommandButton
Private Sub ButtonGroup_Click()
Feuil2.Cells(Rows.Count, 1).End(3)(2) = ButtonGroup.Name & "|" & Date & "-" & Time
End Sub
Dans un module standard
VB:
Dim Buttons() As New Classe1
Sub Initier_Classe()
Dim Sh As Worksheet, Obj As OLEObject, ButtonCount As Integer
    Set Sh = Sheets(1)
    Erase Buttons
        For Each Obj In Sh.OLEObjects
            If TypeName(Obj.Object) = "CommandButton" Then
                ButtonCount = ButtonCount + 1
                ReDim Preserve Buttons(1 To ButtonCount)
                Set Buttons(ButtonCount) = New Classe1
                Set Buttons(ButtonCount).ButtonGroup = Obj.Object
            End If
     Next Obj
End Sub
Lancer la procédure Initier_Classe avant de commencer le test
Puis cliquer sur les boutons présents sur la feuille 1
Ensuite aller voir le résultat sur la feuille 2

PS: Test OK sur mon PC.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Gilles, Staple,
Si les boutons sont dans la feuille, alors un ex possible en PJ avec :
VB:
Sub Enregistre()
    With Sheets("Feuil2")
        L = 1 + .Range("A65500").End(xlUp).Row
        .Cells(L, 1) = Application.Caller
        .Cells(L, 2) = Sheets("Feuil1").Shapes(Application.Caller).TextFrame2.TextRange.Text
        .Cells(L, 3) = Now
    End With
End Sub
Sont enregistrés en feuille 2 le nom du bouton, le texte qu'il contient et la datation.
 

Pièces jointes

  • Gilles.xlsm
    16.1 KB · Affichages: 3

Staple1600

XLDnaute Barbatruc
Bonjour sylvanu

J'avais pensé à Application.Caller
Mais à chaque fois que tu ajoutes un bouton, il faut lui affecter la macro Enregistre, non ?

PS: Tes boutons ne sont pas des pas CommandButton mais des Shapes
Le message#1 parlant de CommandButton, j'ai fait dans le CommandButton ;)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Staple,
1- On peut rajouter simplement dans Workbook_Open :
VB:
Private Sub Workbook_Open()
For Each S In ActiveSheet.Shapes
    S.Select
    Selection.OnAction = "EnregistreInfo"
Next
End Sub
2- Je n'utilise jamais de commandbuttons, c'est "moche" et peu convivial. Je préfère les "formes" on peut tout faire, de toutes forme, même y mettre des images, ... voir PJ
 

Pièces jointes

  • Gilles V2.xlsm
    28.6 KB · Affichages: 2

Staple1600

XLDnaute Barbatruc
Re

@sylvanu
On peut aussi mettre des images dans un CommandButton ;)

PS: J'aime bien les classeurs moches ;)
(Sans cochoncetés: juste des datas, pas de fioritures)

Histoire de te faire plaisir, je vais me forcer ;)
(tout en me faisant aussi plaisir ;))
VB:
Sub Enregistre_A_ma_sauce()
With Application
Feuil2.Cells(Rows.Count, 1).End(3)(2).Resize(, 3) = Array(.Caller, Sheets("Feuil1").Shapes(.Caller).TextFrame2.TextRange.Text, Now)
End With
End Sub
PS: Ca a l'air de fonctionner. A voir dans la vraie vie.
 

Staple1600

XLDnaute Barbatruc
Re

Bah, tu vas dans VBE, et tu éxécutes la macro

Ou en reprenant l'idée de Sylvanu, tu l'appelles dans Workbook_Open
Comme ceci
VB:
Private Sub Workbook_Open()
Call Initier_Classe
End Sub
NB: Ce code est à mettre dans ThisWorkBook
(pas dans un module standard)
 

Staple1600

XLDnaute Barbatruc
Re

@gilles37
Donc tu ne dis dans ton message#1 que tu utilises des CommandButton
mais des formes automatiques déguisées en CommandButton ;)

@sylvanu
Une personne ne maitrisant pas Excel ne devrait pas devoir à faire ALT+F11
Une personne qui découvre les joies du tableur devrait d'abord exploiter toutes les fonctionnalités natives d'Excel (surtout avec les dernières versions)
Une personne qui travaille avec Excel pour des tâches bureautiques devrait ne pas avoir besoin de VBA.

En même temps, comme dirait Manu, personne n'empêchera personne d'utiliser Excel comme il le souhaite ;)
(Mais cela me remue en dedans de moi, quand je vois comment PQ, TCD, formules, filtre auto et autres chouettes choses sont remisées aux oubliettes au profit de VBA) ;)

PS: C'est juste une opinion personnelle, pas une attaque ad nominem envers qui que soit.
(A part peut-être une légère ironie envers Manu ;))