Code VBA afin de modifier le nom d'un onglet

Bonjour,

J’ai trouvé sur ce Forum une macro qui modifie le nom de l’onglet en fonction du contenu d’une cellule.

J’ai essayé d’utiliser ce code pour mon travail, mais il y a un petit problème.

Je voudrais pouvoir distribuer mon dossier ci-joint à plusieurs personnes et que celles-ci inscrivent le nom de leurs collaborateurs en B1 sur les diverses feuilles à disposition, ce qui modifie le nom de l’onglet. Jusque là, tout va bien.

https://www.excel-pratique.com/~files/doc/Onglet_noms_automatises.zip

Il y a cependant un petit hic si un collaborateur n’est plus là, auquel cas - lorsque le nom de collaborateur est effacé en B1 - il est inscrit « Feuilx » comme nom de l’onglet. Ceci serait encore acceptable, mais si un deuxième collaborateur n’est plus là, il y a une fenêtre de débogage qui s’ouvre car Excel ne peut pas nommer une deuxième feuille « Feuilx ».

A ce moment, il suffit de cliquer « Fin » dans la fenêtre de débogage et le nom de l’onglet n’est pas modifié, ce qui est tout à fait acceptable également.

A noter que toutes ces feuilles ne doivent pas être supprimées afin d’être à disposition pour de prochains collaborateurs, de manière à ce que les liens avec la feuille « Récapitulatif » ne soient pas détruits (le dossier orginal comporte des feuilles pour une vingtaine de collaborateurs).

Mon seul petit problème vient alors du fait que je désirerais ne pas devoir instruire les utilisateurs à propos de ce message d’erreur.

Voici donc mes deux souhaits pour lesquels j’aurais besoin de votre aide :

- Est-il possible que le nom de l’onglet ne soit tout simplement pas renommé si l’on efface l’entrée en B1 ?

- Si non, est-il possible que la fenêtre de débogage ne s’ouvre pas lorsqu’Excel ne parvient pas à renommer une deuxième feuille « Feuilx » ?

Bonne fin de semaine.

Bonjour

tu peux modifier ta macro de cette façon:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" And Target <> "" Then
ActiveSheet.Name = Target.Value
End If

End Sub

Cela permet de regarder si tu a quelque chose en B1 si oui on change si non on garde le nom d'origine

Salut CB60,

C'est génial, ton code répond tout à fait à mes attentes. Du grand art !

Merci et bonnes salutations.

Bonjour,

J'avais indiqué ce fil comme "Résolu" puis je dois "l'ouvrir" à nouveau car je suis tomber sur un nouveau problème.

Si l'on efface la cellule B1 tel qu'indiqué dans les messages précédents, tout va très bien, le titre de l'onglet reste sur la dernière valeur connue.

Par contre si l'on efface d'autres cellules coinjointement à la cellule B1 - en les sélectionnant et en les effaçant ensemble - j'ai à nouveau la fenêtre de débogage qui s'ouvre, ce qui est absolument inutile dans ce cas.

A nouveau il suffit de cliquer sur "Fin" et le problème est liquidé, mais il serait préférable que cette fenêtre ne s'ouvre pas du tout.

Pouvez-vous encore m'aider ?

Bon dimanche

Bonjour

Tu peux peut être ajouter en début de macro:

On Error Resume Next,

cela permet de ne pas prendre en compte l'anomalie ( certain n'aime pas )

C60

Une fois de plus, merci infiniment de ton aide ; ça fonctionne parfaitement.

Dans mon cas, c'est une macro relativement simple et ça ne devrait pas créer de problème de rajouter ce bout de code, même s'il est normalement déconseillé.

Bonne soirée.

Rechercher des sujets similaires à "code vba afin modifier nom onglet"