Re : Créer un CommandButton dynamique
Bonsoir,
Pardon de passer pour un "boulet", mais j'ai essayé de modifier le code ainsi (le code se trouve dans le module "Accueil"):
If MenCours = 0 Then
Sheets.Add AFTER:=Sheets(Sheets.Count)
ActiveSheet.Name = (vMois & " " & vAn)
With ActiveWorkbook.Sheets(vMois & " " & vAn).Tab
.Color = vbCyan
.TintAndShade = 0
End With
Dim oOLE As OLEObject
Dim x As Long
Dim Code$
Dim NextLine$
Set oOLE = ActiveWorkbook.ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=760, Top:=20, Width:=100, Height:=30)
oOLE.Name = "CmdSaisie"
ActiveSheet.OLEObjects(1).Object.Caption = "Nouvelle saisie"
Code = "Sub CmdSaisie_Click()" & vbCrLf
Code = Code & "With Activesheet" & vbCrLf
Code = Code & ".Range(""c3"").Value = 10" & vbCrLf
Code = Code & ".Range(""c4"").Value = 10" & vbCrLf
Code = Code & ".Range(""c5"").Value = WorksheetFunction.Sum(.Range(""c3"").Value, .Range(""c4"").Value)" & vbCrLf
Code = Code & "End With" & vbCrLf
Code = Code & "End Sub"
With ActiveWorkbook.VBProject.vbcomponents(ActiveSheet.Name).codemodule
NextLine = .CountOfLines + 1
.insertlines NextLine, Code
End With
Application.DisplayAlerts = False
With Feuil1.Parent.VBProject.vbcomponents(ActiveSheet.CodeName).codemodule
.deleteLines .ProcStartLine("CmdSaisie_Click", 0), .ProcCountLines("CmdSaisie_Click", 0)
End With
Feuil1.OLEObjects.Delete
ActiveWorkbook.Save
End If
et en retour, j'ai le message "Erreur 9" "L'indice n'appartient pas à la sélection" et j'ai la ligne:
With ActiveWorkbook.VBProject.vbcomponents(ActiveSheet.Name).codemodule
qui est surlignée en jaune !!!
grrr, ça m'énerve !
tout ça pour un foutu bouton de m...