XL 2016 Renommer plusieurs Feuilles selon une cellule [Résolu]

MikeThe7

XLDnaute Nouveau
Bonjour à tous,

Mon classeur contient 12 feuilles identiques, une pour chaque mois.
Dans la cellule H6 de la feuille 1, j'entre "01/19" et l'affichage est directement "janvier / 2019".
Sur la feuille 2, j'ai la formule suivante dans la cellule H6 verrouillée :
=MOIS.DECALER('01-19'!H6;1)​
Sur la feuille 3, même principe, mais décalé :
=MOIS.DECALER('01-19'!H6;2)​
Et ainsi de suite...
Le but étant d'enregistrer le mois et l'année sur la 1ere feuille et que les 11 autres soient mises à jour automatiquement. Jusque là, aucun soucis.

Afin de ne pas avoir à renommer la feuille 1 manuellement, j'utilise cette macro placée dans "ThisWorkbook" :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Intersect(Target, Range("H6")) Is Nothing Then: Exit Sub
mois = Format(Range("H6"), "mm-yy")
ActiveSheet.Name = mois
End Sub​
Cela fonctionne très bien pour la feuille 1, mais pas pour les 11 autres. Pour que les autres feuilles soient renommées, je dois aller dans la cellule H6 de chaque feuille, double-cliquer puis [Entrée]. Et comme cette cellule est verrouillée sur les 11 autres feuilles, je dois Ôter la protection de la feuille avant, pour remettre la protection après.

Je pense qu'il y a une solution plus simple que de créer une macro réalisant cette dernière étape.
Avez-vous une idée ?
 

MikeThe7

XLDnaute Nouveau
Bonjour,

Merci pour votre réponse, mais je ne comprends pas comment adapter ma macro. Il faut savoir également que dans H6, c'est une date qui est présente, d'où la transformation de "janvier / 2019" en "01-19" comme nom de feuille.
Il y aura bien une 13ème feuille, mais en H6, ce sera également une date, au format Année seulement, transformé en "2019".

Edit : D'après mes tests et mes maigres connaissances, il parait compliqué d'utiliser la même macro pour renommer les 12 feuilles en format "mm-aa" et la 13ème avec un format différent "aaaa". Je pense donc décaler la date sur la feuille 13 en H5 par exemple.
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Bonsoir,

sans classeur exemple il est difficile d'apporter une soluce !?
s'il y a plusieurs feuilles il faut pouvoir tester si la feuille est concernée !?
et placer un bouton d'exécution dans la feuille 13 ou autre !?

par exemple s'il y a dans une cellule un repère identique à ces 12 feuilles
supposons que ce soit la cellule B10 et que celle-ci contienne la valeur "XYZ"

Dim F As Worksheet
For Each F In Worksheets
If F.[B10] = "XYZ" Then F.Name = F.Range("H6")
Next
 

MikeThe7

XLDnaute Nouveau
Bonjour Roland_M,

Je vous rejoins, sans le classeur exemple, difficile de se projeter. Le voici donc en PJ.
En ce qui concerne la 13ème feuille, le problème est "résolu", j'ai décalé le cadre, elle se nommera donc toujours "Année", terme générique adapté dans le cas présent.
 

Pièces jointes

  • Plan de Travail Mensuel - v1.91.xlsm
    63.3 KB · Affichages: 23

Roland_M

XLDnaute Barbatruc
re

'j'ai mis une macro dans module1 appelée depuis le bouton sur Feuil.Année
'et aussi dans le code feuille une macro événement, si tu changes la date en H8 ça mettra à jour auto
'voir > Private Sub Worksheet_Change(ByVal Target As Range)
'
'toutes les feuilles sont renommées exceptée la feuille nommée "Année"
'donc si tu modifies son nom il faudra adapter dans la macro

voir si ok !?
 

Pièces jointes

  • Plan de Travail Mensuel - v1.91_Rol.xlsm
    62.4 KB · Affichages: 36

MikeThe7

XLDnaute Nouveau
Bonjour Roland,

Excellent travail ! Cela fonctionne exactement comme je le souhaitais.
J'ai opté pour la solution sans le bouton avec uniquement la macro dans ThisWorkbook :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim F As Worksheet
For Each F In Worksheets
If F.Name <> "Année" Then F.Name = Format(F.Range("N6"), "mm-yy")
Next
End Sub​
Mon tableau a évolué, je suis passé de H6 à N6, mais en gardant le même principe avec le décalage sur la feuille Année.
Je me demande si "ByVal Sh As Object" est nécessaire sur la macro.
Je ne comprends pas non plus pourquoi la feuille Année n'est jamais renommée même si la valeur dans N6 change, mais comme c'est le fonctionnement voulu, cela me convient parfaitement (c'est à cause du format ?).

Un grand merci pour votre solution optimisée !
 

Roland_M

XLDnaute Barbatruc
Bonsoir,

pour rappel, si tu modifies la cellule source(H6) il faut modifier dans la macro et/ou thisworbook et aussi dans le code feuille de la feuille "Année" !

normalement dans thisworkbook.open c'est inutile, car ça met à jour à l'ouverture et c'est tout !
alors qu'avec le bouton si tu modifies la date dans "Année" avec le clic sur bouton tu peux mettre à jour à l'instant !
sinon tu vas devoir fermer et rouvrir le classeur pour que la macro mette à jour !? c'est bizarre comme procédure !

maintenant, j'ai mis un code événement dans le code feuille qui fait qu'à chaque fois que tu modifies la cellule date de la feuille "Année" ça renomme instantanément toutes les feuilles ! il n'y a pas plus simple !? je sais pas trop ce que tu souhaites !?

sais-tu seulement ce qu'est le code feuille et ou il se trouve ? l'as tu vu ?
as-tu bien tout compris ?

n'hésites pas à poser des questions !
 

MikeThe7

XLDnaute Nouveau
Bonsoir,

J'avoue ne pas toujours comprendre la syntaxe des macros que j'applique, alors je teste et j'essaie d'adapter en observant le résultat.
Sur le cas présent, voici ce que j'ai :

Votre macro est uniquement dans ThisWorkbook.
Sur la feuille "Année" en N8, je tape simplement 01/19 puis [Entrée] et toutes les feuilles suivantes sont renommées à chaque fois que je change la date (par exemple 01/20, 01/21, etc...). Cela me donnera donc un document qui pourra s'adapter rapidement chaque année, même pour les commerciaux non férus d'informatique.


Encore merci pour votre code efficace qui ne nécessite aucune macro supplémentaire sur les autres feuilles, aucun bouton et sans avoir besoin de fermer et rouvrir le classeur. C'est exactement ce qu'il me fallait.
 

Discussions similaires

Réponses
7
Affichages
292

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG