probleme de vitesse avec une macro

dirtyjs

XLDnaute Nouveau
Bonjour à tous,
je suis assez débutant avec les macros. Cela dit, j'ai créé un rapport de vente qui est extrêmement lent (ça prend exactement 3 minutes pour l'ouvrir). C'est peut-être la taille qui conditionne la vitesse de chargement, il pèse 8 megs, ou les macros que j'ai programmées avec l'aide du forum (merci à tous!!). Je trouve que mon classeur est vraiment lourd compte tenu du nombre reduit de données qui y sont présentes (7 feuilles: 1 feuille accueil, 3 feuilles de rapport et 3 feuilles source de données). En tout, j'ai trois macros: deux simples et une complexe. Les simples ne sont que des boutons qui dirige les utilisateurs d'une feuille vers autres, du type page web. La macro complexe permet de masquer les colonnes en fonction du nombre de clients par territoire. La voici:

Private Sub Worksheet_change(ByVal Target As Range)
Columns("E:DH").Hidden = True
If Intersect(Target, Range("b5")) Is Nothing Then Exit Sub
If Target.Value = "94101" Then Columns("A:BD").Hidden = False
If Target.Value = "95104" Then Columns("A:BR").Hidden = False
If Target.Value = "95200" Then Columns("A:AH").Hidden = False
If Target.Value = "95201" Then Columns("A:AF").Hidden = False
If Target.Value = "95202" Then Columns("A:BT").Hidden = False
If Target.Value = "95203" Then Columns("A:DH").Hidden = False
If Target.Value = "95204" Then Columns("A:AP").Hidden = False
If Target.Value = "95205" Then Columns("A:CA").Hidden = False
If Target.Value = "95206" Then Columns("A:BL").Hidden = False
If Target.Value = "95207" Then Columns("A:AZ").Hidden = False
If Target.Value = "95208" Then Columns("A:BH").Hidden = False
If Target.Value = "95209" Then Columns("A:BR").Hidden = False
If Target.Value = "95210" Then Columns("A:BZ").Hidden = False
If Target.Value = "95211" Then Columns("A:BH").Hidden = False
If Target.Value = "95212" Then Columns("A:BJ").Hidden = False
If Target.Value = "95213" Then Columns("A:BF").Hidden = False
If Target.Value = "95214" Then Columns("A:DH").Hidden = False
If Target.Value = "95215" Then Columns("A:BD").Hidden = False
If Target.Value = "95216" Then Columns("A:AP").Hidden = False
If Target.Value = "95217" Then Columns("A:AN").Hidden = False

End Sub

La target value est le numéro de territoire et j'ai inscrit le nombre de colonne à afficher. Aurait-il une façon d'optimiser le code? Vaudrait-il mieux que mes feuilles sources soient dans un autre classeur pour accélerer la vitesse de chargement??

Merci et bonne journée,

JS
 

ERIC S

XLDnaute Barbatruc
Re : probleme de vitesse avec une macro

Bonjour

8M cela fait lourd. Fais un essai en allégeant car il est rare que les macros ralentissent l'ouverture (elles peuvent être longues à s'exécuter par contre) sauf si elles sont dans workbook_open()

sinon une autre façon d'écrire ta macro

select case target.value
case "94101"
Columns("A:BD").Hidden = False
case.....

end select

ce sera sans doute plus lisible
 

dirtyjs

XLDnaute Nouveau
Re : probleme de vitesse avec une macro

Merci !! et si je faisais des références entre plusieurs classeurs au-lieu que dans plusieurs feuilles. L'autre problème que j'ai cerné c'est que j'exporte des tables Access en excel. Je crois que ç'a alourdit les fichiers....

Qu'en penses-tu?

JS
 

Discussions similaires

Réponses
2
Affichages
493
Réponses
4
Affichages
827

Statistiques des forums

Discussions
312 329
Messages
2 087 324
Membres
103 516
dernier inscrit
René Rivoli Monin