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("EH").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("AH").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("AH").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
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("EH").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("AH").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("AH").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