Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Gestion du mode de calcul

4 réponses
Avatar
Péhemme
Bonjour à Tous,

Afin d'améliorer la rapidité des macros il est important de gérer le mode de
calcul.
En début de macro on passe en xlCalculationManual pour rétablir le
xlCalculationAutomatic en fin de macro.
Les experts que vous êtes, vous déclarez cette variable en String.
Sachant que celle-ci retourne -4135 puis revient à -4105, quel est
l'avantage technique à une déclaration en String ("-4135" puis "-4105")
plutôt qu'en Long (-4135 puis -4105) ?

Bonne fin de semaine
Michel (le seul qui s'accroche)

4 réponses

Avatar
michdenis
Bonjour,

| vous déclarez cette variable en String

VBA est un langage permissif au niveau de la déclaration du type des variables.
Excel tolère le type "String"...Cependant, je doute que cela ait un impact sur
la rapidité d'une macro. Ce qui a surtout un impact sur la rapidité d'une macro
est la non-déclaration du type de la variable, car cela oblige le programme a roulé
à l'interne un petit script pour découvrir le type de la variable afin de lui réserver
un espace mémoire suffisant pour son contenu.

En principe, les valeurs des constantes "xlCalculationManual" (-4135 (&HFFFFEFD9)
"xlCalculationAutomatic" (-4105 (&HFFFFEFF7) et "xlCalculationSemiautomatic" (2)
sont de type "Long" comme ta question le suggère.

Tu peux faire un petit test en utilisant ceci :
X = TypeName(Application.Calculation) d'où X = Long

Excel regroupe ces 3 constantes dans un type "Enum" (voir l'aide d'Excel sur Enum)
Dans la règle de l'art, on devrait déclarer une variable comme ceci :

Dim X as XlCalculation
X = xlCalculationManual

Dans un module, efface "= xlCalculationManual" et tu tapes après le X le symbole et tu vois apparaître la liste des 3 constantes possibles.


MichD
--------------------------------------------
"Péhemme" a écrit dans le message de groupe de discussion : 4d3176f0$0$5426$

Bonjour à Tous,

Afin d'améliorer la rapidité des macros il est important de gérer le mode de
calcul.
En début de macro on passe en xlCalculationManual pour rétablir le
xlCalculationAutomatic en fin de macro.
Les experts que vous êtes, vous déclarez cette variable en String.
Sachant que celle-ci retourne -4135 puis revient à -4105, quel est
l'avantage technique à une déclaration en String ("-4135" puis "-4105")
plutôt qu'en Long (-4135 puis -4105) ?

Bonne fin de semaine
Michel (le seul qui s'accroche)
Avatar
Modeste
Bonsour®

"Péhemme" a écrit
En début de macro on passe en xlCalculationManual pour rétablir le
xlCalculationAutomatic en fin de macro.
Les experts que vous êtes, vous déclarez cette variable en String.



???
Xlcalculation est une collection de constantes
et ces constantes sont définies dans : Microsoft Office XX.Y Object Library
on ne peut redéfinir les constantes globales...
Avatar
Péhemme
Merci Denis pour cette explication.
Je poursuis mon apprentissage...
Bien amicalement
Michel

"michdenis" a écrit dans le message de
news:igs53f$put$
Bonjour,

| vous déclarez cette variable en String

VBA est un langage permissif au niveau de la déclaration du type des
variables.
Excel tolère le type "String"...Cependant, je doute que cela ait un impact
sur
la rapidité d'une macro. Ce qui a surtout un impact sur la rapidité d'une
macro
est la non-déclaration du type de la variable, car cela oblige le
programme a roulé
à l'interne un petit script pour découvrir le type de la variable afin de
lui réserver
un espace mémoire suffisant pour son contenu.

En principe, les valeurs des constantes "xlCalculationManual" (-4135
(&HFFFFEFD9)
"xlCalculationAutomatic" (-4105 (&HFFFFEFF7) et
"xlCalculationSemiautomatic" (2)
sont de type "Long" comme ta question le suggère.

Tu peux faire un petit test en utilisant ceci :
X = TypeName(Application.Calculation) d'où X = Long

Excel regroupe ces 3 constantes dans un type "Enum" (voir l'aide d'Excel
sur Enum)
Dans la règle de l'art, on devrait déclarer une variable comme ceci :

Dim X as XlCalculation
X = xlCalculationManual

Dans un module, efface "= xlCalculationManual" et tu tapes après le X le
symbole > et tu vois apparaître la liste des 3 constantes possibles.


MichD
--------------------------------------------
"Péhemme" a écrit dans le message de groupe de discussion :
4d3176f0$0$5426$

Bonjour à Tous,

Afin d'améliorer la rapidité des macros il est important de gérer le mode
de
calcul.
En début de macro on passe en xlCalculationManual pour rétablir le
xlCalculationAutomatic en fin de macro.
Les experts que vous êtes, vous déclarez cette variable en String.
Sachant que celle-ci retourne -4135 puis revient à -4105, quel est
l'avantage technique à une déclaration en String ("-4135" puis "-4105")
plutôt qu'en Long (-4135 puis -4105) ?

Bonne fin de semaine
Michel (le seul qui s'accroche)


Avatar
Péhemme
Désolé Gilbert, j'ai effectivement été "elliptique" dans la formulation de
ma question.
J'évoquai une variable nommée (ModCal par exemple) servant à stocker la
position initiale de calcul à la macro qui commence par une mise
systématique du système de calcul en manuel.
Puis à la fin de la macro de remettre le mode de calcul tel que la variable
(ici ModCal) l'a stocké avant le déroulement de ladite macro.
Denis m'a fort bien compris (lui !) malgré mon imprécision ;-)).
Merci de ta réponse
Bien amicalement
Michel


"Modeste" a écrit dans le message de
news:4d319d16$0$26045$
Bonsour®

"Péhemme" a écrit
En début de macro on passe en xlCalculationManual pour rétablir le
xlCalculationAutomatic en fin de macro.
Les experts que vous êtes, vous déclarez cette variable en String.



???
Xlcalculation est une collection de constantes
et ces constantes sont définies dans : Microsoft Office XX.Y Object
Library
on ne peut redéfinir les constantes globales...