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

Résolu
borgognoremy Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
 foo -
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

5 réponses

  1. foo
     
    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
    1. borgognoremy Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  2. borgognoremy Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  3. foo
     
    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
  4. borgognoremy Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    1. borgognoremy Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
       
      https://www.cjoint.com/c/CEEqMJJw1ap

      Voilà mon classeur. il a exactement cette structure. J'ai enlevé les 3/4 des données.
      0
    2. borgognoremy Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. foo
     
    Bonjour

    Voila un example
    avec creation liste affaires

    http://cjoint.com/?3EFk7vkcnFM

    A+
    Maurice
    0