Supprimer un bouton après avoir cliqué dessus

Résolu
kb89 - 15 avril 2013 à 10:22
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 - 16 avril 2013 à 17:15
Dans une feuille excel je clique sur un premier bouton qui m'ajoute des lignes correspondant à une commande.
Dans cette ligne que je viens d'ajouter, se trouve un bouton nommé "Créer DS.01".

Le but est de supprimer ce bouton après avoir cliqué dessus.

...
ActiveSheet.Shapes("Button 2").Select
Selection.Cut

End Sub


Le problème : Lorsque j'ajoute une nouvelle ligne de commande, le bouton n'a plus le même nom et change à chaque ajout (button 3, button 4, ...)
Par conséquence ma macro fonctionne seulement la première fois et ensuite ne fonctionne plus.

Comment puis-je faire pour supprimer mon boutton "Créer DS.01" sur chaque ligne de commande ajoutée après avoir cliquer dessus.

Cordialement.

29 réponses

MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
16 avril 2013 à 09:51
Bonjour kb89.

Il y a pourtant une astuce simple si quel que soit le bouton
la même procédure est appelée : Application.Caller ...
Cela renvoie le nom du bouton appelant la procédure.

Si par contre la procédure est appelée aussi autrement que par un bouton,
je t'invite à consulter vivement l'aide VBA intégrée concernant cette propriété
et son exemple afin d'appréhender ses subtilités ...

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 avril 2013 à 10:48
Bonjour,
Pourquoi supprimer puis rajouter ce que l'on a supprimé ?*
Pourquoi ne pas tout simplement jouer avec la propriété visible du bouton ?

On ne voit par ailleurs pas par quel code tu as ajouté ce bouton, ni la nature de ce bouton. Il semble (je dis bien "semble") que le bouton en cause est un bouton de Excel et non (ce qui serait beaucoup plus maniable) un contrôle activex.

Il est vraisemblable que c'est la conception elle-même, qu'il serait préférable de remettre en cause.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Bonjour,

Mon document Excel est un planning.

Le bouton "Créer DS.01" sert à créer un document (Excel) intitulé "Suivi de commande" (Référence DS.01).
Ceci pour chaque commande.
Je souhaite supprimer le bouton après avoir cliquer dessus, pour éviter de pouvoir écraser le fichier déjà créer.
Mon bouton est un bouton de type formulaire.

Ci-dessous le code complet :

Sub Ajouter_commande()
'
' Ajouter_commande Macro
' Macro enregistrée le 26/03/2013
'

Sheets("macro").Select
Rows("7:17").Copy
Sheets("Planning atelier").Select
Rows("18:18").Select
Selection.Insert Shift:=xlDown
Range("A7").Select
End Sub


Sub Créer_DS_01()
'
' Créer_DS_01 Macro
' Macro enregistrée le 03/04/2013 par Kévin Bonfillou
'

msg = "Avez-vous entré le N° de commande ?"
style = vbYesNo + vbQuestion
title = "NUMERO DE COMMANDE"
Response = MsgBox(msg, style, title)
If Response = vbNo Then
Exit Sub

End If

I = 18
le_nom_a_donner = "DS_01 - " & ActiveSheet.Range("B18") & ".xls"


Dim SourceFile, DestinationFile
SourceFile = "C:\Documents and Settings\KBonfillou\Mes documents\Suivi d'une Commande.xls" ' Définit le nom du fichier source.
DestinationFile = "C:\Documents and Settings\KBonfillou\Mes documents\SUIVI COMMANDE" & le_nom_a_donner ' Définit le nom du fichier cible.
' Copie le fichier source dans le fichier cible.
FileCopy SourceFile, DestinationFile


MsgBox "Fichier DS.01 créé!"

ActiveSheet.Shapes("Button 2").Select
Selection.Cut


End Sub

Ma conception est peut être pas la mieux adapter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 avril 2013 à 11:39
Pas vraiment clair, tout cela .
Je vais essayer de comprendre ce que tu sous-entends :
1) montre le code écrit dans la macro de ce bouton, genre, donc :
Sub Bouton1_Clic()
 .... instructions (c'est ce que je veux "voir")
End Sub

2) montre ce que tu voudrais ensuite écrire lors du second clic, genre, donc :
Sub Bouton1_Clic()
.... nouvelle instructions ?(c'est ce que je veux "voir")
End Sub
3) montre à quel momemt/évènement et où tu veux faire apparaître ce bouton. Evènement et code de création
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0

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

Posez votre question
Ma feuille planning de base.



On ajoute une commande.

1) Clique sur le bouton "Ajouter commande"

Sub Ajouter_commande()
'
' Ajouter_commande Macro
' Macro enregistrée le 26/03/2013
'

Sheets("macro").Select
Rows("7:17").Copy (copier la ligne 7 à 17 de la feuille nommé macro)
Sheets("Planning atelier").Select
Rows("18:18").Select Selection.Insert Shift:=xlDown (coller au dessus de la ligne 18)
End Sub

Ce qu'ajoute à ma feuille planning le clique sur le bouton "Ajouter commande"



Ce qui donne :



On renseigne les champs "Intitulé de la commande", "N° commande" et "Date sortie"

On créer la fiche de suivi de commande (Référence DS.01)(Ce document est un document de suivi où sont validées et datées chaques étapes de la commande).

2) Clique sur le boutton "Créer DS.01"

Sub Créer_DS_01()
'
' Créer_DS_01 Macro
' Macro enregistrée le 03/04/2013
'

msg = "Avez-vous entré le N° de commande ?"
style = vbYesNo + vbQuestion
title = "NUMERO DE COMMANDE"
Response = MsgBox(msg, style, title)
If Response = vbNo Then
Exit Sub

