Bonjour,
j'ai un fichier, appelé "synthèse" qui va récupérer 8 tableaux identiques dans 8 dossiers différents (1 par dossier), qui copie chaque tableau dans une feuille et fait la fusion des données sur une autre feuille.
J'ai cherché à améliorer mes macros pour les accélérer mais le seul effet obtenu a été sur le volume du fichier qui, une fois la macro exécutée, est de +/- 36Mo alors qu'avant modification des macros il était de +/- 2Mo.
Voici les macros telles qu'elles étaient initialement:
importation des données (cette macro est répétée 8 fois, une pour chaque dossier) :
Fusion des données:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub import() Application.ScreenUpdating = False Workbooks.Open Filename:="F:\...\fichier Paris.xls" Worksheets("Activités").Range("B3:N1202").Copy Windows("synthèse.xls").Activate Worksheets("Activité Paris").Activate Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues Selection.PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False Windows("fichier Paris.xls").Close savechange = False end sub
Voici les lignes après modifications :
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 Private Sub CommandButton2_Click() Call import Dim Lig1 As Integer 'Lig1 est un entier Dim Col1 As Integer 'Col1 est un entier Dim MaFeuille As Worksheet 'MaFeuille est une feuille Dim Ligne As Integer 'Ligne est un entier Application.ScreenUpdating = False Feuil1.Range("A3:N6002").Cells.Clear Lig1 = 3 For Each MaFeuille In Sheets If MaFeuille.Name Like "Act*" Then With MaFeuille For Ligne = 3 To .UsedRange.Row + .UsedRange.Rows.Count If .Cells(Ligne, 2) <> "" Then For Col1 = 1 To 14 Feuil1.Cells(Lig1, Col1).Value = .Cells(Ligne, Col1).Value Next Lig1 = Lig1 + 1 End If Next End With End If Next Call format 'macro pour insérer des bordures et centrer des colonnes car la simple copie ne me donne que les valeurs Application.ScreenUpdating = True 'pour libérer l'affichage End Sub
importation des données
fusion des données
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Workbooks.Open Filename:="F:\...\fichier Paris.xls" Worksheets("Activités").Range(Range("B3"), Range("N1202").End(xlDown)).Copy
et je n'arrive pas à savoir quelle macro (import, fusion ou format) fait subitement grossir mon fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 With mafeuille For Ligne = 3 To 1202
Merci pour votre aide.
Partager