[RESOLU]Creer classeur depuis valeur

hypo78

XLDnaute Impliqué
Bonjour,
Grace à votre aide, j'ai une macro qui fonctionne bien me permettant de créer un dossier puis un classeur nommé en fonction d'une date saisie.
la macro :
VB:
Sub Creation_classeur_nommé()
DateDeSaisie = Range("b8")
Workbooks.Open Filename:="F:\Data\Feuilles de garde\Versaillesbis\modèle_VRS.xls"
ActiveWorkbook.Sheets("01").Select
Range("AK1") = DateDeSaisie
If Dir(ActiveWorkbook.Path & "\" & Format(DateDeSaisie, "mmmmyyyy"), vbDirectory) = "" Then MkDir ActiveWorkbook.Path & "\" & Format(DateDeSaisie, "mmmmyyyy")
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & Format(DateDeSaisie, "mmmmyyyy") & "\" & Format(DateDeSaisie, "ddmmmmyyyy") & ".xls", FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub

J'aimerai, sur le même principe créer mes classeurs pour une année complète (12 dossiers/30 à 31 classeurs par dossiers).

Comment faire pour que la date choisie soit incrémenter de 1 jour et que la macro tourne sur 365 jours?

Merci d'avance
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Creer classeur depuis valeur

Bonsoir hypo78, le fil, le forum

hypo78
Je me permets d'amender ton code
(pour qu'il me soit plus lisible ;)

Peux-tu, stp, tester ces modifications et me dire si le résultat est le même que ta macro initiale ?
VB:
Sub Creation_classeur_nomméBIS()
Const modele As String = _
"F:\Data\Feuilles de garde\Versaillesbis\modèle_VRS.xls"

Dim sDossier$, SFic$, DateDeSaisie As Range, wbk As Workbook

Set DateDeSaisie = ThisWorkbook.Range("B8")

Workbooks.Open modele
Set wkb = ActiveWorkbook

With wbk
    .Sheets("01").Range("AK1") = DateDeSaisie.Text
    sDossier = .Path & "\" & Format(DateDeSaisie, "mmmmyyyy")
        If Dir(sDossier, vbDirectory) = "" Then
        MkDir sDossier
        .SaveAs _
                sDossier & "\" & _
                Format(DateDeSaisie, "ddmmmmyyyy") & ".xls"
        End If
End With

Set wkb = Nothing
End Sub
Merci d'avance.
 
Dernière édition:

hypo78

XLDnaute Impliqué
Re : Creer classeur depuis valeur

dans un classeur je saisis la date, je clique sur le bouton de ma macro, elle ouvre un autre classeur "mon modèle", elle entre cette date dans une case et elle enregistre sous en le nommant en fonction de la date saisie.
La macro du début du post fonctionne bien pour çà, ce que je voudrais c'est créer tous mes classeurs pour l'année sans avoir à saisir les 365 jours de l'année. Soit faire tourner la macro en boucle en ajoutant +1 à la date, soit se référer à un plage de cellule contenant toutes les dates de l'année.
Merci d'avance
 

Staple1600

XLDnaute Barbatruc
Re : Creer classeur depuis valeur

Bonsoir tout le monde

hypo78
Utilises le moteur de recherche du forum
Un exemple de fil de discussion pouvant t'aider à résoudre ta problématique.
https://www.excel-downloads.com/thr...en-fonction-de-la-valeur-dune-cellule.157018/
D'ailleur, tu y croiseras un tigre bien connu ;) (que je salue)

EDITION: pour répondre à cette partie de ta question.
Soit faire tourner la macro en boucle en ajoutant +1 à la date, soit se référer à un plage de cellule contenant toutes les dates de l'année.

voici un exemple parmi tant pour créer les jours d'une année dans une colonne

VB:
Sub Calendrier()
'source:Alain Vallon, mpfe
  varAn = Year(Date)
  If varAn = 0 Then Exit Sub
  X = DateSerial(varAn, 1, 1)
  Y = DateValue("31 décembre " & varAn)
  For i = 0 To Y - X
    Range("A" & i + 1) = X + i
  Next
  Columns("A:A").NumberFormat = "ddmmyyyy"
End Sub
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Creer classeur depuis valeur

Bonjour hypo78, bonjour Pierrot, Bonjour Staple,
Comme je trouvais ça amusant, j'ai concaténer des morceaux de la macro de Alain Vallon donnée par Staple, et des morceaux de l'exemple donné au post 1.
Je suis arrivé à un temps de 1 Minute 15 pour créer les 365 classeurs dans 12 dossiers.
Voir si le code sera façilement adaptable...
VB:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Const modele As String = _
"F:\Data\Feuilles de garde\Versaillesbis\modèle_VRS.xls"
Dim sDossier$, Wkb As Workbook, i&, varAn, X, Y, Deb, Cpt&
Deb = Timer
Workbooks.Open modele
Set Wkb = ActiveWorkbook
varAn = Year(Date)
If varAn = 0 Then Exit Sub
X = DateSerial(varAn, 1, 1)
Y = DateValue("31 décembre " & varAn)
Wkb.Sheets("01").Copy
For i = 0 To Y - X
    sDossier = Wkb.Path & "\" & Month(X + i)
    With ActiveWorkbook
        If Dir(sDossier, vbDirectory) = "" Then MkDir sDossier
        .SaveAs sDossier & "\" & Format(X + i, "ddmmmmyyyy") & ".xls"
        Cpt = Cpt + 1
    End With
Next i
ActiveWorkbook.Close True
Wkb.Close False
Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "Traitement Terminé" & vbLf & _
         Cpt & " Classeurs créés" & vbLf & _
         "en " & Format(Timer - Deb, "0.00") & " Secondes"
End Sub
Cordialement
 

Pièces jointes

  • hypo78.xls
    25.5 KB · Affichages: 67
  • hypo78.xls
    25.5 KB · Affichages: 65
  • hypo78.xls
    25.5 KB · Affichages: 70

Discussions similaires

Statistiques des forums

Discussions
312 864
Messages
2 093 014
Membres
105 607
dernier inscrit
Grospsdresbois