Bonjour à tous,
Je vous soumet un problème sur lequel je me casse les dents depuis 2 jours.
Comment inserer dynamiquement plus de 1 bouton et bien sur le "sub" qui va bien avec.
Un bouton et un module : pas de problème cela fonctionne très bien.
Mais dès lors que le numéro du "CommandButton" est différent de 1 cela ne fonctionne plus et je ne suis pas parvenu à ajouter un 2ème sub.
Exemple de code qui fonctionne très bien (tiré des FAQ du site) s'il n'y aqu'un seul sub et qui génére une erreur fatal d'excel si l'on veut ajouter un 2ème module.
Merci à vous tous de m'indiquer des pistes de recherches.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 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 x = .CountOfLines + 1 .InsertLines x, laMacro End With Set Obj = Ws.OLEObjects.Add("Forms.CommandButton.1") With Obj .Left = 50 'position horizontale .Top = 350 'position verticale .Width = 140 'largeur .Height = 30 'hauteur .Object.BackColor = RGB(235, 235, 200) 'Couleur de fond .Object.Caption = "Ajouter données feuille" End With 'Paramètres pour la création de la macro: '(suppression contenu cellules) laMacro = "Sub CommandButton2_Click()" & vbCrLf laMacro = laMacro & "Cells.Clear" & vbCrLf laMacro = laMacro & "End Sub" With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule x = .CountOfLines + 1 .InsertLines x, laMacro End With End Sub
Partager