VBA erreur 1004 sur nom onglet = nom cellule

Bonjour à tous,

Je suis novice en VBA, j'ai du mal à trouver la solution au problème suivant.

J'ai mis en place le code ci-dessous pour que l'onglet se nomme de la même façon que la cellulle B2.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Cells(2, 1) <> "" Then ActiveSheet.Name = Cells(2, 2)  'Cells(lig,col) Correspond à la cellule B2
End Sub

Or , quand j'active la protection, il apparaît le message suivant:

erreur d'exécution 1004 erreur définie par l'application ou par l'objet

Ce qui est normal si la cellule B2 est vide car le nom de l'onglet ne peut pas être vide.

Auriez-vous une solution pour éviter l'apparition de ce message ?

Je vos remercie pour votre aide.

P.J:

14prepa-bonus.xlsm (59.79 Ko)

Bonsoir,

L'utilisation des évènements nécessite quelques précautions et une vue claire de ce que l'on doit absolument faire ou absolument éviter.

Toujours cerner les conditions de déclenchement de l'action : ici B2, donc si Target n'est pas B2 il y a lieu de ne rien faire, ce qui n'est pas établi dans le code fourni.

Cells(2, 1) est une expression non qualifiée, ça s'évite toujours mais encore plus dans une évènementielle. Mais au cas particulier s'il s'agit de la cellule déclencheuse, c'est Target (qui elle constitue une expression qualifiée sans ambiguïté), et s'il doit y avoir correspondance entre cette cellule et le nom de feuille, on ne peut accepter son effacement, donc il convient d'annuler la modif. dans ce cas...

La feuille c'est Sh (c'est VBA qui la fournit...), on évite donc ActiveSheet, Sh.Name = Target ayant toute la précision requise.

En suivant quelques règles de base, on évite bien des problèmes ultérieurs.

Cordialement.

Bonjour,

Je vais tenter de lire et de le comprendre.

Rechercher des sujets similaires à "vba erreur 1004 nom onglet"