Nommer toutes les feuilles d'un classeur

Le
Fredo(67)
Bonjour,

Dans un classeur j'ai 95 feuilles (nommées Feuil1 à feuil95)

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

Mais peut on définir le nom de chaque feuille en utilisant le contenu =
de la cellule A1 et A2 de cette même feuille

Par exemple la première feuille se nommera M13F - Hoenheim
la deuxième M13F - SSHB

et ainsi de suite pour chacune des feuilles
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26532735
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
Jacquouille
Le #26532753
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
Fredo(67)
Le #26532743
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 ?
Fredo(67)
Le #26532742
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
MichD
Le #26532750
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
MichD
Le #26532751
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
Fredo(67)
Le #26532769
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
MichD
Le #26532772
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
Fredo(67)
Le #26532791
Salut,
vu que je n'ai aucun caractère "spécial", je vais me penser sur l a longueur des noms....
Fredo(67)
Le #26532794
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....
Publicité
Poster une réponse
Anonyme