Classeur mensuel avec date sur onglet

Bonjour à tous,

J'ai besoin de votre aide car il me faut créer un classeur par mois avec une feuille par jour.

j'aimerais que la date se mette automatiquement dans chaque onglet ainsi que sur chaque feuille en cellule A1.

merci de votre soutiens précieux

je précise que je nuis novice

Bonjour,

Je ne sais pas quelle est la finalité de votre travail, mais cette structure est une très mauvaise idée... Avec une feuille par jour, ou même par semaine ou mois, ça devient très vite ingérable et inexploitable. C'est encore pire en démultipliant les classeurs.

Excel gère beaucoup plus facilement une unique base de données, sur laquelle vous pouvez ensuite travailler pour faire des synthèses sur une période désirée (jour, semaine, mois, année, etc...).

il s'agit d'un classeur de transmission. Nous ouvrons la feuille du jour et consignons dans un tableau les évènement du jour.

c'est la solution retenue par mon employeur. cependant si vous avez un version à me proposer qui nous faciliterai la tache, je suis preneur!

il s'agit d'un classeur de transmission. Nous ouvrons la feuille du jour et consignons dans un tableau les évènement du jour.

c'est la solution retenue par mon employeur. cependant si vous avez un version à me proposer qui nous faciliterai la tache, je suis preneur!

Pour proposer quelque chose, il me faudrait une base de travail ! Je ne sais ni les informations consignées, ni leur utilité ultérieure.

C'est juste que j'imagine que les événements consignés ont vocation à être exploités/valorisés plus tard. Si c'est facile à la saisie, avec un classeur par mois et une feuille par jour, ce sera moins facile (pour le pas dire carrément lourd) à exploiter !

Si ça peut vous aider, je vous invite à lire ceci : https://www.excel-pratique.com/fr/telechargements/doc-excel/structurer-gerer-donnees-excel-no424.php

Je n'ai pas la prétention d'avoir écrit la bible Excel, mais juste quelques éléments à savoir pour avoir une bonne gestion de données. L'objectif est d'éviter les erreurs/perte de temps que j'ai rencontré en étant débutant ou dans les différents fichiers que j'ai eu l'occasion de traiter.

Bonjour Yo, Pedro, bonjour le forum,

Place le fichier en pièce jointe dans un dossier quelconque. Clique sur le bouton... Le nouveau fichier sera enregistré dans le même dossier.

Le code :

Option Explicit

Sub Macro1()
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim BA As Variant 'déclare la variable BA (Boîte Année)
Dim BM As Variant 'déclare la variable BM (Boîte Mois)
Dim DD As Date 'déclare la variable DD (Date de Début)
Dim DF As Date 'déclare la variable DF (date de Fin)
Dim NC As Workbook 'déclare la variable NC (Nouveau Classeur)
Dim ML As String 'déclare la variable ML (Mois en Lettre)
Dim I As Byte 'déclare la variable I (Incrément)

CA = ThisWorkbook.Path & "\" 'définit le chemin  d'accès CA
BA = Application.InputBox("Créer un nouveau classeur pour quelle année ?", "ANNÉE", Year(Date), Type:=1) 'définit la boîte d'entrée pour l'année BA
If BA = False Or BA = "" Then Exit Sub 'si bouton [Annuler] ou non renseignée, sort de la procédure
BM = Application.InputBox("Créer un nouveau classeur pour quel mois ?", "MOIS", Month(Date), Type:=2) 'définit la boîte d'entrée pour le mois BM
If BM = False Or BM = "" Then Exit Sub 'si bouton [Annuler] ou non renseignée, sort de la procédure
DD = DateSerial(BA, BM, 1) 'définit la date de début
DF = DateSerial(BA, BM + 1, 0) 'définit la date de fin
Application.SheetsInNewWorkbook = Day(DF) 'définit le nombre d'onglets par défaut pour tout nouveau classeur (=jour du dernier jour du mois)
Set NC = Workbooks.Add 'définit le nouveau classeur CL (en ajoutant un classeur vierge)
Application.SheetsInNewWorkbook = 3 'redéfinitle nombre d'onglets par défaut pour tout nouveau classeur (3)
ML = Choose(BM, "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre") 'définit le mois en lettre ML
NC.SaveAs CA & ML & "_" & BA, 51 'enregistre le nouveau classeur Cl (mois plus année)
For I = 1 To Day(DF) 'boucle de 1 au dernier jour du mois
    Sheets(I).Name = I & "_" & BM & "_" & BA 'renomme l'onglet de la boucle
    Sheets(I).Range("A1").Value = DateSerial(BA, BM, I) 'renvoie la date de la boucle dans la cellule A1 de l'onglet
