[VBA] Récupérer l'état du calcul sur ordre

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 !

ninbihan

XLDnaute Impliqué
Bonjour le forum,

Dans un gros fichier plein de matricielles, j'ai passé le calcul en calcul sur ordre. Dés qu'une modif est faite, "calculer" s'affiche dans la statusbar, est il possible de récupérer cette valeur ?
Si cela n'est pas possible j'utiliserais l'évenementielle worksheet_change...

Bonne journée,

Ninbihan
 
Re : [VBA] Récupérer l'état du calcul sur ordre

Bonjour,

Je crains que ce n'est pas possible (quoi que...) de "prendre la main" pendant un calcul excel car le code est pendant ce temps "en attente" de fin de ce calcul, c'est en tout cas je que j'ai constaté sur ce fil.
 
Re : [VBA] Récupérer l'état du calcul sur ordre

Bonjour ninbihan, salut skoobi,

Je viens de (re)découvrir une chose grâce à ce fil : même quand le calcul est Sur ordre, la formule de la MFC est recalculée quand on modifie la cellule.

Je vais utiliser une fois de plus une fonction macro Excel 4.0 (ça agace certains mais tant pis !).

1) Définir (menu Insertion-Nom) le nom SurOrdre avec la formule :

=LIRE.DOCUMENT(14)=3

Elle renvoie VRAI quand le calcul est Sur ordre, FAUX dans le cas contraire.

2) Sélectionner toute la feuille et créer une MFC avec une couleur rouge et la formule :

=SurOrdre*NBVAL(A1)

3) Mettre le calcul Sur ordre (menu Outils-Options-Calcul).

Si alors on entre ou modifie une donnée, la cellule se colore en rouge. Si on appuie sur F9 (recalcul) la couleur s'efface...

Bon, ce n'est pas tout à fait le problème posé, mais ça y ressemble beaucoup.

Edit : les formules de validation sont aussi recalculées, mais je ne suis arrivé à rien avec le nom SurOrdre.

A+
 
Dernière édition:
Re : [VBA] Récupérer l'état du calcul sur ordre

Bonsoir ninbihan, skoobi, job75,

Les macros Excel 4 j'aimais bien et j'adore encore (plusieurs applis.qui tournent encore avec et les fonctions Excel4 et les boîtes de dialogues qui n'ont pas vieillies), alors continue tes exemples. Bonne piqûre de rappel.

Bon WE tous.

Jean-Pierre
 
Re : [VBA] Récupérer l'état du calcul sur ordre

Bonjour,


Merci pour vos réponses, je me suis attardé sur la démonstration de Job car je ne connaissais pas les macros Xl4.0. J'ai bien simulé le phénoméne mais n'ai pas réussi à en tirer quelque chose en VBA. J'ai donc opté pour une variable booléenne public dans la procédure évenementielle worksheet_change. En tout cas merci beaucoup pour vos recherches et bon dimanche à tous,


Ninbihan
 
Re : [VBA] Récupérer l'état du calcul sur ordre

Bonjour à tous,

Voici une solution avec VBA, mais vous l'avez peut-être trouvée ninbihan :

- entrer en A1 la formule =MAINTENANT()

- entrer les 2 macros suivantes dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Application.Calculation = xlManual Then Range("B1") = "Calculer"
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Calculate()
Application.EnableEvents = False
Range("B1") = ""
Application.EnableEvents = True
End Sub

La 1ère macro s'exécute quand une cellule est modifiéee (en mode calcul Sur ordre), la 2ème quand la feuille est recalculée (avec la touche F9 par exemple).

A+
 
Re : [VBA] Récupérer l'état du calcul sur ordre

Salut JCGL,

Dans la feuille on met =MAINTENANT() en A1 (pour déclancher la macro Calculate lors du recalcul avec F9).

Dans les macros, c'est bien B1, qui indiquera donc si la feuille attend le recalcul.

A+
 
Re : [VBA] Récupérer l'état du calcul sur ordre

Bonjour à tous,

Merci Job de ton retour.

Je teste, bien qu'ayant entière confiance en toi.. Arf, dès que je peux récupérer XL normal et non sous l'Explorateur.

A++
A+ à tous
 
Re : [VBA] Récupérer l'état du calcul sur ordre

Bonsoir toutes et tous,

Je viens de faire un essai avec ceci et une mfc 3 couleurs suivant l'état de calcul: je n'ai pas de classeur avec de long calcul, alors si quelqu'un pouvait me dire si cela fonctionne avec l'état "En cours" (1), cela m'aiderait.

Code:
Function AttenteCalcul() As XlCalculationState
    'xlCalculation=1 (En cours)
    'xlDone = 0   (fait)
    'xlPending =2 (en attente)
    AttenteCalcul = Application.[B]CalculationState[/B]
End Function

Cette fonction renvoie l'état du calcul, Attente, en cours, fait.
Merci
A++

[Edit] j'ai oublié de dire que j'avais ajouté un nom 'EtatCalcul' Fait référence à : '=AttenteCalcul()'
 
Dernière modification par un modérateur:
Re : [VBA] Récupérer l'état du calcul sur ordre

Bonjour à tous,
Salut Hasco 🙂,

Job : comme présumé cela fonctionne parfaitement
Hasco : je n'ai pas compris comment tester ta fonction...

"M'en vais" me refaire un vin chaud et me préparer à redescendre sur Grenoble.

A++ 🙂
A+ à tous
 
Re : [VBA] Récupérer l'état du calcul sur ordre

Re tous,

JC: comme je le disais en édition de mon message précédent, j'ai créé un nom: 'EtatCalcul' faisant référence à la fonction: =AttenteCalcul()

Dans une cellule j'ai fait une MFC avec 3 conditions
1: EtatCalcul=2 -> Rouge (le calcul est en attente)
2: EtatCalcul=1 -> Orange (le calcul est en cours)
3: EtatCalcul=0 -> Vert (le calcul est fait)

1 (en attente) et 2 (fait) fonctionnent, mais j'ai un doute sur l'efficacité de 2 (en cours).

A+++ tous

Vin chaud... j'arrive!😀
 
Re : [VBA] Récupérer l'état du calcul sur ordre

Re,

Juste un détail.

J'ai mis =MAINTENANT() en A1 pour tester sur une feuille vierge (normalement elle n'est pas nécessaire sur une feuille avec des formules).

L'ennui dans ce test c'est que la barre d'état ne suit pas : "Calculer" ne s'y inscrit plus jamais une fois qu'on a recalculé la feuille par F9.

Un meilleur test sans doute : mettre en A1 la formule =A2 et ne modifier que la cellule A2.

Pour Hasco : Salut 🙂, au lieu de ma fonction macro Excel 4.0 du début, tu proposes une fonction VBA, c'est ça ? Edit : oui OK, mais LIRE.DOCUMENT ne renvoie pas vraiment les informations adéquates, alors que ta fonction, si.

A+
 
Dernière édition:
Re : [VBA] Récupérer l'état du calcul sur ordre

Re:

Job, oui c'est cela, j'aime beaucoup les fonctions excel 4 (nostalgie) mais j'aime explorer d'autres possibilités. Et me disais que ce serait sympa de pouvoir intercepter l'état 'En cours de recalcul' dans une MFC. Voir Post #13.

A++
 
- 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
2
Affichages
895
A
Réponses
11
Affichages
2 K
A
N
Réponses
6
Affichages
2 K
Retour