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

Signaler
Messages postés
458
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
27 juillet 2017
-
hardgratte
Messages postés
458
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
27 juillet 2017
-
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.

Messages postés
1859
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
27 novembre 2019
535
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+
Messages postés
458
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
27 juillet 2017
60
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.
Messages postés
16011
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
12 décembre 2019
2838
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...
Messages postés
1859
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
27 novembre 2019
535
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+
Messages postés
458
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
27 juillet 2017
60
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?
Messages postés
8714
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
24 novembre 2019
1028
Bonjour,
Peut-être là
A+
Messages postés
458
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
27 juillet 2017
60
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 ???
Messages postés
8714
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
24 novembre 2019
1028
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)
Messages postés
458
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
27 juillet 2017
60
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.
Messages postés
8714
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
24 novembre 2019
1028
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)
Messages postés
458
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
27 juillet 2017
60
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!!
Messages postés
8714
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
24 novembre 2019
1028
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)
Messages postés
458
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
27 juillet 2017
60
Qu'est ce que vous entendez par "niveau de sécurité"?
Messages postés
8714
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
24 novembre 2019
1028
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)
Messages postés
458
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
27 juillet 2017
60
J'ai mis tout au "minimum" mais malheureusement rien y fait !!! Bigre !!!
Je ne sais plus trop quoi faire...
Messages postés
458
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
27 juillet 2017
60
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.
Messages postés
8714
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
24 novembre 2019
1028
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)
Messages postés
458
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
27 juillet 2017
60
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
Messages postés
8714
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
24 novembre 2019
1028
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
Messages postés
8714
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
24 novembre 2019
1028
Messages postés
458
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
27 juillet 2017
60
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 2