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

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
 

skoobi

XLDnaute Barbatruc
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.
 

job75

XLDnaute Barbatruc
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:

jeanpierre

Nous a quitté
Repose en paix
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
 

ninbihan

XLDnaute Impliqué
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
 

job75

XLDnaute Barbatruc
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+
 

job75

XLDnaute Barbatruc
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+
 

JCGL

XLDnaute Barbatruc
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
 
G

Guest

Guest
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:

JCGL

XLDnaute Barbatruc
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
 

JCGL

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

Bonjour à tous,

Effectivement, avec des explications..., cela fonctionne aussi avec ta fonction et avec la MeFC

A++
a+ à tous
 

Pièces jointes

  • Force Recalcul Job.zip
    7.1 KB · Affichages: 85
G

Guest

Guest
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!:D
 

job75

XLDnaute Barbatruc
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:
G

Guest

Guest
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++
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 180
dernier inscrit
Vcr