Ajout de bouton par VBA et associer une macro

dionys0s

XLDnaute Impliqué
(Re)bonjour le forum

Je cherche à créer un bouton par VBA et à associer du code automatiquement.
Je suis donc allé sur l'excellent tuto de SylkyRoad et j'ai (presque) trouvé mon bonheur.

Le code est le suivant :

Code:
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"
    
    [B][SIZE="3"]With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
        x = .CountOfLines + 1
        .InsertLines x, laMacro
    End With[/SIZE][/B]
End Sub

J'ai compris comment adapter le code pour la création de bouton et de la macro, et tout va bien jusqu'à la première ligne du code jusqu'à la ligne en gras taille 3... J'ai le message suivant :
Erreur d'exécution de type '9':
L'indice n'appartient pas à la sélection.
Et la ligne "With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule" apparait sur fond jaune.
Je ne comprends pas trop ce que je dois modifier pour que ça fonctionne. Je n'ai pas trouvé de référence à activer mentionnée par SilkyRoad dans son tuto, j'ai essayé en mettant le nom exact de l'onglet à la place de ActiveSheet.Name, rien n'y fait...

C'est grave docteur ?

D'avance merci pour votre aide :)
 

kaizert

XLDnaute Nouveau
Re : Ajout de bouton par VBA et associer une macro

Hello tous,
sur Excel 2010
Je reviens là-dessus essayant moi aussi de lier un checkbox (ActiveX) à une macro, mais petit problème. N'étant pas un master of VB, je fais appel aux lumières des masters présents.
je mets un checkbox sur une ligne nouvellement créée qui change le fond de cases sélectionnées.
Pas de pb pour créer le checkbox où je veux sur un changement de contenu de cellule . Pas de pb pour que la macro fasse ce que je veux sur un bouton créer individuellement, mais quand je fait une création multiple, je n'arrive pas à raccrocher la macro à ces checkbox.

J'ai suivi bêtement le code trouvé (merci Silkyroad) mais j'arrive pas à l'adapter.
Je tombe sur une erreur " L'accès par programme au projet Visual Basic n'est pas fiable" :confused:

si y'en a des qui me permettrait de passer de l'interrogation à la compréhension.
Merci
 

Pièces jointes

  • NlleLigne.xlsm
    39.1 KB · Affichages: 79

Pierrot93

XLDnaute Barbatruc
Re : Ajout de bouton par VBA et associer une macro

Bonjour,

pour cette erreur :
Je tombe sur une erreur " L'accès par programme au projet Visual Basic n'est pas fiable"

sous 2003 => barre de menu => outils => macro => sécurité => onglet "éditeurs approuvés => cocher l'option "faire confiance au projet visual basic".

sous 2010 => fichier => options => centre de gestion de la confidentialité => paramètres du centre.... paramètres des macros => cocher "accès approuvé au modèle d'objet du projet vba" ...

bonne soirée
@+
 

kaizert

XLDnaute Nouveau
Re : Ajout de bouton par VBA et associer une macro

Re-hello
En fait, quand je clique sur mon nouveau checkbox, ça ne prend pas la macro que je veux (CheckBox1_click()), mais ça m'en crée automatiquement une autre avec le même nom mais vide et sans End sub :confused:
merci
 

Pierrot93

XLDnaute Barbatruc
Re : Ajout de bouton par VBA et associer une macro

Re,

et pourquoi créer dynamiquement les contrôles... pas des plus simples quand on débute.... pour le code préférable de passer par un module de classe, ton code sera figé, restera à initialiser la classe aprés la création du "checkbox".... tu trouveras des exemples en ce sens sur le forum....
 

Statistiques des forums

Discussions
312 677
Messages
2 090 824
Membres
104 677
dernier inscrit
soufiane12