Problème de lenteur

  • Initiateur de la discussion Initiateur de la discussion JORDAN
  • Date de début Date de début

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 !

JORDAN

XLDnaute Impliqué
Bonjour à toutes et à tous

J'ai un projet qui contient des listes de valdation, des formules et un USF et une vingtaine de pages.
Lorque je lance mon USF, il vient écrire des données dans une feuille de calcul, ces données sont récuprées pour les listes de validation, donc qui dit modification de cellules dit recalcul des formules.
j'ai 12 formules identiques à celle-ci

Code:
=SOMMEPROD((INDIRECT("'"&$A$2&"'!$B$3:$B$65536";VRAI)= $B$2)*(MOIS(INDIRECT("'"&$A$2&"'!$A$3:$A$65536";VRAI ))=MOIS(A4))*(ANNEE(INDIRECT("'"&$A$2&"'!$A$3:$A$65536 ";VRAI))=ANNEE(A4));INDIRECT("'"&$A$2&"'!$D$3:$D$65536 ";VRAI))

Actuellement dans les formules, les recherches sont effectués sur 65536 lignes et ce 4 fois par formule, ce qui rend un calcul assez long à chaque validation de l'USF.
Existerait-il un moyen de détecter la dernière cellule pleine et de remplacer 65536 par cette valeur ce qui accélèrerait le calcul des formules, actuellement j'ai environ 12000 lignes de remplies et en augmentation d'une centaine de lignes par jour, saisies via l'USF.
J'ai bien essayé le Calcul sur ordre mais ce n'est pas très pratique, les données sont aussi transcrites en graphiques.
Merci
 
Re : Problème de lenteur

Bonjour,

Effectivement, un SOMMEPROD sur 65000 lignes peut prendre un peu ..., beaucoup de temps.

Sur les 12000 lignes que tu évoques, y-a-t-il des lignes vides ?

Si non, on peut définir une plage nommée dynamique avec la fonction DECALER.

ex :

Insertion - Nom - Définir - Nom : plage_cellules - Fait référence à :

Code:
=DECALER(Feuil1!$A$1;0;0;NBVAL(Feuil1!$A:$A))

le nom plage_cellules définit ainsi la plage de cellules qui va de A1 à la dernière cellule.

Il faut alors utiliser plage_cellules à la place de $B$3:$B$65536

L'exemple ci-dessus ne correspond pas à ton cas, il faut l'adapter.

N'hésite pas à revenir avec un petit bout de ton fichier (anonymisé) si problème persiste.

Cela dit, sur 12000 lignes, ça mettra quand même un certain temps.


@+
 
Re : Problème de lenteur

Bonjour Jordan

essaye peut être ainsi, code à placer dans le module de ton USF :

devant toutes les autres procédures :

Code:
Dim s As Long

dans l'événement "Initialize" de l'usf :
Code:
With aplication
    s = .Calculation
    .Calculation = xlCalculationManual
End With

lorsque tu le quitte :

Code:
Application.Calculation = s

bon après midi
@+

Edition :bonjour Tibo, Jean-Marcel
 
Re : Problème de lenteur

Re,

ça y est j'ai enfin eu le temps de tester vos solutions

Pour Tibot et Jean-Marcel :
La lenteur se fait toujours trop ressentir, ça ne va pas, mais je garde sous le coude cette solution.

Pour Pierrot :
ta solution est très convenable, l'USF n'est plus du tout ralentit

Reste juste à faire attention de ne pas cliquer sur les cellules une fois que l'on a quitté l'USF, mais ça me va très bien

Merci à vous tous pour votre aide
bonne fin de journée
 
- 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

Réponses
38
Affichages
1 K
Réponses
5
Affichages
927
Réponses
15
Affichages
1 K
Réponses
3
Affichages
302
Retour