Bonjour à tous,
J’ai besoin de votre aide concernant une macro. J’ai réussi tant bien que mal à réaliser une macro qui effectue toutes les tâches que je souhaitait en parcourant divers forums et en m’aidant malheureusement trop souvent de l’enregistreur de macro.
Néanmoins, dès que je lance ma macro sur des fichiers avec un nombre de lignes important, le temps d’exécution est trop long, étant donné que mon code est très loin d’être optimal. A titre d’exemple, mon code tourne pendant 6/7 mins sur 50 000 lignes.
A l’aide de l’exécution pas à pas, j’ai essayé de repérer les parties de mon code qui posaient problèmes.
Voici les principales parties que je souhaiterais optimiser :
Je me suis basé sur l’enregistreur de macro pour réaliser cette partie qui fonctionne comme je le souhaite mais qui prend trop de temps, je ne vois comment pas trop comment l’optimiser.
J’ai également des difficultés concernant la mise en page. Il me semble que l’éxécution de ces parties de mon code prend du temps.
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 'Modification ordre colonnes Columns("B:B").Cut Columns("F:F").Insert Shift:=xlToRight Columns("H:H").Cut Columns("F:F").Insert Shift:=xlToRight Columns("H:H").Cut Columns("G:G").Insert Shift:=xlToRight Columns("W:W").Cut Columns("U:U").Insert Shift:=xlToRight Columns("X:X").Cut Columns("W:W").Insert Shift:=xlToRight Columns("AA:AA").Cut Columns("Z:Z").Insert Shift:=xlToRight
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 'Mise en forme Range("A1:AB1").Font.ColorIndex = 2 Range("A1:AB1").Interior.ColorIndex = 11 Range("A1:AB1").Font.Bold = True Range("A1:AB1").RowHeight = 45 With Range("A1:AB1") .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End WithVoila, j’espère que vous pourrez me permettre de modifier ces parties afin d’avoir un code plus propre et surtout plus RAPIDE !
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 'Centrer le texte + renvoyer à la ligne With Range("A:AB") .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Range("A:AB") .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With
Je suis à votre disposition si vous avez besoin de précisions.
Je vous remercie d’avance,
Clément
Partager