Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Nommer des onglets (dates) à partir d'une cellule

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Yosh

XLDnaute Nouveau
Bonjour,

J'ai un tableau avec 31 onglets (1 par jour du mois). J'ai une colonne dans chaque onglet avec la date du jour.
J'aimerais que chaque onglet puisse prendre son nom (date) à partir du nom d'une des cellules comportant la date (A2) du premier onglet.

Est-ce possible?
 

Pièces jointes

Bonjour

je comprend pas trop.. ton fichier répond déjà au besoin..
si l'idée est de renommer TOUS les onglets selon la date en A2 de chaque onglet

une petite macro
VB:
Sub RenomerOnglet()
    For Each ws In ActiveWorkbook.Sheets
        ws.Name = WorksheetFunction.Substitute(ws.Range("A2"), "/", "-") 'les caractères spéciaux ne sont pas autorisés dans le nom des onglets
    Next ws
End Sub
 
vgendron, les onglets sont déjà nommé comme je le demande mais c'est parce que je l'ai fait manuellement, onglet après onglet. Du fait je je réutilise un fichier (1 mois) pour en refaire un autre (1 mois + 1), une petite macro va me faciliter la tâche.

En tout cas, ça fonctionne. Merci beaucoup.

Puis-je abuser? Est-il possible que cela se fasse tout seul sans avoir besoin d'aller relancer la macro dans Visual Basic?
 
Bonjour à tous🙂,
Puis-je abuser? Est-il possible que cela se fasse tout seul sans avoir besoin d'aller relancer la macro dans Visual Basic?

Ma version...
Le nom de l'onglet se met à jour quand à chaque fois qu'on change la valeur de la cellule A2 d'une des feuilles.
Le code est dans le module de ThisWorkbook :
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim xDate, nouvNom$
   If Intersect(Sh.[a2], Target) Is Nothing Then Exit Sub Else xDate = Sh.[a2]
   If TypeName(xDate) <> "Date" Then Exit Sub
   On Error GoTo ErrRenommage
   nouvNom = Format(xDate, "dd-mm-yyyy")
   Sh.Name = nouvNom
   Exit Sub
ErrRenommage:
   MsgBox "Le renommage de la feuille active (" & Sh.Name & ") avec le nom <" & nouvNom & ">" & " a échoué" & _
      vbLf & vbLf & Err.Description, vbCritical
End Sub
 

Pièces jointes

mapomme,

Merci.
J'ai essayé de, copier/coller ton code dans un tableau en cours, lancer dans le tableau que tu as mis en pièce jointe, mais lorsque j'appui sur le bouton "play", la fenêtre "Macros" s'ouvre et je dois sélectionner ta macro sauf qu'il n'y a aucun choix possible, donc pas possible de lancer ta macro. Est-ce qu'il manque un truc?
 

mapomme,

je viens de vérifier dans le tableau que tu m'as envoyé, le code est bien dans "ThisWorkbook" mais lorsque je change la date dans le premier onglet, seul le premier onglet est renommé. Pourtant les dates ont bien suivi dans les autres "A2" des autres onglets.
 
En effet, j'ai utilisé une macro automatique quand on changeait la valeur de la cellule, C2 au sein d'une feuille.

Je n'ai pas considéré (car pas vu😕) que le changement de la valeur A2 d'une feuille pouvait modifier la valeur A2 des autres feuilles.
Dans ce cas, il faut faire différemment.

Un peu de patience, ça vient 😎 .
 
Dernière édition:
Re,

Voici le code à mettre dans le module de la feuille de "base". Dans votre cas, c'est la feuille "01/01/2025" puisque toutes les cellules A2 des autres feuilles dépendent de cette valeur.
A chaque fois que vous modifiez la date de la cellule A2 de cette feuille, toutes les feuilles seront renommées.

Le code :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&, xDate, nouvNom$
   If Intersect([a2], Target) Is Nothing Then Exit Sub
   With ThisWorkbook
      For i = 1 To .Worksheets.Count
         With .Worksheets(i)
            xDate = .[a2]
            If TypeName(xDate) <> "Date" Then Exit Sub
            On Error Resume Next
            .Name = Format(xDate, "dd-mm-yyyy")
            On Error GoTo 0
         End With
      Next i
   End With
End Sub

 

Pièces jointes

Dernière édition:
Bonjour à tous,
S'il faut faire un code automatique, autant le faire à la création de la feuille, c'est l'endroit le plus pertinent .
Je propose d'utiliser le clic droit sur un onglet de feuille :

La formule en [A2] est remplacée par la date correspondante à l'onglet créé .
Le code se trouve dans les modules Thisworkbook et Mod_Générer

 

Pièces jointes

Bonjour à tous,
255 feuilles ? Sur Excel 2019 j'ai créé en 65 secondes un classeur de 5000 feuilles (vierges) pesant 4 Mo.

J'ai essayé avec 10000 feuilles : Excel plante.

Edit : ah tiens sur un fichier vierge j'ai réussi à créer 7500 feuilles en 48 secondes...

A+
 
Dernière édition:
C'était juste un aparté, une assertion datant ma foi de Excel 2010 .... Il est vrai maintenant que le nombre dépend du poids de ces feuilles et de la quantité de mémoire allouée . Fermeture de la parenthèse ....
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
488
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…