Next I 'prochain jour de la boucle
NC.Save 'sauve le classeur NC
End Sub

Le fichier :

8creadate.xlsm (22.79 Ko)

il s'agit d'un classeur de transmission. Nous ouvrons la feuille du jour et consignons dans un tableau les évènement du jour.

c'est la solution retenue par mon employeur. cependant si vous avez un version à me proposer qui nous faciliterai la tache, je suis preneur!

Pour proposer quelque chose, il me faudrait une base de travail ! Je ne sais ni les informations consignées, ni leur utilité ultérieure.

C'est juste que j'imagine que les événements consignés ont vocation à être exploités/valorisés plus tard. Si c'est facile à la saisie, avec un classeur par mois et une feuille par jour, ce sera moins facile (pour le pas dire carrément lourd) à exploiter !

Si ça peut vous aider, je vous invite à lire ceci : https://www.excel-pratique.com/fr/telechargements/doc-excel/structurer-gerer-donnees-excel-no424.php

Je n'ai pas la prétention d'avoir écrit la bible Excel, mais juste quelques éléments à savoir pour avoir une bonne gestion de données. L'objectif est d'éviter les erreurs/perte de temps que j'ai rencontré en étant débutant ou dans les différents fichiers que j'ai eu l'occasion de traiter.

nous consignons des évènements (infos simple sous forme de texte) lié à notre structure. ces infos ne sont pas revalorisées mais simplement archivées.

Bonjour Yo, Pedro, bonjour le forum,

Place le fichier en pièce jointe dans un dossier quelconque. Clique sur le bouton... Le nouveau fichier sera enregistré dans le même dossier.

Bonjour, merci de ton aide précieuse.

j'ai téléchargé le fichier mais le bouton est inactif.

orption 2: je copie le code ou?? je suis novice...

Merci encore

Re,

À l'ouverture du fichier il te faut Accepter les macros ou Activer le contenu selon ta version...

J'ai modifié le code et voici la version 2 avec gestion de l'enregistrement d'un fichier déjà existant.

le code :

Sub Macro1()
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim BA As Variant 'déclare la variable BA (Boîte Année)
Dim BM As Variant 'déclare la variable BM (Boîte Mois)
Dim DD As Date 'déclare la variable DD (Date de Début)
Dim DF As Date 'déclare la variable DF (date de Fin)
Dim NC As Workbook 'déclare la variable NC (Nouveau Classeur)
Dim ML As String 'déclare la variable ML (Mois en Lettre)
Dim F As String 'déclare la variabler F (Fichier)
Dim I As Byte 'déclare la variable I (Incrément)

