Evènement au changement du nom de l'onglet

  • Initiateur de la discussion Initiateur de la discussion Lijh
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

Lijh

Guest
Bonjour,

J'ai une petite macro à réaliser dans un classeur.
Lorsqu'un utilisateur change le nom de l'onglet, je voudrais copier ce nom dans une case de cet onglet (et vice et versa).

Pour le cas où l'utilisateur modifie une case (A2), j'ai trouvé l'évènement lié à la modification d'une cellule.
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  ' Modifier le nom de l'onglet avec la valeur de la cellule A2
  If Target.Column = 1 And Target.Row = 2 Then Sh.Name = Target.Value
End Sub

Par contre, lorsqu'un utilisateur change le nom de l'onglet, quel est l'évènement appelé dans ce classeur ?

Par avance merci.
 
Re : Evènement au changement du nom de l'onglet

Bonjour Lijh,

je ne crois pas qu'il y ait d'évènement "au changement de nom de feuille", mais la fonction suivante te donnera le nom de la feuille où se trouve la formule :

Code:
Function NomFeuil() As String
    Application.Volatile
    NomFeuil = Application.Caller.Parent.Name
End Function

donc dans la feuille de calcul, dans la cellule où tu veux le nom de feuille, il suffira de taper :

=nomfeuil()

et modifie ton code comme ça :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  ' Modifier le nom de l'onglet avec la valeur de la cellule A2
  If Target.Column = 1 And Target.Row = 2 Then 
Sh.Name = Target.Value
application.enableEvents = False
Target.Formula = "=nomfeuil()"
application.enableEvents = True
end if
End Sub
 
Dernière édition:
[Résolu] Evènement au changement du nom de l'onglet

Bonjour tototiti2008,

Merci pour ta réponse. Effectivement, après recherche, il n'existe aucun évènement lié à la modification du nom de l'onglet.

J'ai essayé ta solution, mais elle ne convient pas à mes besoins (merci quand même).

J'ai donc changé mon fusil d'épaule. Le nom de l'onglet sera modifié dans les cas suivant :
1. si la cellule $A2 est modifiée.
2. si l'utilisateur modifie le nom de l'onglet puis édite n'importe quelle cellule, ou change d'onglet.

Ce qui donne :
Code:
'
' Nom de l'onglet, et valeur de la cellule (contenant le nom de l'onglet)
Dim tabName, tabCellName As String

'
' A l'ouverture de l'onglet...
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  ' Evite de réentrer dans _SheetChange()
  Application.EnableEvents = False
  ' Par défaut la cellule $A2 prend le nom de l'onglet
  Sh.Range("A2").Value = Sh.Name
  Application.EnableEvents = True
  tabName = Sh.Name
  tabCellName = Sh.Name
End Sub

'
' Si modification de la cellule $A2 (Nom de l'onglet), repercuter
' la modification sur le nom de l'onglet et vice et versa.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  ' Modification de la cellule $A2
  If Target.Column = 1 And Target.Row = 2 Then
    Sh.Name = Target.Value
  ' Modification d'une autre cellule, mais entre temps
  ' le nom de l'onglet a été modifié.
  ElseIf Sh.Name <> tabCellName Then
    tabCellName = Sh.Name
    tabName = Sh.Name
    ' Evite de réentrer dans _SheetChange()
    Application.EnableEvents = False
    Sh.Range("A2").Value = Sh.Name
    Application.EnableEvents = True
  End If
End Sub
Cela convient très bien aux futurs utilisateurs.

Merci encore pour votre aide 🙂
 
Dernière modification par un modérateur:
Re : Evènement au changement du nom de l'onglet

Zut alors, moi qui trouvait que j'avais trouvé une chouette solution...

c'est pas grave, je me la garde de côté, ça pourra toujours servir 🙂
pour info : qu'est-ce qui ne convient pas à tes besoins ? c'est juste par curiosité
 
Re : Evènement au changement du nom de l'onglet

qu'est-ce qui ne convient pas à tes besoins ?

Bah, heu... c'est une façon polie de dire que je n'ai pas réussi/compris à faire fonctionner ta solution 😛 ou du moins, elle ne fait pas ce que je veux (peut-être un problème de communication comme ils aiment à dire dans les hautes sphères).

Ta fonction NomFeuil() retourne la même chose que Sh.Name. Donc (désolé) mais je n'en voit pas l'utilité à part remplir la cellule. Cette cellule pouvant être modifiée par Target.Value (si $A2 éditée), sinon par Sh.Range("A2").Value. Mais ne connaissant pas toutes les subtilités d'Excel, j'ai peut-être loupé quelque chose 😉

Oula, on voit que c'est vendredi. Bon week-end à tous.

Merci pour ton aide tototit2008.

Remarque pour les Admins: Ne peut on pas mettre un sujet comme [RESOLU] ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
588
Retour