End If

I = 18
le_nom_a_donner "DS_01 - " & ActiveSheet.Range("B18") & ".xls" (Nom du fichier créer avec le boutton "Créer DS.01" DS.01 + N° commande (B18))

Dim SourceFile, DestinationFile
SourceFile = "C:\Documents and Settings\KBonfillou\Mes documents\Suivi d'une Commande.xls" ' Définit le nom du fichier source.
DestinationFile = "C:\Documents and Settings\KBonfillou\Mes documents\SUIVI COMMANDE" & le_nom_a_donner ' Définit le nom du fichier cible.
FileCopy SourceFile, DestinationFile ' Copie le fichier source dans le fichier cible.


MsgBox "Fichier DS.01 créé!"

ActiveSheet.Shapes("Button 2").Select
Selection.Cut (Suppression du boutton de CETTE commande)

End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 avril 2013 à 14:39
Ouais ...
Tu n'as absolument pas répondu à mes questions ! Ni à la première, ni à la seconde !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Bah quelles sont tes questions ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 avril 2013 à 17:13
Bah quelles sont tes questions ?

elles sont dans mon message du lundi 15 avril 2013 à 11:39:00 et sont très claires et précises


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
15 avril 2013 à 17:17
Bonjour,
Si tu veux supprimer le dernier bouton qui a été créé tu peux mettre ceci:

Sub deletecoupe() 'suppression du dernier object dans la feuille1
Dim nombreshapes As Integer
nombreshapes = Worksheets(1).OLEObjects.Count 'compte le nombre d'objects dans la feuille1
 Worksheets(1).Activate 'Sélection de la feuille
    Worksheets(1).Shapes(nombreshapes).Delete 'on supprime le dernier
End Sub


@+ Le Pivert
0
Premièrement dans ton message il n'y a pas de question.

Ensuite, ton message n'ai pas clair et précis puisqu'on ne c'est pas compris.

Se que j'ai compris de ton message, c'est que cela n'était pas suffisament clair et qu'il fallait que je détaille.
J'ai donc détaillé ma demande.
0
Merci Le Pivert, je vais essayer ceci.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 avril 2013 à 17:52
Bonjour, Le Pivert,
cela n'empêchera pas que le bouton changera de nom à la prochaine création (C'est Excel quoi gère ainsi : Bouton 1 puis bouton 2, puis bouton 3, etc ... et si on supprime le dernier (disons le 3) === >> le prochain sera malgré tout Bouton 4 et non Bouton 3.
Mais il lui a été demandé entre autres :
- son code de création du bouton ===>> toujours pas là
- la macro (Sub Boutonx_Clic() , ou x suffixe du bouton, qui gère les instructions au clic>> toujours pas là !
Alors ... ===>> dialogue de sourds ...

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
15 avril 2013 à 18:40
Bonjour ucfoutu,

Voilà la demande.

[i]Le problème : Lorsque j'ajoute une nouvelle ligne de commande, le bouton n'a plus le même nom et change à chaque ajout (button 3, button 4, ...)
Par conséquence ma macro fonctionne seulement la première fois et ensuite ne fonctionne plus.

Comment puis-je faire pour supprimer mon boutton "Créer DS.01" sur chaque ligne de commande ajoutée après avoir cliquer dessus.
/i

En réponse à cette demande, je lui donné ce code qui supprime le dernier objet créé sur la feuille sans s'occuper de sa nomination.
Pour ce qui est de la façon dont il crée son button je ne la connais pas!

@+ Le Pivert
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 avril 2013 à 18:58
Oui, Le Pivert,
Mais c'est justement là son problème : celui du changement forcé de nom !
Pour ce qui est de la suppression, son code, même peu orthodoxe (à coup de select puis selection.cut) la faisait déjà


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Mais il lui a été demandé entre autres :
- son code de création du bouton ===>> toujours pas là
- la macro (Sub Boutonx_Clic() , ou x suffixe du bouton, qui gère les instructions au clic>> toujours pas là !
Alors ... ===>> dialogue de sourds ...


Si tu regardes bien, j'ai donné ma macro complète.
Il n'y a pas de code de création de bouton...
Je ne peux te donner des choses que je n'ai pas.

Maintenant la solution proposé par Le Pivert peut être une solution étant donné qu'elle supprime le dernier objet.

Mon but est de trouvé une solution pour supprimer le bouton de ma commande après avoir cliquer dessus.
Le fait qu'il s'appel button2, button3 ou button4 est un problème par rapport à la macro que j'ai écrite.
Mais si je peux contourner le nom du bouton tant mieux.
0
Après peut être que le bouton de type formulaire n'est pas la meilleurs solution, mais je n'en connais pas d'autre pour le moment.
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
16 avril 2013 à 10:24
Je viens de te la donner, cette solution !!

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
Bonjour MarcPL,

Je n'avez pas encore vu ton message.
Je vais essayer également ta proposition.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 avril 2013 à 10:36
Mon but est de trouvé une solution pour supprimer le bouton de ma commande après avoir cliquer dessus.
Le fait qu'il s'appel button2, button3 ou button4 est un problème par rapport à la macro que j'ai écrite.
Mais si je peux contourner le nom du bouton tant mieux.


un bouton dont on n'utilise pas le clic ne sert rigoureusement à rien. Autant ne pas mettre de bouton du_ tout et utiliser l'évèneement selectionchange de la cellule où on l'a mis !!!!

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Merci MarcPL la procédure Application.Caller fonctionne :)
0
Rejoignez-nous