Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

probleme de vitesse avec une macro

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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😀H").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😀H").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😀H").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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…