Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Excel VBA creation bouton

1 réponse
Avatar
Loïc
Bonjour,

Je souhaite créer un bonton en VBA dans une feuille que je viens de créer,
et ensuite associer du code a ce bouton.
J'utilise le code suivant qui me génère une erreur 9... et je ne comprend
pas pourquoi.

Le code :<<
... Dim Ma_Nouvelle_Feuille As Worksheet
Dim Mon_Bouton As OLEObject
Dim Code_Bouton As String
Dim NextLine As Long

' *** Création nouvelle feuille ***
Set Ma_Nouvelle_Feuille = Sheets.Add(, Count:=1, after:=Sheets(1))
Ma_Nouvelle_Feuille.Name = "Synthèse"
Ma_Nouvelle_Feuille.Select

' *** Mise en forme des titres ***
... du code qui marche ...

' *** Mise en place du bouton fermer ***
Set Mon_Bouton =
ActiveWorkbook.ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1",
_
Link:=False, DisplayAsIcon:=False, Left:=10, Top:=10, Width:=100,
Height:=30)

Mon_Bouton.Name = "B_Fermer_Synthese"
Mon_Bouton.Object.Caption = "Fermer"

' mise du code
Code_Bouton = "Private Sub B_Fermer_Synthese_Click()" & vbCrLf
Code_Bouton = Code_Bouton & "Sheets(""Synthèse"").select" & vbCrLf
Code_Bouton = Code_Bouton & "ActiveWindow.SelectedSheets.Delete" & vbCrLf
Code_Bouton = Code_Bouton & "End Sub"


ActiveWorkbook.VBProject.VBComponents(Ma_Nouvelle_Feuille.Name).CodeModule.AddFromString (Code_Bouton)
>>
Si quelqu'un à une idée, merci !

Du temps que j'y suis j'ai également des problèmes pour définir la police du
texte du bouton...

Loïc.

1 réponse

Avatar
GD
Bonsour® Loïc avec ferveur ;o))) vous nous disiez :

Je souhaite créer un bonton en VBA dans une feuille que je viens de
créer,
et ensuite associer du code a ce bouton.
J'utilise le code suivant qui me génère une erreur 9... et je ne
comprend
pas pourquoi.



news://news.microsoft.com/microsoft.public.fr.excel
http://www.excelabo.net

Sub Creer_Boutons()
Dim cell As Range
Dim BoutonCourant As Shape
'----hauteur de ligne=hauteur du bouton
Selection.EntireRow.RowHeight = 36
'----creer un bouton dans chaque cellule de la selection
For Each cell In Selection
With cell
' mettre en commentaire selon besoins
' ------Bouton rectangulaire avec biseaux
Set BoutonCourant = ActiveSheet.Shapes.AddShape(msoShapeBevel, .Left, .Top, .Width, .Height)
'-------Bouton Oval
'Set BoutonCourant = ActiveSheet.Shapes.AddShape(msoShapeOval, .Left, .Top, .Width, .Height)
With BoutonCourant
.Fill.ForeColor.SchemeColor = 10 ' rouge
.Fill.BackColor.SchemeColor = 11 ' vert
.Line.ForeColor.SchemeColor = 22 ' gris
.OLEFormat.Object.Caption = "O"
'----affecter une macro
.OnAction = "Bouton_Click"
.Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With '(caption)
End With '(bouton)
.Value = False '---- la cellule reçoit FAUX=bouton Rouge, VRAI=Bouton Vert
End With '(cellule)
DoEvents
Next
[a1].Select
End Sub

Sub Bouton_click()
Dim BoutonCourant As Shape
Set BoutonCourant = ActiveSheet.Shapes(Application.Caller)
With BoutonCourant
'---- à modifier si l'on souhaite un comportement Tri-state !!!!!!
'---- la cellule reçoit FAUX = bouton Rouge VRAI=Bouton Vert
Range(.TopLeftCell.Address) = (.Fill.ForeColor.SchemeColor = 10)
'---- la couleur du bouton est modifié ( ici couleur Rouge ou Vert)
.Fill.ForeColor.SchemeColor = IIf(.Fill.ForeColor.SchemeColor = 10, 11, 10)
'---- le texte du bouton est modifié ( ici texte alternatif "O" ou "I")
.OLEFormat.Object.Caption = IIf(.Fill.ForeColor.SchemeColor = 10, "O", "I")
End With
End Sub