CA = ThisWorkbook.Path & "\" 'définit le chemin  d'accès CA
BA = Application.InputBox("Créer un nouveau classeur pour quelle année ?", "ANNÉE", Year(Date), Type:=1) 'définit la boîte d'entrée pour l'année BA
If BA = False Or BA = "" Then Exit Sub 'si bouton [Annuler] ou non renseignée, sort de la procédure
BM = Application.InputBox("Créer un nouveau classeur pour quel mois ?", "MOIS", Month(Date), Type:=2) 'définit la boîte d'entrée pour le mois BM
If BM = False Or BM = "" Then Exit Sub 'si bouton [Annuler] ou non renseignée, sort de la procédure
ML = Choose(BM, "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre") 'définit le mois en lettre ML
F = Dir(CA & ML & "_" & BA & "*.xls*") 'définit le premier Fichier du dossier CA ayant pour nom le mois en lettre suivi de l'année
Do While F <> "" 'boucle tant qu'il existe des fichier F
    'si "Non" au message, sort de la procédure
    If MsgBox("Un fichier pour ce mois et cette année existe déjà ! Voulez-vous le remplacer par celui-ci et perdre éventuellement les données déja enregistrées ?", vbYesNo) = vbNo Then Exit Sub
    F = Dir 'définit le prochain fichier du dossier CA ayant pour nom le mois en lettre suivi de l'année (en fait il ne peut y en avoir qu'un...)
Loop 'boucle
DD = DateSerial(BA, BM, 1) 'définit la date de début
DF = DateSerial(BA, BM + 1, 0) 'définit la date de fin
Application.SheetsInNewWorkbook = Day(DF) 'définit le nombre d'onglets par défaut pour tout nouveau classeur (=jour du dernier jour du mois)
Set NC = Workbooks.Add 'définit le nouveau classeur CL (en ajoutant un classeur vierge)
Application.SheetsInNewWorkbook = 3 'redéfinitle nombre d'onglets par défaut pour tout nouveau classeur (3)
Application.DisplayAlerts = False 'empêche les messages d'Excel (en effet le même type de message que le précédent MsgBox apparaitrait en doublons sans cette ligne)
NC.SaveAs CA & ML & "_" & BA, 51 'enregistre le nouveau classeur Cl (mois plus année)
For I = 1 To Day(DF) 'boucle de 1 au dernier jour du mois
    Sheets(I).Name = I & "_" & BM & "_" & BA 'renomme l'onglet de la boucle
    Sheets(I).Range("A1").Value = DateSerial(BA, BM, I) 'renvoie la date de la boucle dans la cellule A1 de l'onglet
Next I 'prochain jour de la boucle
NC.Save 'sauve le classeur NC
Application.DisplayAlerts = True 'autorise les messages d'Excel
End Sub

Le fichier v02 :

13creadate-v02.xlsm (26.26 Ko)

Re,

À l'ouverture du fichier il te faut Accepter les macros ou Activer le contenu selon ta version...

J'ai modifié le code et voici la version 2 avec gestion de l'enregistrement d'un fichier déjà existant.

le code :

je l'ai fait. mais rien ne se passe.

ou dois je copier le code sinon?

j'ai excel FR 2016

Re,

À l'ouverture du fichier il te faut Accepter les macros ou Activer le contenu selon ta version...

J'ai modifié le code et voici la version 2 avec gestion de l'enregistrement d'un fichier déjà existant.

j'ai réussi! seulement, il me demande l'année, le mois et après j'ai un message d'erreure: une croix rouge avec le code 400

photo jointe

annotation 2019 12 11 110230

Bonjour ThauThème , Yo_Etampes et le forum,

Le Le fichier v02 fonctionne bien, excel 365

bonne continuation

ferdinand

Re,

Merci Ferdinand, chez moi aussi le fichier fonctionne sans problème...

Sinon tu peux :

1. partir d'un fichier vierge

2. coller le code dans un module standard (Module1 par exemple). S'il n'y a pas de module fait menu Insertion/Module dans l'éditeur Visual basic ([Alt]+[F11])

3a. soit lancer le code à partir de la boîte de dialogue Macros ([Alt]+[F8] et choisir Macro1)

3b. soit créer un bouton et lui appliquer le code...

Re,

À l'ouverture du fichier il te faut Accepter les macros ou Activer le contenu selon ta version...

J'ai modifié le code et voici la version 2 avec gestion de l'enregistrement d'un fichier déjà existant.

j'ai réussi! seulement, il me demande l'année, le mois et après j'ai un message d'erreure: une croix rouge avec le code 400

photo jointe

annotation 2019 12 11 110230
Rechercher des sujets similaires à "classeur mensuel date onglet"