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
Partager