Posez votre question Signaler

Créer un bouton avec VBA et son code [Résolu]

hardgratte 320Messages postés 16 juin 2009Date d'inscription 13 mai 2012Dernière intervention - Dernière réponse le 9 janv. 2012 à 18:35
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.
Lire la suite 

Créer un bouton avec VBA et son code »

24 réponses
Réponse
+0
moins plus
Bonjour,

Je pense que dans le code du bouton il manque la référence à la plage MC comme cela :


'Ajouter le code du bouton
Code = "Private Sub BoutonRetirerPanier_Click()" & vbCrLf
'---
Code = Code & "Dim MC As Range" & vbCrLf
Code = Code & "Set MC = Sheets(""Feuil2"").Range(""D19"")" & vbCrLf
'---
Code = Code & " MC.Value="" " & vbCrLf
Code = Code & " MC.Offset(0,9).Value="" " & vbCrLf
Code = Code & "End Sub"



A tester

A+
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
Merci de m'aider.
Le problème n'est malheureusement pas résolu (même si vous aviez raison, il manquait la référence de MC).
Le problème est situé au niveau de ce code :

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

Lorsque je le supprime, l'erreur disparait, mais le code ne fonctionne quand même pas.
Merci encore.
Bonne et heureuse année.
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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+
Ajouter un commentaire
Réponse
+0
moins plus
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?
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
Peut-être là
A+
Ajouter un commentaire
Réponse
+0
moins plus
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 ???
Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
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!!
Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
Qu'est ce que vous entendez par "niveau de sécurité"?
Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
J'ai mis tout au "minimum" mais malheureusement rien y fait !!! Bigre !!!
Je ne sais plus trop quoi faire...
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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)
lermite222- 9 janv. 2012 à 16:23
Actualisation du lien
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Ce document intitulé « Créer un bouton avec VBA et son code » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Créer un bouton avec VBA et son code - page 2