Créer un bouton avec VBA et son code

Résolu/Fermé
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 - 30 déc. 2010 à 15:29
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 - 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.

A voir également:

22 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 3/01/2011 à 22:25
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
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
3 janv. 2011 à 18:09
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+
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
3 janv. 2011 à 18:23
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.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
3 janv. 2011 à 18:54
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
3 janv. 2011 à 19:04
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+
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
3 janv. 2011 à 19:57
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?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 janv. 2011 à 21:40
Bonjour,
Peut-être là
A+
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
3 janv. 2011 à 22:10
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 ???
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
4 janv. 2011 à 18:56
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.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 4/01/2011 à 19:50
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)
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
4 janv. 2011 à 20:00
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!!
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 4/01/2011 à 20:13
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)
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
4 janv. 2011 à 20:11
Qu'est ce que vous entendez par "niveau de sécurité"?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 4/01/2011 à 20:20
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)
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
4 janv. 2011 à 20:27
J'ai mis tout au "minimum" mais malheureusement rien y fait !!! Bigre !!!
Je ne sais plus trop quoi faire...
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
4 janv. 2011 à 20:37
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.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 4/01/2011 à 20:39
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)
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
4 janv. 2011 à 20:41
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
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 4/01/2011 à 20:46
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)
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
9 janv. 2012 à 16:23
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
4 janv. 2011 à 21:21
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.
0