Création d'une commandbutton lors d'un click (à la volée) et y scotcher un événement click (donc une macro) : class witheven

Contenu du snippet

Code simplifié permettant de créer un bouton de commande lors d'un événement dans une feuille Excel (click sur une certaine cellule)
et coller à ce bouton une fonction personnalisée
delete du bouton une fois la fonction appliquée.

la fonction pour l'instant n'est que de retourner l'adresse de la cellule que l'on a cliqué ...

Source / Exemple :


 ' dans le thisworbook : ' lors du click_droit dans une cellule, si elle contient le mot "coucou" Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal target As Range, Cancel As Boolean)       If InStr(1, target.formulalocal, "coucou") > 0 Then             Sh.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _                                                                         , DisplayAsIcon:=False, Left:=target.Left, Top:=target.Top + target.Height, _                               Width:=target.Width, Height:=target.Height * 2).Name = "temp"             Addcommand target.AddressLocal             Cancel = True         End If     End If End Sub Sub Addcommand (ByVal ref As String)     Dim tmpbutton As OLEObject     Set Gbutton = New class_bulle     Gbutton.rge = ref     Set Gbutton.Buttn = ActiveSheet.OLEObjects("temp").Object End Sub '--------------------------------------------------------------------------------------------- ' Dans un module de classe : (class_bulle) '--------------------------------------------------------------------------------------------- Private WithEvents Butt As MSForms.CommandButton Private addres As String Property Set Buttn(oButton As MSForms.CommandButton)     Set Butt = oButton     Butt.Caption = "Insérer la Valeur par Defaut.."     Butt.BackColor = 10079487 End Property Property Get Buttn() As MSForms.CommandButton     Set Buttn = Butt End Property Public Property Let rge(rg As String)     addres = rg End Property Public Property Get rge() As String    rge = addres End Property Private Sub Butt_Click()     MsgBox "add : " & addres     ActiveSheet.Shapes("temp").delete End Sub 

Conclusion :


C'est tout, j'espère que cela vous sera pratique, vu le temps que j'ai mis à ne pas trouver d'info sur le net ....

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.