Renommer automatiquement 365 feuilles avec dates du 1er janvier au 31 décembre

Fermé
RedOne - 4 avril 2020 à 01:27
via55 Messages postés 14471 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 29 août 2024 - 4 avril 2020 à 02:39
Bonjour,

Je souhaiterais créer automatiquement des feuilles Excel dans un classeur et qu'elles se renomment automatiquement également, avec les critères suivants:
-Je crée une feuille pour le 1er janvier qui se nomme 01 01
-Cette feuille contient un tableau Excel qui sera le même sur toutes les autres feuilles
J'aimerais que cette fonction (ou cette macro) me copie les 364 autres feuilles en les nommant automatiquement de 02 01 à 31 12 (les jours de l'année).
En sachant qu'avant la feuille du 01 01 se trouvera une feuille où apparaîtront pleins de cellules avec des valeurs qui serviront de base de données pour des cellules des différentes feuilles (mais je suppose que ça n'a pas forcément d'influence).

Pensez vous pouvoir m'aider?
Je n'y connais rien pour créer les macros (si c'est bien ça qu'il faut).
Je sais faire quelques fonctions simples (si c'est plutôt ce qu'il faut).

Merci de vos réponses,

Cordialement,
A voir également:

1 réponse

via55 Messages postés 14471 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 29 août 2024 2 727
4 avril 2020 à 02:39
Bonjour RedOne

Ta 1ere feuille 01 01 étant crée tu fais Alt+F11 pour ouvrir l'éditeur VBA
Dans les menus tu cliques sur Insertion puis Module
Tu copies et tu colles la macro suivante dans la page blanche et tu fermes l'éditeur
Sub creer_feuilles()
Application.ScreenUpdating = False ' desactive le rafraichissement écran
deb = CDate("01/01/2020") ' Pour une autre année changer l'année 
For n = 2 To 366 - a 'boucle de 2 à 366 (2020 bissextile, pour les années non bissextiles ne pas oublier de remplacer 366 par 365)
deb = deb + 1 ' incrmente la date de début d'un jour
 Sheets("01 01").Select 'selectionne feuille 01 01
    Sheets("01 01").Copy After:=Sheets(Sheets.Count) ' la copie  en dernier
    Sheets("01 01 (2)").Select ' la selectionne
    ' la ligne suivante colorie l'onglet en rouge si c'est un jour de WE, si on ne veut pas cette possibilité mettre supprimer la ligne suivante ou mettre une apostriophe en tête de laligne qui passera en vert
    If Application.WorksheetFunction.Weekday(deb, 2) > 5 Then Sheets("01 01 (2)").Tab.Color = 255
    Sheets("01 01 (2)").Name = Format(deb, "dd mm") ' renomme la feuille avec le jour et le mois
Next
Application.ScreenUpdating = True 'réactive le rafraichissement écran
End Sub

De retour en feuille 01 01 tu vas dans le ruban à Développeur puis Macros, tu sélectionnes la macro creer_feuilles et Executer
La macro met quelques secondes à créer toutes les feuilles
Cerise sur le gâteau l'onglet des feuilles des jours de week-end est coloré en rouge (si tu ne veux pas de cette option tu supprimes la ligne correspondante dans la macro ou tu la shuntes en rajoutant une apostrophe en début de cette ligne comme expliqué dans les commentaires de la macro

Cdlmnt
Via


0