Créer plusieurs feuilles en fonction d'une liste

Grem974

XLDnaute Nouveau
Bonjour,
J'aimerais savoir comment peut-on faire pour générer à partir d'une macro plusieurs feuilles qui seront au nombre de cellules comprises dans une liste et qui prendront le nom de chaque élément?

J'ai tenté quelque chose comme :

Code:
Sub Save_DOC()
Dim nom, c As Range
    Sheets(Array("TRAME", "CYCLES", "calendrier", "Affectations")).Copy
    ChDir "C:\Users\m.roblin\Desktop"
    With ActiveWorkbook
        .SaveAs Range("TRAME!B2").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    
    For Each c In Range("mois!A1:A12")
        nom = c.Value
        Sheets.Add Count:=1, after:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = nom
    Next c
    End With
End Sub

Mais ca marche pas.

Mon idée était de créer une feuille par mois à partir d'une trame dynamique existante.
Merci d'avance!
 

Staple1600

XLDnaute Barbatruc
Re : Créer plusieurs feuilles en fonction d'une liste

Re


Essaies cette version
(PRE-REQUIS
1) j'ai mis en commentaire tout le code contenu dans la feuille TRAME
2) j'ai supprimé la liste de validation en B1)

Code:
Sub CopyFeuilles12BIS()
Dim i%
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = 1 To 12
Sheets("TRAME").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = MonthName(i)
ActiveSheet.Range("B1").Range("A1") = DateSerial(Year(Date), i, 1)
ActiveSheet.Range("B1").Range("A1").NumberFormatLocal = "mmmm"
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Donc ensuite, il te faudra dé-commenter manuellement le code sur les douze feuilles ;)
(ou le faire par macro)
 

Grem974

XLDnaute Nouveau
Re : Créer plusieurs feuilles en fonction d'une liste

Alors, je n'ai pas mis en commentaire le code de la Trame et la création des 12 mois est juste très rapide. Ca semble répondre à l'objectif initial! Tu es un maître!! merci beaucoup!!!

Je me demande juste ce qui a changé entre les codes?

Et comment est ce que je peux ajouter le code du genre :

Code:
Sheets(Array("TRAME", "CYCLES", "calendrier", "Affectations")).Copy
    ChDir "C:\Users\Jeremie\Desktop"
    With ActiveWorkbook
        .SaveAs Range("TRAME!B2").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    End With

De façon à ce que chaque service puisse générer un fichier?
 

Staple1600

XLDnaute Barbatruc
Re : Créer plusieurs feuilles en fonction d'une liste

Re


On peut envisager (en attendant mieux) d'utiliser deux macros
1) tu lances la macro CopyFeuilles12Bis
puis ensuite
2 tu lances cette macro​
Code:
Sub EnregistrerCopies()
Dim serv
serv = Array("médecine_chimio", "DVO", "SSR")
Dim i As Byte, j%
For i = 0 To 2
    For j = 1 To 12
    With Sheets(MonthName(j))
        .Range("B2").Range("A1") = serv(i)
        .Range("A4").Range("A1") = "Services " & serv(i) & Format(DateSerial(Year(Date), j, 1), " mmmm yyyy")
    End With
    Next j
ActiveWorkbook.SaveAs "c:\temp\" & serv(i) & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
Next i
End Sub
 

Grem974

XLDnaute Nouveau
Re : Créer plusieurs feuilles en fonction d'une liste

Merci de ton aide. Je teste tout ca.
Moi j'ai essayé des trucs mais ca fait des gros bugs sur mon PC...

Je te dis ca demain, et te remercie grandement pour ton aide! Grace à toi mon stage fait un pas en avant après 3jours de blocage....
 

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch