Bonjour,

J'ai besoin de votre aide. J'ai un code qui tourne bien, code que j'ai pu écrire en glanant des infos de certains d'entre vous. Merci à tous.
J'ai juste un souci avec le premier fichier généré. Le temps d'exécution est excessivement long et le fichier généré plus gros que le fichier à partir duquel on le génère. Une fois ce premier fichier passé, la suite est très rapide et les fichiers de taille raisonnable.
J'ai un fichier initial (~18Mo) avec 5 onglets que je veux découper en autant de vendeurs qu'il y en a dans la colonne 3 du fichier initial.

Ce que je ne m'explique pas est que si je lance le code ci-dessous :
- en mettant For iVendeur = 1 To vendeurs.Count
le fichier généré pour le vendeur correspondant à l'indice iVendeur=2 fait par exemple 571ko
- en mettant For iVendeur = 2 To vendeurs.Count
le fichier généré pour le vendeur correspondant à l'indice iVendeur=2 fait désormais par exemple 21Mo!!!

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
For iVendeur = 1 To vendeurs.Count
    nomDossier = nomRepertoire & "\" & dateFichier & "\vep\" & vendeurs(iVendeur)
    If Dir(nomDossier, vbDirectory) = "" Then MkDir nomDossier
 
    nomFichier = nomRepertoire & "\" & dateFichier & "\vep\" & vendeurs(iVendeur) & "\Portefeuille GE.xlsx"
    Application.DisplayAlerts = False
    For iFeuille = 1 To listeFeuilles.Count
        If iFeuille = 1 Then
            Workbooks.Add
            ActiveSheet.Name = listeFeuilles(iFeuille)
        Else
            Sheets.Add After:=Sheets(Sheets.Count)
            ActiveSheet.Name = listeFeuilles(iFeuille)
        End If
    Next iFeuille
    ActiveWorkbook.SaveAs nomFichier
 
    For iFeuille = 1 To listeFeuilles.Count
        Application.CutCopyMode = False
        Workbooks(nomFichierInitial).Activate
        Sheets(listeFeuilles(iFeuille)).Select
 
        Selection.AutoFilter    ' supprime filtrages actifs
        Range("A1").Select
        Selection.AutoFilter Field:=4, Criteria1:=vendeurs(iVendeur) 'filtre valeur cliq
 
        Cells.Select
 
        Selection.Copy
 
        Workbooks("Portefeuille GE.xlsx").Activate
        Sheets(listeFeuilles(iFeuille)).Select
 
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ActiveWorkbook.Save
 
        Range("A1").Select
        Range(Selection, Selection.End(xlToRight)).Select
        Range(Selection, Selection.End(xlDown)).Select
        Cells.EntireColumn.AutoFit
        ActiveWorkbook.Save
 
        Set maplage = Range("A1").CurrentRegion
        ActiveWorkbook.Names.Add Name:=listeFeuilles(iFeuille), RefersTo:=maplage
        Application.CutCopyMode = False
        ActiveWorkbook.Save
 
        Workbooks(nomFichierInitial).Activate
        Sheets(listeFeuilles(iFeuille)).Select
 
        Selection.AutoFilter
    Next iFeuille
    Workbooks("Portefeuille GE.xlsx").Activate
    Application.CutCopyMode = False
    ActiveWorkbook.Close SaveChanges:=True
Next iVendeur