Supprimer un bouton après avoir cliqué dessus [Résolu]

kb89 - 15 avril 2013 à 10:22 - Dernière réponse : MarcPL 172 Messages postés jeudi 8 décembre 2011Date d'inscription 21 juillet 2013 Dernière intervention
- 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.
Afficher la suite 

29 réponses

Répondre au sujet
MarcPL 172 Messages postés jeudi 8 décembre 2011Date d'inscription 21 juillet 2013 Dernière intervention - 16 avril 2013 à 09:51
+3
Utile
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 !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de MarcPL
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 15 avril 2013 à 10:48
0
Utile
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.
Commenter la réponse de ucfoutu
0
Utile
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.
Commenter la réponse de kb89
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 15 avril 2013 à 11:39
0
Utile
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.
Commenter la réponse de ucfoutu
0
Utile
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
Commenter la réponse de kb89
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 15 avril 2013 à 14:39
0
Utile
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.
Commenter la réponse de ucfoutu
0
Utile
Bah quelles sont tes questions ?
Commenter la réponse de kb89
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 15 avril 2013 à 17:13
0
Utile
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.
Commenter la réponse de ucfoutu
cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention - 15 avril 2013 à 17:17
0
Utile
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
Commenter la réponse de cs_Le Pivert
0
Utile
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.
Commenter la réponse de kb89
0
Utile
Merci Le Pivert, je vais essayer ceci.
Commenter la réponse de kb89
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 15 avril 2013 à 17:52
0
Utile
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.
Commenter la réponse de ucfoutu
cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention - 15 avril 2013 à 18:40
0
Utile
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
Commenter la réponse de cs_Le Pivert
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 15 avril 2013 à 18:58
0
Utile
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.
Commenter la réponse de ucfoutu
0
Utile
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.
Commenter la réponse de kb89
0
Utile
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.
Commenter la réponse de kb89
MarcPL 172 Messages postés jeudi 8 décembre 2011Date d'inscription 21 juillet 2013 Dernière intervention - 16 avril 2013 à 10:24
0
Utile
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 !
Commenter la réponse de MarcPL
0
Utile
Bonjour MarcPL,

Je n'avez pas encore vu ton message.
Je vais essayer également ta proposition.
Commenter la réponse de kb89
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 16 avril 2013 à 10:36
0
Utile
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.
Commenter la réponse de ucfoutu
0
Utile
Merci MarcPL la procédure Application.Caller fonctionne :)
Commenter la réponse de kb89

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Supprimer un bouton après avoir cliqué dessus - page 2