Créer un bouton avec VBA et son code

Résolu
Bonjour,
Je code suivant est sensé créer un bouton (par le code) avec VBA Excel et son code.
Je rencontre néanmoins l'erreur 1004 : Erreur définie par l'application ou par l'objet.
Résumé du programme : le bouton créé doit effacer certaines cellules (MC et MC.offset(0,9)) de ma feuille Excel.
Voici le code :

Private Sub CommandButton2_Click()
Dim MC As Range
Dim BoutonEffacer As OLEObject
Dim NextLine As Long
Dim Code As String

Set MC = Sheets("Feuil2").Range("D19")

MC = ComboBox2.Value
MC.Offset(0, 9) = TextBox2.Value

'Ajouter bouton "Retirer du panier" à chaque produits
Set BoutonEffacer = Sheets("Feuil2").OLEObjects.Add("Forms.CommandButton.1")
With BoutonEffacer
.Top = MC.Offset(0, 11).Top - 5
.Left = MC.Offset(0, 11).Left
.Width = 100
.Height = 30
.Name = "BoutonRetirerPanier"
.Object.Caption = "Retirer du panier"
End With

'Ajouter le code du bouton
Code = "Private Sub BoutonRetirerPanier_Click()" & vbCrLf
Code = Code & " MC.Value="" " & vbCrLf
Code = Code & " MC.Offset(0,9).Value="" " & vbCrLf
Code = Code & "End Sub"

With ThisWorkbook.VBProject.VBComponents(Feuil2.Name).CodeModule
NextLine = .CountOfLines + 1
.InsertLines NextLine, Code
End With

End Sub

Merci à vous.

22 réponses

  1. Au cas ou tu n'aurais pas vu, Lermite222 a actualiser le lien.
    1. J'ai le même problème mais le lien avec la solution est mort .... :(
      1. Salut,

        En effet ça fait longtemps.
        Je ne suis vraiment pas sûre de retrouver ce fichier !!
        Je chercherai quand même ce soir.
        Je te tiens au courant
    2. Maintenant elle y est et l'erreur n'apparaît plus !!!
      Merci à vous. En espérant y arriver sans problèmes cette fois.

      C'est cool qu'il y ai des gens comme vous qui aident généreusement les autres.
      Bonne continuation et bonne année.
      1. Contributeur
        Ta sécurité macro est comme ça ?
        L'expérience instruit plus sûrement que le conseil. (André Gide)
        Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
      2. Dsl j'avais louper une de vos réponses.
        J'ai laisser le code sur votre classeur et non Excel ne rentre pas dans le code
        1. Contributeur
          Sic : Je ne sais plus trop quoi faire...
          Moi non plus...je sais plus comment dire................................................
          Et répondre a TOUTES LES QUESTIONS activerait les choses
          Grrrr°°oo!!?? ~~~xxL'expérience instruit plus sûrement que le conseil. (André Gide)
          Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
          1. Par contre j'ai trouvé qu'il fallait cocher "Faire confiance au projet Visual Basic" dans "sécurité des macros" onglet "éditeurs approuvés".
            Mais le tableau de cet onglet est vide et je n'ai aucune cases à cocher.
            1. J'ai mis tout au "minimum" mais malheureusement rien y fait !!! Bigre !!!
              Je ne sais plus trop quoi faire...
              1. Contributeur
                Développeur >> Sécurité des macros >> voir quel niveau ?
                Et répondre a TOUTES LES QUESTIONS activerait les choses
                L'expérience instruit plus sûrement que le conseil. (André Gide)
                Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                1. Contributeur
                  Tu a transposer le code ou c'est sur mon classeur
                  Ca se passe quand ? est-ce que Excel rentre dans le code et souligne une ligne ?
                  Voir ton niveau de sécurité.
                  Note : il y a 5 références dont OLE...
                  L'expérience instruit plus sûrement que le conseil. (André Gide)
                  Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                  1. Merci à vous mais lorsque je click sur "ajouter bouton" (feuille 2) :
                    "Erreur d'exécution 1004 : l'accès par programme au projet Visual Basic n'est pas fiable."
                    Je pense que ça viens vraiment de chez moi!!
                    1. Contributeur
                      Non.
                      Mais voici un classeur 2007 qui fonctionne
                      ATTENTION.. créer / supprimer des boutons nécessite certaines précautions, voir les remarques sur le classeur.
                      A+

                      L'expérience instruit plus sûrement que le conseil. (André Gide)
                      Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                      1. Bonjour,
                        Cela peut il venir des références à votre avis?
                        Pouvez vous me dire quelles références sont cochées chez vous (vu que ça marche) svp.
                        Merci.
                        1. Contributeur
                          Erreur 1004 la feuille n'est pas bien déterminée.
                          Si tu relance le code AVANT D'AVOIR CREER le bouton beh ....
                          Je n'ai pas essayé sur 2007, je ne pense pas, et aujourd'hui c'est trop tard, je verrais ça demain.
                          A+
                          Edit: en vitesse, c'est dans un module que tu dois mettre le code
                          L'expérience instruit plus sûrement que le conseil. (André Gide)
                          Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                          1. J'ai essayer avec le code que lermite222 m'a donner (le lien).
                            J'ai collé le code dans ma feuil1 : erreur 1004
                            J'ai essayé dans mon workbook : ça a marché !!
                            ... Mais lorsque je clique n'importe où dans le code et que je relance le code : erreur 1004 !!!!!
                            Cela peut il venir de la version 2007 ???
                            1. Alors voila pourquoi créer un bouton avec du code :
                              Déjà je dois créer plusieurs boutons car je doit créer un programme type "site de vente".
                              Lorsque je clique sur "ajouter au panier", chaque produit vient s'ajouter et un bouton doit être créé à chaque fois (pour chaque produit) pour pouvoir retirer le produit du panier.
                              J'espère que c'est clair.
                              Pilas31, vous dites que l'erreur n'apparait plus mais le programme marche t-il? C'est à dire, les cellule MC et MC.offset(0,9) s'effacent elles?
                              1. Contributeur
                                Bonjour Michel,

                                J'ai essayé de comprendre juste l'erreur 1004 mais je n'arrive pas à la reproduire.
                                Chez moi la macro fonctionne et le bouton est bien créé. Donc il y a un problème que je ne m'explique pas.

                                Mais tu as raison on peut reprendre le problème de base pour coder différemment.

                                A+
                                1. Contributeur
                                  Bonjour,

                                  je ne comprend pas pourquoi créer un bouton avec du code

                                  Mon idée aurait été de créer le bouton avec son code "comme si de rien n'était" et d'utiliser les propriétés booléenes "enabled" et "visible" qui seraient mises à "true" par la procédure du bouton 2

                                  l'état "false" serait à installer à l'origine peut -être dans un workbook_open (faut voir suivant ce que l'on veut faire)

                                  mais il y a certainement une bonne raison...
                                  • 1
                                  • 2