XL 2013 Comportement macro

Xorys

XLDnaute Nouveau
Bonjour,

J'ai un comportement étrange dans mon fichier Excel.

Dans la feuille 1, j'ai un tableau qui récupère des données dans la feuille 2 avec environ 80 commandes =NB.SI.ENS

Dans la feuille 3, j'ai un TCD et une macro à l'intérieur pour sélectionner automatiquement des filtres.
La macro ne sort pas de la feuille 3.

Quand j'exécute ma macro en feuille 3, elle met environ 20 sec à se terminer.
Et si je supprime ma feuille 1 qui contient mes 80 commandes, la macro de la feuille 3 s’exécute en 2 sec.

Pourtant il y a aucun rapport entre la feuille 1 et 3.

Est-ce normal ?

Je vous remercie pour votre aide.
 

Lolote83

XLDnaute Barbatruc
Bonjour,
La multiplication des nombreuses formules à l'intérieur d'un fichier peut ralentir l'exécution d'une macro car il y a souvent un recalcul des formules qui est fait pendant l'exécution de ta macro.
C'est pour cela que si tu supprimes ta feuille "blindée" de NB.SI.ENS, un nombre important de calcul n'est plus à faire d'ou gain de temps.
Une solution serait peut être de "geler" le recalcul en début de macro et de réactiver ensuite le recalcul en fin de macro.
Pour cela, ta macro pourrait être comme suit :

Code:
Sub Test()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    '
    '
    'la suite de ta macro
    '
    '
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub
En espérant avoir bien saisie le sens de ta question
@+ Lolote83
 

Xorys

XLDnaute Nouveau
Bonjour Lolote83,

J'utilisais déjà la commande Application.ScreenUpdating mais alors celle pour le calcul je ne connaissais pas et c'est incroyable le gain de temps maintenant.

Je te remercie.

Si je peux me permettre de te poser une autre question pour optimiser un peu mes macros.

Quand je vais sur ma feuille 3, j'ai une macro automatique qui me permet de remplacer des matricules par des noms.
Toujours dans ma feuille 3, j'ai des macros pour choisir différents filtres à mes TCD.

Seulement voilà, étant assez novice dans le VBA, j'ai ajouté ce petit bout de code pour "recharger" ma feuille 3 et rappliquer le remplacement des matricules selon le filtre que j'utilise.

Code:
Sheets("feuille4").Select
Sheets("feuille3").Select

Ca fonctionne bien mais je pense qu'on peut faire plus propre. Sachant que j'ai déjà essayé la commande ThisWorkbook.RefreshAll mais elle ne recharge pas la macro lié à l'ouverture de la feuille 3.

Si jamais c'est vraiment pas clair, je peux essayer d'ajouter un fichier Excel comme exemple mais il serait assez long à simplifier et cacher les données confidentielles.
 

Lolote83

XLDnaute Barbatruc
Re salut XORYS,
Je suis désolé mais je ne comprends pas vraiment ta question.
Si tu veux envoyer un fichier simplifier sans information confidentielle, c'est OK.
Par contre les fêtes de fin d'année approchant, je n'aurai peut être que peu de temps à me consacrer à tout ceci
J'en profite pour te souhaiter de passer de bonnes fêtes
@+ Lolote83
 

Discussions similaires

Réponses
4
Affichages
195

Membres actuellement en ligne

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal