Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Nommer toutes les feuilles d'un classeur

10 réponses
Avatar
Fredo(67)
Bonjour,

Dans un classeur j'ai 95 feuilles (nomm=C3=A9es Feuil1 =C3=A0 feuil95)

Sur le forum j'ai trouv=C3=A9 comment enregistrer les noms des feuilles en =
fonctions de valeurs contenues dans une cellule d'une 96=C3=A8me feuille.
Cette 96=C3=A8me feuille contenant une liste de tous les noms =C3=A0 appliq=
uer

Mais peut on d=C3=A9finir le nom de chaque feuille en utilisant le contenu =
de la cellule A1 et A2 de cette m=C3=AAme feuille
=20
Par exemple la premi=C3=A8re feuille se nommera M13F - Hoenheim
la deuxi=C3=A8me M13F - SSHB

et ainsi de suite pour chacune des feuilles

10 réponses

Avatar
MichD
Bonjour,
Dans mon exemple : "Feuil4" est le nom de la 96e feuille du classeur et
les noms des feuilles sont dans la plage A1 à A95.
À toi d'adapter si le nom de la feuille ou le nom des feuilles est situé
dans une autre plage de cellules. Au lieu d'utiliser le nom de "Feuil4",
tu peux utiliser l'index. With worksheets(96) ....
'----------------------------
Sub Nommer_Les_Feuilles()
Dim Sh As Worksheet, A As Long
With Worksheets("Feuil4")
For Each Sh In ThisWorkbook.Worksheets
If Sh.Name <> .Name Then
A = A + 1
Sh.Name = .Range("A" & A)
End If
Next
End With
End Sub
'----------------------------
MichD
Avatar
Jacquouille
On devient très forts ..... une réponse sans question posée. -))
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
qslbk0$eb9$
Bonjour,
Dans mon exemple : "Feuil4" est le nom de la 96e feuille du classeur et
les noms des feuilles sont dans la plage A1 à A95.
À toi d'adapter si le nom de la feuille ou le nom des feuilles est situé
dans une autre plage de cellules. Au lieu d'utiliser le nom de "Feuil4",
tu peux utiliser l'index. With worksheets(96) ....
'----------------------------
Sub Nommer_Les_Feuilles()
Dim Sh As Worksheet, A As Long
With Worksheets("Feuil4")
For Each Sh In ThisWorkbook.Worksheets
If Sh.Name <> .Name Then
A = A + 1
Sh.Name = .Range("A" & A)
End If
Next
End With
End Sub
'----------------------------
MichD
Avatar
Fredo(67)
Salut MichD
Voilà comment j'ai adapté ta macro
Sub Nommer_Les_Feuilles()
Dim Sh As Worksheet, A As Long
With Worksheets("Feuil1")
For Each Sh In ThisWorkbook.Worksheets
If Sh.Name <> .Name Then
A = A + 1
Sh.Name = .Range("CB4" & "-" & "cb1")
End If
Next
End With
End Sub
En fait la première partie du nom de la feuille est en CB4 puis en CB1
pour donner un truc du genre M13F - Hoenheim
Si j'ai bien compris ta macro, le "A" sert à incrémenter une num érotation ? c'est ca ?
Avatar
Fredo(67)
Mais je pense ne pas avoir été clair dans mes explication
Chaque onglet possède en CB4 et CB1 les valeurs qui doivent être utilisées pour nommer les onglets respectifs
Avatar
MichD
Le 09/12/19 à 08:51, Fredo(67) a écrit :
Mais je pense ne pas avoir été clair dans mes explication
Chaque onglet possède en CB4 et CB1 les valeurs qui doivent être utilisées pour nommer les onglets respectifs

Tu veux dire qu'une partie du nom de la feuille est en CB4 et que la
seconde partie du nom de la feuille est en CB1 sur chacune des feuilles
de calcul? Que veux-tu faire? Concaténer le contenu de la cellule CB4 et
CB1 pour former le nom de la feuille, et ce pour chacune des feuilles du
classeur ?
'------------------------------------
Sub Nommer_Les_Feuilles()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
With sh
.name = .range("CB4") & .range("CB1")
Next
End With
End Sub
'------------------------------------
La macro ne tient pas compte des erreurs qui pourraient être provoquées
par la longueur du nom de plus de 31 caractères, ni des caractères
défendus dans la chaîne de caractères du nom d'une feuille comme :
/ : * ? [ ]
Évidemment, chaque nom des feuilles doit être unique.
MichD
Avatar
MichD
Oups! Désolé,
La macro devrait plutôt s'écrire de cette manière :
'------------------------------------
Sub Nommer_Les_Feuilles()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
With sh
.name = .range("CB4") & .range("CB1")
End With
Next
End Sub
'------------------------------------
MichD
Avatar
Fredo(67)
Le lundi 9 décembre 2019 16:55:33 UTC+1, MichD a écrit :
Oups! Désolé,
La macro devrait plutôt s'écrire de cette manière :
'------------------------------------
Sub Nommer_Les_Feuilles()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
With sh
.name = .range("CB4") & .range("CB1")
End With
Next
End Sub
'------------------------------------
MichD

C'est tout à fait ça
tu as compris ma question.
Mais la macro me renvoie une erreur au niveau des .Name.....
"la méthode name de l'objet _worksheet a échoué"
En clair cela ne lui plait pas..... lol
Avatar
MichD
Si tu as une erreur, cela signifie que le nom de l'onglet de la feuille
ne remplit pas une des conditions suivantes déjà citées dans le message
précédent. Il n'y a pas d'autres raisons possibles.
La macro ne tient pas compte des erreurs qui pourraient être provoquées
par la longueur du nom de plus de 31 caractères, ni des caractères
défendus dans la chaîne de caractères du nom d'une feuille comme :
/ : * ? [ ]
Évidemment, chaque nom des feuilles doit être unique.
MichD
Avatar
Fredo(67)
Salut,
vu que je n'ai aucun caractère "spécial", je vais me penser sur l a longueur des noms....
Avatar
Fredo(67)
Bon ben tu avais raison...
J'ai corrigé certain noms et Zou...! tout est passé nickel.
Encore un grand merci pour des heures de saisies évitées....