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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 533 fois - Téléchargée 21 fois

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

Ajouter un commentaire

Commentaires

Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
Bonjour,

10/10 pour ma part. Ce code me donne un support pour une futur dépassement de limitation d'Excel...

Merci.
Amicalement,
Us.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
Effectivement... flag corrigé.

etniqs > Merci d'être vigilant la prochaine fois
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
1
ce n'est pas du .Net ça

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.