Créer un bouton avec VBA et son code
Résolu
hardgratte
Messages postés
450
Date d'inscription
Statut
Membre
Dernière intervention
-
hardgratte Messages postés 450 Date d'inscription Statut Membre Dernière intervention -
hardgratte Messages postés 450 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Créer un bouton avec VBA et son code
- Code ascii - Guide
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un lien pour partager des photos - Guide
- Comment créer un qr code - Guide
22 réponses
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)
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)
Bonjour,
Je pense que dans le code du bouton il manque la référence à la plage MC comme cela :
A tester
A+
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+
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.
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.
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...
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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+
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+
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?
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?
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 ???
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 ???
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.
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.
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)
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)
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!!
"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!!
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)
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)
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)
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)
J'ai mis tout au "minimum" mais malheureusement rien y fait !!! Bigre !!!
Je ne sais plus trop quoi faire...
Je ne sais plus trop quoi faire...
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.
Mais le tableau de cet onglet est vide et je n'ai aucune cases à cocher.
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)
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)
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
J'ai laisser le code sur votre classeur et non Excel ne rentre pas dans le code
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)
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)