J'avance tout doucement dans une macro qui crée des feuilles et des tableaux à partir de modèles situés dans le même classeur.

Le problème que j'ai, c'est que la taille du fichier devient vite incroyable (plusieurs MO) alors que ce ne sont que des tableaux copiés-collés... Ceci a pour effet gênant de ralentir la mnipulation de ses tableaux, et évidemment le transport du fichier

Si quelqu'un a une idée pour limiter ce phénomène.

Voici le code qui crée les tableaux :
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Sub Création()
 
'Vidage des feuilles
 
    For Each Feuille In ActiveWorkbook.Worksheets
        If Left(Feuille.Name, 7) = "Produit" Or Left(Feuille.Name, 9) = "Resultats" Then
            Application.DisplayAlerts = False
            Feuille.Delete
            Application.DisplayAlerts = True
        End If
    Next Feuille
 
'déclaration des variables
    Sheets("évaluation_produit").Activate
 
    Dim modele As Range
    Set modele = Range("modele")
 
    Dim modele2 As Range
    Set modele2 = Range("modele2")
 
    Dim CellCour As Range
 
    Dim NbProd As Integer
    NbProd = Range("NbProd").Value
    Dim NbT As Integer
    NbT = Range("NbT").Value
    Dim NbZone As Integer
    NbZone = Range("NbZone").Value
 
 
    Dim CellCourr As Range
 
    Dim CellCoura As Range
 
    Dim p As Integer
    Dim z As Integer
    Dim t As Integer
 
 
 
For p = 1 To NbProd
 
    Set sh = ActiveWorkbook.Sheets.Add
    sh.Name = ("Produit" & p)
    sh.Move Before:=Sheets(4 + p)
    Set CellCour = Range("A3")
    Set sg = ActiveWorkbook.Sheets.Add
    sg.Name = ("Resultats" & p)
    sg.Move Before:=Sheets(4 + 2 * p)
    Set CellCoura = Range("A1")
    For z = 1 To NbZone
        For t = 1 To NbT
'création des tableaux d'évaluation
            sh.Activate
            modele.Copy
            CellCour.Activate
            ActiveSheet.Paste
            CellCour.Value = ("T" & t)
            CellCour.OffSet(1, 0).Value = ("zone" & z)
            Set CellCour = CellCour.OffSet(11, 0)
'création des tableaux de calculs résultats
            sg.Select
            modele2.Copy
            CellCoura.Select
            ActiveSheet.Paste
            CellCoura.OffSet(2, 0).Value = ("T" & t)
            CellCoura.OffSet(3, 0).Value = ("Zone" & z)
            Set CellCoura = CellCoura.OffSet(13, 0)
        Next
        Set CellCoura = Range("A1").OffSet(0, 28 * z)
        sh.Select
        Set CellCour = Range("A3").OffSet(0, 12 * z)
    Next
Next
 
 
    Application.CutCopyMode = False
End Sub