[Q] [VBA] Obliger XL a recalculer l'inté gralité des cellules??
4 réponses
JCF
Bonjour à tous!
Je voulais savoir s'il existe une instruction VBA, ou sinon une manipulation
particulière à faire pour qu'XL recalcule l'intégralité des formules d'un
classeur. Pour l'instant il se contente de recalculer les cellules contenant
des formules dont l'une des entrées à changé.
Et cela ne me suffit pas. J'ai en effet des formules personnalisées, dont
l'une des variables peut être modifiée en changeant une valeur dans une
cellule nommée pour le classeur, et il ne détecte pas ce changement là (la
cellule nommée en question n'apparaît pas dans la saisie de la formule, elle
est dans le code, sous forme d'une condition: si 'Switch' = Moy, tout mettre
à la moyenne, par exemple).
Merci d'avance pour vos avis et suggestions!
Jean-Christophe.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Philippe.R
Bonjour Jean-Christophe, Il faut d'abord que tu reviennes sur tes fonctions personnalisées pour y ajouter l'instruction : application.volatile tu peux ensuite lancer le recalcul complet par : Application.CalculateFull -- Amicales Salutations Retirer A_S_ pour répondre. XL 97 / 2000 / 2002
"JCF" a écrit dans le message de news:BD1FFD62.1B1A%
Bonjour à tous! Je voulais savoir s'il existe une instruction VBA, ou sinon une manipulation particulière à faire pour qu'XL recalcule l'intégralité des formules d'un classeur. Pour l'instant il se contente de recalculer les cellules contenant des formules dont l'une des entrées à changé. Et cela ne me suffit pas. J'ai en effet des formules personnalisées, dont l'une des variables peut être modifiée en changeant une valeur dans une cellule nommée pour le classeur, et il ne détecte pas ce changement là (la cellule nommée en question n'apparaît pas dans la saisie de la formule, elle est dans le code, sous forme d'une condition: si 'Switch' = Moy, tout mettre à la moyenne, par exemple). Merci d'avance pour vos avis et suggestions! Jean-Christophe.
Bonjour Jean-Christophe,
Il faut d'abord que tu reviennes sur tes fonctions personnalisées pour y ajouter l'instruction :
application.volatile
tu peux ensuite lancer le recalcul complet par : Application.CalculateFull
--
Amicales Salutations
Retirer A_S_ pour répondre.
XL 97 / 2000 / 2002
"JCF" <enlevezcecijcf@mac-fan.com> a écrit dans le message de
news:BD1FFD62.1B1A%enlevezcecijcf@mac-fan.com...
Bonjour à tous!
Je voulais savoir s'il existe une instruction VBA, ou sinon une manipulation
particulière à faire pour qu'XL recalcule l'intégralité des formules d'un
classeur. Pour l'instant il se contente de recalculer les cellules contenant
des formules dont l'une des entrées à changé.
Et cela ne me suffit pas. J'ai en effet des formules personnalisées, dont
l'une des variables peut être modifiée en changeant une valeur dans une
cellule nommée pour le classeur, et il ne détecte pas ce changement là (la
cellule nommée en question n'apparaît pas dans la saisie de la formule, elle
est dans le code, sous forme d'une condition: si 'Switch' = Moy, tout mettre
à la moyenne, par exemple).
Merci d'avance pour vos avis et suggestions!
Jean-Christophe.
Bonjour Jean-Christophe, Il faut d'abord que tu reviennes sur tes fonctions personnalisées pour y ajouter l'instruction : application.volatile tu peux ensuite lancer le recalcul complet par : Application.CalculateFull -- Amicales Salutations Retirer A_S_ pour répondre. XL 97 / 2000 / 2002
"JCF" a écrit dans le message de news:BD1FFD62.1B1A%
Bonjour à tous! Je voulais savoir s'il existe une instruction VBA, ou sinon une manipulation particulière à faire pour qu'XL recalcule l'intégralité des formules d'un classeur. Pour l'instant il se contente de recalculer les cellules contenant des formules dont l'une des entrées à changé. Et cela ne me suffit pas. J'ai en effet des formules personnalisées, dont l'une des variables peut être modifiée en changeant une valeur dans une cellule nommée pour le classeur, et il ne détecte pas ce changement là (la cellule nommée en question n'apparaît pas dans la saisie de la formule, elle est dans le code, sous forme d'une condition: si 'Switch' = Moy, tout mettre à la moyenne, par exemple). Merci d'avance pour vos avis et suggestions! Jean-Christophe.
JCF
"Philippe.R" m'a répondu:
Bonjour Jean-Christophe, Il faut d'abord que tu reviennes sur tes fonctions personnalisées pour y ajouter l'instruction : application.volatile tu peux ensuite lancer le recalcul complet par : Application.CalculateFull
Merci Philippe pour cette réponse! Juste une précision: -Est ce qu'à partir du moment où j'ajoute application.volatile dans mes fonctions personnalisées, XL ne recalcule pas tout à chaque fois que je change une cellule (vu les temps de calcul j'ai l'impression que oui)? -Autre façon de tourner la question: est-ce que Application.CalculateFull revient au même que lorsque l'on presse F9 en calcul manuel?
=> si oui à cette (double)question, penses-tu qu'il y a un moyen d'appliquer le recalcul de l'intégralité des formules seulement de façon conditionnelle. En fait, étant donné la complexité de mon classeur et des mes formules, le calcul par défaut fait par excel (donc que sur les variables modifiées), va la plupart du temps et permet la rapidité (en plus je me mets en calcul manuel pour qu'il ne recalcule que lorsque je souhaite voir le résultat de ce que j'ai changé). Par contre, par moment on s'aperçoit clairement qu'il a raté un truc, et là apparaît l'intérêt de pouvoir lui commander de recalculer absolument tout. Tu crois que c'est faisable? Merci et à + Jean-Christophe
Bonjour Jean-Christophe,
Il faut d'abord que tu reviennes sur tes fonctions personnalisées pour y
ajouter l'instruction :
application.volatile
tu peux ensuite lancer le recalcul complet par : Application.CalculateFull
Merci Philippe pour cette réponse!
Juste une précision:
-Est ce qu'à partir du moment où j'ajoute application.volatile dans mes
fonctions personnalisées, XL ne recalcule pas tout à chaque fois que je
change une cellule (vu les temps de calcul j'ai l'impression que oui)?
-Autre façon de tourner la question: est-ce que Application.CalculateFull
revient au même que lorsque l'on presse F9 en calcul manuel?
=> si oui à cette (double)question, penses-tu qu'il y a un moyen d'appliquer
le recalcul de l'intégralité des formules seulement de façon conditionnelle.
En fait, étant donné la complexité de mon classeur et des mes formules, le
calcul par défaut fait par excel (donc que sur les variables modifiées), va
la plupart du temps et permet la rapidité (en plus je me mets en calcul
manuel pour qu'il ne recalcule que lorsque je souhaite voir le résultat de
ce que j'ai changé). Par contre, par moment on s'aperçoit clairement qu'il a
raté un truc, et là apparaît l'intérêt de pouvoir lui commander de
recalculer absolument tout. Tu crois que c'est faisable?
Merci et à +
Jean-Christophe
Bonjour Jean-Christophe, Il faut d'abord que tu reviennes sur tes fonctions personnalisées pour y ajouter l'instruction : application.volatile tu peux ensuite lancer le recalcul complet par : Application.CalculateFull
Merci Philippe pour cette réponse! Juste une précision: -Est ce qu'à partir du moment où j'ajoute application.volatile dans mes fonctions personnalisées, XL ne recalcule pas tout à chaque fois que je change une cellule (vu les temps de calcul j'ai l'impression que oui)? -Autre façon de tourner la question: est-ce que Application.CalculateFull revient au même que lorsque l'on presse F9 en calcul manuel?
=> si oui à cette (double)question, penses-tu qu'il y a un moyen d'appliquer le recalcul de l'intégralité des formules seulement de façon conditionnelle. En fait, étant donné la complexité de mon classeur et des mes formules, le calcul par défaut fait par excel (donc que sur les variables modifiées), va la plupart du temps et permet la rapidité (en plus je me mets en calcul manuel pour qu'il ne recalcule que lorsque je souhaite voir le résultat de ce que j'ai changé). Par contre, par moment on s'aperçoit clairement qu'il a raté un truc, et là apparaît l'intérêt de pouvoir lui commander de recalculer absolument tout. Tu crois que c'est faisable? Merci et à + Jean-Christophe
Philippe.R
Bonjour Jean-Christophe, Sauf à dire une c...ie, l'instruction application.volatile, présente dans une fonction perso, permet sa mise à jour lors des recalculs (automatiques ou à la demande) ; sinon il fudrait revalider la fonction pour la recalculer. Il me semble en outre que Application.Calculate recalcule la feuille active alors que Application.CalculateFull recalcule tout le classeur et correspond bien à l'effet obtenu par F9 lorsqu'on est en calcul manuel. Donc tu peux tout à fait lancer ce calcul en utilisant un évènement précis d'une feuille donnée comme par exemple :
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("a1:d31")) Is Nothing Then Application.CalculateFull Else: Exit Sub End If End Sub
-- Amicales Salutations Retirer A_S_ pour répondre. XL 97 / 2000 / 2002 Pour suivre facilement le forum : news://msnews.microsoft.com/microsoft.public.fr.excel (Voulez-vous vous abonner ? -> Oui)
"JCF" a écrit dans le message de news:BD216FDA.1D75%
"Philippe.R" m'a répondu:
Bonjour Jean-Christophe, Il faut d'abord que tu reviennes sur tes fonctions personnalisées pour y ajouter l'instruction : application.volatile tu peux ensuite lancer le recalcul complet par : Application.CalculateFull
Merci Philippe pour cette réponse! Juste une précision: -Est ce qu'à partir du moment où j'ajoute application.volatile dans mes fonctions personnalisées, XL ne recalcule pas tout à chaque fois que je change une cellule (vu les temps de calcul j'ai l'impression que oui)? -Autre façon de tourner la question: est-ce que Application.CalculateFull revient au même que lorsque l'on presse F9 en calcul manuel?
=> si oui à cette (double)question, penses-tu qu'il y a un moyen d'appliquer le recalcul de l'intégralité des formules seulement de façon conditionnelle. En fait, étant donné la complexité de mon classeur et des mes formules, le calcul par défaut fait par excel (donc que sur les variables modifiées), va la plupart du temps et permet la rapidité (en plus je me mets en calcul manuel pour qu'il ne recalcule que lorsque je souhaite voir le résultat de ce que j'ai changé). Par contre, par moment on s'aperçoit clairement qu'il a raté un truc, et là apparaît l'intérêt de pouvoir lui commander de recalculer absolument tout. Tu crois que c'est faisable? Merci et à + Jean-Christophe
Bonjour Jean-Christophe,
Sauf à dire une c...ie, l'instruction application.volatile, présente dans une fonction perso, permet sa
mise à jour lors des recalculs (automatiques ou à la demande) ; sinon il fudrait revalider la fonction
pour la recalculer.
Il me semble en outre que Application.Calculate recalcule la feuille active alors que
Application.CalculateFull recalcule tout le classeur et correspond bien à l'effet obtenu par F9
lorsqu'on est en calcul manuel.
Donc tu peux tout à fait lancer ce calcul en utilisant un évènement précis d'une feuille donnée comme
par exemple :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a1:d31")) Is Nothing Then
Application.CalculateFull
Else: Exit Sub
End If
End Sub
--
Amicales Salutations
Retirer A_S_ pour répondre.
XL 97 / 2000 / 2002
Pour suivre facilement le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)
"JCF" <enlevezcecijcf@mac-fan.com> a écrit dans le message de
news:BD216FDA.1D75%enlevezcecijcf@mac-fan.com...
Bonjour Jean-Christophe,
Il faut d'abord que tu reviennes sur tes fonctions personnalisées pour y
ajouter l'instruction :
application.volatile
tu peux ensuite lancer le recalcul complet par : Application.CalculateFull
Merci Philippe pour cette réponse!
Juste une précision:
-Est ce qu'à partir du moment où j'ajoute application.volatile dans mes
fonctions personnalisées, XL ne recalcule pas tout à chaque fois que je
change une cellule (vu les temps de calcul j'ai l'impression que oui)?
-Autre façon de tourner la question: est-ce que Application.CalculateFull
revient au même que lorsque l'on presse F9 en calcul manuel?
=> si oui à cette (double)question, penses-tu qu'il y a un moyen d'appliquer
le recalcul de l'intégralité des formules seulement de façon conditionnelle.
En fait, étant donné la complexité de mon classeur et des mes formules, le
calcul par défaut fait par excel (donc que sur les variables modifiées), va
la plupart du temps et permet la rapidité (en plus je me mets en calcul
manuel pour qu'il ne recalcule que lorsque je souhaite voir le résultat de
ce que j'ai changé). Par contre, par moment on s'aperçoit clairement qu'il a
raté un truc, et là apparaît l'intérêt de pouvoir lui commander de
recalculer absolument tout. Tu crois que c'est faisable?
Merci et à +
Jean-Christophe
Bonjour Jean-Christophe, Sauf à dire une c...ie, l'instruction application.volatile, présente dans une fonction perso, permet sa mise à jour lors des recalculs (automatiques ou à la demande) ; sinon il fudrait revalider la fonction pour la recalculer. Il me semble en outre que Application.Calculate recalcule la feuille active alors que Application.CalculateFull recalcule tout le classeur et correspond bien à l'effet obtenu par F9 lorsqu'on est en calcul manuel. Donc tu peux tout à fait lancer ce calcul en utilisant un évènement précis d'une feuille donnée comme par exemple :
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("a1:d31")) Is Nothing Then Application.CalculateFull Else: Exit Sub End If End Sub
-- Amicales Salutations Retirer A_S_ pour répondre. XL 97 / 2000 / 2002 Pour suivre facilement le forum : news://msnews.microsoft.com/microsoft.public.fr.excel (Voulez-vous vous abonner ? -> Oui)
"JCF" a écrit dans le message de news:BD216FDA.1D75%
"Philippe.R" m'a répondu:
Bonjour Jean-Christophe, Il faut d'abord que tu reviennes sur tes fonctions personnalisées pour y ajouter l'instruction : application.volatile tu peux ensuite lancer le recalcul complet par : Application.CalculateFull
Merci Philippe pour cette réponse! Juste une précision: -Est ce qu'à partir du moment où j'ajoute application.volatile dans mes fonctions personnalisées, XL ne recalcule pas tout à chaque fois que je change une cellule (vu les temps de calcul j'ai l'impression que oui)? -Autre façon de tourner la question: est-ce que Application.CalculateFull revient au même que lorsque l'on presse F9 en calcul manuel?
=> si oui à cette (double)question, penses-tu qu'il y a un moyen d'appliquer le recalcul de l'intégralité des formules seulement de façon conditionnelle. En fait, étant donné la complexité de mon classeur et des mes formules, le calcul par défaut fait par excel (donc que sur les variables modifiées), va la plupart du temps et permet la rapidité (en plus je me mets en calcul manuel pour qu'il ne recalcule que lorsque je souhaite voir le résultat de ce que j'ai changé). Par contre, par moment on s'aperçoit clairement qu'il a raté un truc, et là apparaît l'intérêt de pouvoir lui commander de recalculer absolument tout. Tu crois que c'est faisable? Merci et à + Jean-Christophe
JCF
"Philippe.R" m'a répondu:
Il me semble en outre que Application.Calculate recalcule la feuille active alors que Application.CalculateFull recalcule tout le classeur et correspond bien à l'effet obtenu par F9 lorsqu'on est en calcul manuel.
Merci Philippe pour ces précisions. Je vais tripatouiller tout ça voir ce que ça donne! A+ JC
Il me semble en outre que Application.Calculate recalcule la feuille active
alors que
Application.CalculateFull recalcule tout le classeur et correspond bien à
l'effet obtenu par F9
lorsqu'on est en calcul manuel.
Merci Philippe pour ces précisions.
Je vais tripatouiller tout ça voir ce que ça donne!
A+
JC
Il me semble en outre que Application.Calculate recalcule la feuille active alors que Application.CalculateFull recalcule tout le classeur et correspond bien à l'effet obtenu par F9 lorsqu'on est en calcul manuel.
Merci Philippe pour ces précisions. Je vais tripatouiller tout ça voir ce que ça donne! A+ JC