Executer macro au changement de nom d'une feuille

Bonjour à tous,

J'aimerai faire apparaitre un message lorsque l'on renomme une feuille.

MsgBox "Attention, renommer une feuille affectera les macro associées"

Mon problème est que je n'arrive pas à trouver la fonction qui me permet d'executer la macro uniquement au changement du nom d'une feuille.

Avez vous des solutions?

Merci d'avance

Bonjour,

C'est pour cela que quand tu programmes, il ne faut pas faire référence au nom des feuilles ...

Tes feuilles ont 2 noms. Un nom pour l'interface Excel, que les utilisateurs peuvent changer, et un nom en quelque sorte caché, réservé pour le VBA.

image

Ici, la feuille 1 s'appelle "sujet" dans Excel.

Tu peux y faire référence par :

sheets("sujet") --> si l'utilisateur change le nom, c'est cuit

Feuil1 --> l'utilisateur n'a pas accès à ça, donc peu importe le nom de la feuille, les références seront toujours bonnes

sheets(1)

Bonjour,

Il n'existe pas d'événement natif pour le renommage d'une feuille. Ce qui peut être fait, c'est de stocker le nom d'une feuille quand elle est activée et d'effectuer une comparaison avec le nom stocké lorsqu'elle est désactivée. Un peu compliqué tout de même et mieux vaut donc s'en tenir à la prévention en codant comme indiqué par JoyeuxNoel.

Bonjour et merci pour vos réponses,

Le problème est que l'utilisateur à plusieur moyen de renommer une feuille (double click sur la feuille, ou click droit+renommer). Apres avoir renommé la feuille, l'utilisateur ne quitte pas forcement la feuille (evenement desactivation feuille).

Est-il possible de créer une fonction qui permetterai de créer un evenement "changement de nom de feuille"?

Merci

Cordialement

Bonjour,

Ce code inséré dans ThisWorkbook devrait annuler toute modification

Dim nom_feuille_active As String

Private Sub Workbook_Open()
    nom_feuille_active = ActiveSheet.Name
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    nom_feuille_active = Sh.Name
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    If Sh.Name <> nom_feuille_active Then MsgBox "changement du nom de la feuille interdit"
    Sh.Name = nom_feuille_active
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If ActiveSheet.Name <> nom_feuille_active Then MsgBox "changement du nom de la feuille interdit"
    ActiveSheet.Name = nom_feuille_active
End Sub
Rechercher des sujets similaires à "executer macro changement nom feuille"