Obtenir le nom de la feuille de calcul dans une cellule (Microsoft Excel)
Kevin a un classeur contenant 36 feuilles de calcul. Il a besoin d’un moyen, dans chacune des feuilles de calcul, d’avoir le nom de la feuille de calcul (à partir de l’onglet de la feuille de calcul)
dans une cellule de cette feuille de calcul. Il a créé une fonction définie par l’utilisateur qui renvoie le nom de la feuille de calcul, mais elle renvoie le même nom sur les 36 feuilles de calcul – le nom de la feuille de calcul affichée lorsque la fonction définie par l’utilisateur est exécutée. Il se demande s’il existe une macro, sous forme de fonction définie par l’utilisateur (UDF), qu’il peut utiliser et qui retournera toujours le nom de la feuille sur laquelle la fonction est utilisée. En d’autres termes, dans son classeur de 36 feuilles de calcul, il doit renvoyer 36 résultats différents, selon la feuille de calcul dans laquelle il est utilisé.
La réponse courte est oui, il y a un moyen. En fait, il y a plusieurs façons. Et, chose intéressante, vous n’êtes pas obligé d’utiliser une macro ou une fonction si vous ne le souhaitez pas. Par exemple, voici une formule de feuille de calcul régulière qui fonctionnera dans n’importe quelle cellule de la feuille de calcul:
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)
L’instance de la fonction CELL dans cette formule renvoie le nom complet de la feuille de calcul, y compris le nom de fichier et le chemin du fichier. L’utilisation de la fonction FIND entraîne la suppression de tout sauf le nom de la feuille de calcul.
Notez l’utilisation d’une référence de cellule (A1) dans chaque instance de la fonction CELL. Cela force la fonction CELL à renvoyer le nom de la feuille de calcul qui contient la référence de cellule; sans elle, vous obtiendrez le même résultat (la première feuille de calcul) pour chaque instance de la formule.
Vous devez également savoir que la formule ne renverra pas de résultats valides si vous l’utilisez dans un nouveau classeur, qui n’a pas été enregistré. Vous devez enregistrer le classeur afin qu’il ait réellement un nom qui peut être renvoyé par la fonction CELL avec succès. Il ne fonctionnera pas non plus correctement si le nom du classeur ou de la feuille de calcul contient un caractère crochet droit (« ] »). Dans ce cas, vous souhaiterez utiliser l’une des autres solutions décrites dans cette astuce.
Si vous préférez utiliser une fonction définie par l’utilisateur, vous pouvez essayer quelque chose de simple, comme cette fonction:
Function TabName1() As String Application.Volatile TabName1 = ActiveSheet.Name End Function
Cette fonction ne fournira cependant pas le résultat souhaité, car elle renvoie toujours le nom de la feuille de calcul active. Cela signifie que si la fonction est appelée sur chacune des feuilles de votre classeur, elle renverra toujours le nom de la feuille active sur chacune de ces feuilles de calcul, au lieu du nom de la feuille sur laquelle la fonction est utilisée. La fonction suivante fournit de meilleurs résultats:
Function TabName2() As String Application.Volatile TabName2 = Application.Caller.Parent.Name End Function
Si vous pensez que vous voudrez utiliser la fonction pour faire référence à un nom de feuille de calcul ailleurs dans le classeur, alors cette fonction fonctionnera mieux pour vous:
Function TabName3(cell As Range) TabName3 = cell.Worksheet.Name End Function
Cette version de la fonction nécessite que vous fournissiez une référence de cellule (toute référence de cellule) à une cellule de la feuille de calcul dont vous souhaitez utiliser le nom.
Bien sûr, si vous préférez ne pas utiliser une fonction définie par l’utilisateur, vous pouvez simplement créer une macro qui remplira le nom de chaque onglet de feuille de calcul dans la même cellule de chaque feuille de calcul. Par exemple, la macro suivante parcourt chacune des feuilles de calcul du classeur et place le nom de chaque feuille de calcul dans la cellule A1.
Sub TabName4() For J = 1 To ActiveWorkbook.Sheets.Count Sheets(J).Cells(1, 1).Value = Sheets(J).Name Next End Sub
Vous devez noter que cette approche n’est pas dynamique (elle doit être réexécutée chaque fois que vous modifiez les noms de feuille de calcul ou ajoutez de nouvelles feuilles de calcul). Il remplace également tout ce qui se trouve dans la cellule A1. (Si vous souhaitez que les noms de feuille de calcul soient placés dans une cellule différente de chaque feuille de calcul, modifiez les valeurs utilisées dans la collection Cells.)
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (3793) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:
link: / excelribbon-Getting_the_Name_of_the_Worksheet_Into_a_Cell [Obtenir le nom de la feuille de travail dans une cellule]
.