Stocker le nom d'un Shape pour le supprimer plus tard

cabsen

XLDnaute Junior
Bonjour à tous,

Pour une petite application, j'ai besoin de créer / supprimer un bouton.

Je parviens à :
  • Créer le bouton
  • Modifier son texte en fonction de mes besoins
  • Positionner le bouton où je le souhaite

Je ne parviens pas à :
  • Stocker son nom de type "Button 000" dans une variable

Quelqu'un saurait-il m'indiquer comment récupérer et stocker ce nom incrémentiel affecté par Excel lors de la création du bouton dans le but de pouvoir détruire ce bouton et pas un autre un peu plus tard dans le programme ?

D'avance merci.
 

cabsen

XLDnaute Junior
Re : Stocker le nom d'un Shape pour le supprimer plus tard

Le soucis est que je souhaite le faire par Macro et que le renommage nécessite de connaître au préalable le nom Excel de l'objet :

ActiveSheet.Shapes("Button 123").Name = "MEFapprenti"

Et je ne connais pas le numéro de l'objet qui évolue constamment au fur et à mesure de l'utilisation de mon application
 

pierrejean

XLDnaute Barbatruc
Re : Stocker le nom d'un Shape pour le supprimer plus tard

Bonjour cabsen

Hello Hasco :):)

une fonction personnalisée pour avoir le dernier bouton construit dans une feuille

Code:
Function dernier_bouton_construit(nomfeuille)
For n = Sheets(nomfeuille).Shapes.Count To 1 Step -1
  If InStr(Sheets("Feuil1").Shapes(n).Name, "Button") <> 0 Then
    dernier_bouton_construit = Sheets("Feuil1").Shapes(n).Name
    Exit For
  End If
Next n
End Function
 
G

Guest

Guest
Re : Stocker le nom d'un Shape pour le supprimer plus tard

Re,

hello Pierre-Jean:)

Si tu crées tes boutons pas macro, à un moment donné tu as forcément une ligne
Shapes.add etc.....

Tu peux faire
Dim shp as Shape
Set shp = ActiveSheet.Shapes.Add(....,.....)
shp.Name ="LeJouliBouton"

Tout ceci n'est que pure théorie tant qu'on aura pas un fichier exemple avec la macro.:)

A+
 

cabsen

XLDnaute Junior
Re : Stocker le nom d'un Shape pour le supprimer plus tard

Merci à vous deux,

J'ai utilisé la fonction de pierrejean pour obtenir :

Code:
Sub Macro4()

Dim n As Integer
Dim nombouton As String

    ActiveSheet.Buttons.Add(140, 196, 84, 14).Select
    
    For n = ActiveSheet.Shapes.Count To 1 Step -1
    MsgBox n
        If InStr(Sheets("accueil").Shapes(n).Name, "Button") <> 0 Then
            nombouton = Sheets("accueil").Shapes(n).Name
           Exit For
        End If
    Next n
    
    ActiveSheet.Shapes(nombouton).Name = "MEFapprenti"
    Selection.OnAction = "effacerPlages"
    Selection.Characters.Text = "Apprentis"

End Sub

Auparavant, j'avais ceci en nommant le Shape manuellement avec l'enregistreur de Macro :

Code:
Sub Macro4()

    ActiveSheet.Buttons.Add(140, 196, 84, 14).Select
    ActiveSheet.Shapes("MEFapprenti").Name = "MEFapprenti"
    Selection.OnAction = "effacerPlages"
    Selection.Characters.Text = "Apprentis"

End Sub

Merci donc à tous les deux !
 

pierrejean

XLDnaute Barbatruc
Re : Stocker le nom d'un Shape pour le supprimer plus tard

Re

En reprenant le #5 de mon ami Hasco :) :) on obtient plus simple:

Code:
    ActiveSheet.Buttons.Add(140, 196, 84, 14).Select
    Selection.Name = "MEFapprenti"
    Selection.OnAction = "effacerPlages"
    Selection.Characters.Text = "Apprentis"
 

Discussions similaires

Réponses
3
Affichages
320

Statistiques des forums

Discussions
312 504
Messages
2 089 073
Membres
104 018
dernier inscrit
Mzghal