Indépendamment de ton projet et valable pour toute macro, 99% du temps, les .Select et .Activate sont inutiles, tu peux très bien manipuler les données sans ces méthodes. Ces méthodes sont souvent sources d'erreurs et dégradent les performances.
Par exemple, tu peux faire
Code:
Sheets("Feuil1").Range("A1").Value = "blablabla"
au lieu de
Code:
1 2 3
| Sheets("Feuil1").Activate
Range("A1").Select
Range("A1").Value = "blablabla" |
Mais du coup comment recuperer des infos de cellule d'une colonne comme :
Code:
1 2 3 4 5 6 7 8 9
| ' Activer la première cellule de la colonne contenant les groupes d'affectation (colonne L)
wsGlobal.Activate
wsGlobal.Range("L2").Select
' Boucle à travers chaque cellule dans la colonne des groupes d'affectation
Do Until IsEmpty(ActiveCell)
' Obtenir le nom du groupes d'affectation
groupe = ActiveCell.Value |
Quand c'est possible, utilise la structure With...End With, ça allège le code et c'est plus lisible.
Dans le cas de ta macro,au lieu de
Code:
1 2 3 4 5 6 7
| wsGlobal.UsedRange.EntireColumn.AutoFit
wsGlobal.Columns("B:B").ColumnWidth = 6
wsGlobal.Columns("C:C").ColumnWidth = 10
wsGlobal.Columns("D:D").ColumnWidth = 16
wsGlobal.Columns("H:H").ColumnWidth = 57
wsGlobal.Columns("J:J").ColumnWidth = 9
wsGlobal.Columns("K:K").ColumnWidth = 16 |
tu peux faire
Code:
1 2 3 4 5 6 7 8 9 10 11
| With wsGlobal
.UsedRange.EntireColumn.AutoFit
.Columns("B:B").ColumnWidth = 6
.Columns("C:C").ColumnWidth = 10
.Columns("D:D").ColumnWidth = 16
.Columns("H:H").ColumnWidth = 57
.Columns("J:J").ColumnWidth = 9
.Columns("K:K").ColumnWidth = 16
End With |
Pour éviter des macros de plusieurs centaines de lignes, difficiles à maintenir, tu peux découper en macros plus petites pour éffectuer certaines tâches et que tu appelles au bon endroit. Par exemple, la partie ou tu ajoutes les tableaux couleur, pourrait être mise dans une macro à part.
Voilà quelques pistes pour améliorer ton code.