cs_nitho
Messages postés130Date d'inscriptionjeudi 16 avril 2009StatutMembreDernière intervention 8 décembre 2015
-
8 août 2011 à 09:50
cs_nitho
Messages postés130Date d'inscriptionjeudi 16 avril 2009StatutMembreDernière intervention 8 décembre 2015
-
8 août 2011 à 10:06
Salut à tous,
dites je cherche à créer du code qui créé des boutons de commande et associe à ces boutons une macro
j'ai trouvé ce code, mais vba plante sur la ligne où j'ai marqué Erreur ...
Sub AjouteSerieBoutonsFormulaires()
Dim i As Byte
Dim x As Integer
Dim Code As String
Dim S As Shape
For i = 2 To 11
'création des boutons dans la Feuil1
With Feuil1
Set S = .Shapes.AddFormControl(xlButtonControl, .Cells(i, 2).Left, .Cells(i, 2).Top, _
.Cells(i, 2).Width, .Cells(i, 2).Height)
End With
'Définit le texte qui va s'afficher dans le bouton.
S.TextFrame.Characters.Caption = "bouton " & i
'Attache une macro au bouton
S.OnAction = "MacroBouton"
Next i
'Crée dynamiquement la macro attachée aux boutons.
Code = "Sub MacroBouton" & vbCrLf
Code = Code & "MsgBox Application.Caller" & vbCrLf
Code = Code & "End Sub"
'Insertion de la macro dans le **Module1**.
'(adaptez le nom du module si nécessaire)
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule 'Erreur !!!
x = .CountOfLines + 1
.InsertLines x, Code
End With
End Sub
cs_nitho
Messages postés130Date d'inscriptionjeudi 16 avril 2009StatutMembreDernière intervention 8 décembre 2015 8 août 2011 à 10:06
Pareil pour la version ActiveX
Sub AjoutCommandButton_Feuille()
Dim Ws As Worksheet
Dim Obj As OLEObject
Dim laMacro As String
Dim x As Integer
'Ajout feuille
Set Ws = Sheets.Add
'Ajout CommandButton dans la feuille
Set Obj = Ws.OLEObjects.Add("Forms.CommandButton.1")
With Obj
.Left = 50 'position horizontale
.Top = 50 'position verticale
.Width = 140 'largeur
.Height = 30 'hauteur
.Object.BackColor = RGB(235, 235, 200) 'Couleur de fond
.Object.Caption = "Supprimer données feuille"
End With
'Paramètres pour la création de la macro:
'(suppression contenu cellules)
laMacro = "Sub CommandButton1_Click()" & vbCrLf
laMacro = laMacro & "Cells.Clear" & vbCrLf
laMacro = laMacro & "End Sub"
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule 'Erreur !!!
x = .CountOfLines + 1
.InsertLines x, laMacro
End With
End Sub