Création automatique de fichiers avec onglets selon liste

Bonjour,

Je suis débutante en VBA et je voudrais créer plusieurs fichiers , les nommer et ajouter des onglets selon un modèle .

Tout cela à partir d'une liste(voir ci-dessous) : je voudrais donc 2 fichiers nommés "NOUVELLE AQUITAINE" et "OCCITANIE", dans le 1er, 3 onglets nommés Bordeaux ,Pau , Bayonne et dans le 2ème Toulouse, Montpellier et Nîmes. Ces onglets doivent tous avoir le même modèle.

NOUVELLE AQUITAINEOCCITANIE
BordeauxToulouse
PauMontpellier
BayonneNimes

Je ne vois pas comment joindre mon fichier sur lequel j'ai réussi ,je pense 'à écrire le code pour créer les différents fichiers

Sub CreerFichiers()
Dim chemin As String, i As Range
Application.ScreenUpdating = False
chemin = ActiveWorkbook.Path & "\"
For Each i In Range("Liste")
Sheets("MODELE").Copy
ActiveWorkbook.SaveAs chemin & i.Value
ActiveWorkbook.Close True
Next i
Application.ScreenUpdating = True
End Sub

Et là, je suis bloquée.........

Je vous remercie de votre aide si vous avez un moment!

Bonjour,

Voici un essai avec un premier code (non testé) qui nécessite un tableau structuré !!! Si la plage "Liste" est une simple plage nommée, ça ne marchera pas.

Sub CreerFichiers()

dim wb as workbook, sfilename$

with thisworkbook
    chemin = .Path & "\"
    set fmodele = .sheets("MODELE")
end with

Application.ScreenUpdating = False
with range("Liste") '<<< éventuellement préciser feuille devant (sheets("nomfeuillecontenantliste").range(liste"))
    for k = 1 to .columns.count
        sfilename = chemin & .cells(0, k).value
        set wb = workbooks.add
        for i = 1 to .rows.count
            if .cells(i, k).value <> "" then
                fmodele.Copy after:=wb.sheets(wb.sheets.count)
                wb.sheets(wb.sheets.count).name = left(.cells(i,k).value, 30)
            end if
        next i
        call Sauvegarde(wb, sfilename)
    next k
end with
Application.ScreenUpdating = True

End Sub

Sub Sauvegarde(Classeur as workbook, NomFichier$)
with Classeur
    for each ws in .worksheets
        if ws.name like "*#" then
            application.displayalerts = false
            ws.delete
            application.displayalerts = true
        end if
    next ws
    .SaveAs NomFichier, 52
    .Close True
end with
end sub

Edit : Ca y est, c'est bon je touche plus

Cdlt,

Bonjour,

Ouf, j'ai bien fait de réactualiser la page avant de me lancer !

Joli travail 3GB 😁

Attention juste ligne 9, manque le i dans sfilename

Edit: je viens de voir que tu as édité avant que je poste 😁

Salut JoyeuxNoel !

Loool ! Merci de ta vigilance .

Oui, en effet, il manquait ça et j'ai fait d'autres petites modifs... Je fais des one shot puis après, avec la coloration, j'y vois plus clair .

C'est sûr que taper le code hors de l'éditeur VBA est un sacré challenge et permet de bien se rendre compte de ce qu'on maîtrise ou non.

Je ne m'y risque pas trop encore. Ou alors pour les trucs vraiment faciles 😉

Oui, sachant que même avec l'éditeur, on est pas à l'abri, sur son propre fichier, de faire n'importe quoi... Hier encore, j'ai perdu au moins une heure pour une erreur stupide (sur un fichier à moi).

Mais ça fait vraiment progresser parce que ça force à réfléchir davantage et à retenir les propriétés et méthodes les plus courantes !

Mais je peux quand même compter sur mon ami Microsoft Docs !

Ah, je ne connais pas Microsoft docs. Tu t'en sers pour quoi ?

C'est vrai ?

C'est la documentation de Microsoft sur VBA Excel (entre autres) dispo sur Internet (souvent les pages qu'on obtient en tapant sur Google "VBA ...") qui est, je trouve, très bien organisée (mais pas toujours assez détaillée).

Je m'en sers sans arrêt pour me renseigner sur les objets, leurs propriétés et leurs méthodes.

Edit : Par exemple : https://docs.microsoft.com/fr-fr/office/vba/api/excel.worksheet.copy

Ah oui, OK. Je n'avais jamais fait attention à l'URL associée à ceci, ni au fait que cela pouvait s'appeler comme cela.

Je m'étais déjà fait la réflexion aussi que c'était une bonne base mais que c'était souvent incomplet. En général je regarde ça, et ensuite je trouve des infos plus complètes sur Excel-Pratique

Merci beaucoup 3GB pour ta réponse rapide, mais qu'appelles-tu un tableau structuré?

Re,

Un tableau structuré est une sorte de tableau amélioré avec plein d'avantages...

Il faut juste sélectionner ton tableau actuel (avec les titres) et aller dans Accueil/Mettre sous forme de tableau/Cochez avec en-têtes puis dans l'onglet Création qui apparait modifier le nom du tableau en saisissant Liste.

Peut-être que JoyeuxNoel va te faire une petite animation comme il fait si bien ! D'ailleurs, j'aimerais bien savoir comment tu fais .

Hello !

Non, non, je ne ferai pas de petite animation. Je te laisse te débrouiller ;)

C'est avec cet utilitaire que ça se passe ! ici

Et pour info, pas besoin de sélectionner le tableau actuel. Le fait d'être dedans fait qu'il le reconnaît automatiquement.

Merci ! Oh d'accord ! Je garde le lien mais je n'essaierai pas maintenant, dommage. Je pense que mes explications suffiront...

Elles suffiront sans nul doute, tant elles sont limpides et claires

Moi qui croyais que je t'aurais à la pitié et que tu me sortirais ta plus belle animation ... Râté

C'est bon , ça marche! Encore un grand merci .

Bonne soirée à toi et à JoyeuxNoel aussi

Merci ! Bonne soirée à toi également !

Rechercher des sujets similaires à "creation automatique fichiers onglets liste"