VBA : Créer des classeurs excel à partir d'une liste

Résolu/Fermé
borgognoremy Messages postés 19 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 6 juin 2013 - 29 mai 2013 à 15:52
 foo - 31 mai 2013 à 11:02
Bonjour,

J'ai une liste de projets (qui est variable au niveau du nombre possible de projets)dans une feuille et je souhaiterais ouvrir un nouveau classeur pour chaque projet qui se trouve dans la liste et que ces nouveaux classeurs portent le nom du projet.

J'ai bien compris qu'il fallait mettre une boucle en place mais je n'y arrive pas (débutant niveau - 1000)

Ce qu'il se passera, c'est que sur chaque fichier, je vais devoir faire pleins de choses et que ça se répètera aussi. Donc toutes ces tâches auront pour variable le numéro de projet. A quel endroit devrais-je intégrer dans la macro tout ce que je ferai par la suite pour que ça se répète sur chaque classeur.



Sub opennewbooks()

Dim affaire As Integer

For affaire = 1 To Range("A100").End(xlUp).Row
If Not IsEmpty(Cells(affaire, 1)) Then
Workbooks.Add
End If
Next affaire

End Sub

C'est la "macro" que j'ai écrite mais c'est un désastre bien sûr.

Un grand merci d'avance.

Rémy, admiratif de vos connaissances sur Excel




A voir également:

5 réponses

Bonjour

Voila une routine pour la creation de classeurs

Sub CreatListe()
Chemin = ActiveWorkbook.Path
For L = 1 To Range("A" & Rows.Count).End(xlUp).Row
Fichier = Range("A" & L).Value
ChemFiche = Chemin & "\" & Fichier & ".xls"
Workbooks.Add
ActiveWorkbook.SaveAs ChemFiche
ActiveWorkbook.Close True
Next
End Sub

A+
Maurice
0
borgognoremy Messages postés 19 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 6 juin 2013
30 mai 2013 à 09:38
Mille merci pour cette routine!

Je vais essayer de voir pour intégrer toutes les tâches que j'ai à faire. Je suppose qu'il faut que je les mette avant le next... à voir.

Encore merci !

Baieta
0
borgognoremy Messages postés 19 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 6 juin 2013
30 mai 2013 à 14:10
Rebonjour maurice,

Je suis embêté parce que je voudrais ajouter pleins d'autres instructions avant de finir la macro pour que la boucle prenne ces instructions. Je voulais utiliser "Fichier" (que j'ai remplacé par affaire) mais ça ne marche pas.

Peux-tu jeter un oeil stp?

Encore merci d'avance


Sub Nvx_class_par_affaire()

'Macro créant un nouveaux classeur par projet et exécutant des tâches diverses'

Chemin = ActiveWorkbook.Path

'Formule de boucle"
For L = 1 To Range("A" & Rows.Count).End(xlUp).Row
affaire = Range("A" & L + 1).Value
ChemFiche = Chemin & "\" & affaire & ".xls"

'Ajout d'un nouveau classeur'
Workbooks.Add

'Sauvegarde du classeur à l'emplacement du fichier source'
ActiveWorkbook.SaveAs ChemFiche

'Renomme les feuilles'
Worksheets("Feuil1").Name = "Résumé"
Worksheets("Feuil2").Name = "Dépenses"
Worksheets("Feuil3").Name = "Engagements"

'activation du fichier source et ouverture feuille Depenses_cum"
Workbooks("Base_dep_eng_CA.xlsm").Activate
Sheets("Depenses_cum").Select

'Filtre la feuille sur l'affaire'

Rows("1:1").Select
Selection.AutoFilter
ActiveSheet.Range("$A:$Y").AutoFilter Field:=4, Criteria1:=affaire


'Copie des données colonne A à Y'
Range("A:$Y").Copy

'Coller dans le fichier de l'affaire'
Workbooks(affaire).Activate
Sheets("Dépenses").Select
Range("A:$Y").Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

'Ferme le classeur de l'affaire'
ActiveWorkbook.Close True
Next

End Sub
0
Re
je pense que tu veux un truc comme ca

http://cjoint.com/?3EEoCJ8hZWf

A toi de voir si ca te convient
A+

Maurice
0
borgognoremy Messages postés 19 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 6 juin 2013
30 mai 2013 à 15:03
Pas vraiment :)

En fait la valeur affaire qui va varier au fur et à mesure de la boucle je souhaiterais l'utiliser dans mes instruction de copier/ coller, de Filtrer. Seulement, il me dit que l'indice n'existe pas. Là où j'ai souligné et mis en gras, c'est à ces moments que j'aimerais utiliser la valeur affaire qui va varier au fur et à mesure de la boucle.

Est-ce que ça te parait clair mon problème ou je m'exprime comme un pied (ce qui est fort probable ) ;) ?
0
borgognoremy Messages postés 19 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 6 juin 2013
30 mai 2013 à 16:40
https://www.cjoint.com/c/CEEqMJJw1ap

Voilà mon classeur. il a exactement cette structure. J'ai enlevé les 3/4 des données.
0
borgognoremy Messages postés 19 Date d'inscription vendredi 17 mai 2013 Statut Membre Dernière intervention 6 juin 2013
31 mai 2013 à 10:19
Maurice, c'est bon... Ma variable affaire elle marchait très bien en fait... c'est juste que sur ma première affaire, il n'y avait rien dans le tableau filtré la concernant :)

Milles merci pour ton aide ... c'est super sympa
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour

Voila un example
avec creation liste affaires

http://cjoint.com/?3EFk7vkcnFM

A+
Maurice
0