blocage calculs sur feuille

Phil39

XLDnaute Occasionnel
Bonjour à tous et toutes ,

Ma feuille 1 sert de "base de données" (enregistrements à partir d'un userform).
A chaque fois que je valide une nouvelle ligne, j'ai un "temps de latence" causé par le fait que j'ai une feuille 4 blindée de nb.si et de sommeprod qui se recalculent en temps réel (affichage de statistiques + graphiques).

pour palier à ce temps de latence, depuis quelques jours je pose des questions pour intégrer des countif et des sumproduct en VBA afin de déclencher les calculs sur un clic dans un userform. Ca devient "galère" et je souhaite finalement revenir aux bons vieux nb.si et sommeprod.

Je souhaiterais donc savoir :
- s'il est possible au lancement du fichier de bloquer tous les calculs uniquement de la feuille 4,
- de les déclencher uniquement "sur demande" (clic sur un commandbutton) en affichant en plus un petit avertissement " calculs en cours, merci de patienter" qui se ferme automatiquement quand tous les calculs sont effectués.

Merci d'avance de vos lumières
 
Dernière édition:

kllmoon

XLDnaute Occasionnel
Re : blocage calculs sur feuille

Je ne crois pas que tu puisse cesser le calcul uniquement pour une feuille mais bon, peut-être que je me trompe. Ce que tu peux faire c'est insérer dans workbook ce code :

Code:
Private Sub Workbook_Open()
 With Application
        .Calculation = xlManual
        .MaxChange = 0.001
    End With
End Sub

Ceci mettera tes calculs manuels, tu peux alors utiliser la simple fonction calculate pour lancer tes calculs.

Pour ton message d'attente, je te suggère d'utiliser la fonction on time avec une approximation du temps requis pour faire le calcul.

J'avais penser utiliser un calcul de contrôle à la fin de la série (genre z800 = 1) et while z800 = 1 tu affiche ton message d'attente mais je test et je n'arrive pas à le faire disparaitre avec cette fonction une fois le processus terminé...
 

Phil39

XLDnaute Occasionnel
Re : blocage calculs sur feuille

Je ne crois pas que tu puisse cesser le calcul uniquement pour une feuille mais bon, peut-être que je me trompe. Ce que tu peux faire c'est insérer dans workbook ce code :

Code:
Private Sub Workbook_Open()
 With Application
        .Calculation = xlManual
        .MaxChange = 0.001
    End With
End Sub

Ceci mettera tes calculs manuels, tu peux alors utiliser la simple fonction calculate pour lancer tes calculs.

Pour ton message d'attente, je te suggère d'utiliser la fonction on time avec une approximation du temps requis pour faire le calcul.

J'avais penser utiliser un calcul de contrôle à la fin de la série (genre z800 = 1) et while z800 = 1 tu affiche ton message d'attente mais je test et je n'arrive pas à le faire disparaitre avec cette fonction une fois le processus terminé...

Merci pour le code.
Je vais essayé de me débrouiller avec cela même s'il y a d'autres calculs à faire sur la feuille 1.

pour le temps d'attente "visuel", Je vais essayé de faire une jauge de progression de calcul dans un userform basée sur le remplissage des cellules de ma feuille 4 :
Il s'agit de 58 tableaux de 9 lignes soit 522 calculs.
le but est de parvenir à faire quelque chose qui progresse en % au fur et à mesure des 522 remplissages (+1% dans la barre tous les 5 calculs + une "consolidation du tableau" pour les 22 derniers). C'est un leurre pour faire patienter l'utilisateur...
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 047
Membres
104 011
dernier inscrit
dfr