Tester si une plage de cellules Excel a été recalculée en VBA ?
4 réponses
Chris
Je désire tester si un recalcul a été faitpar Excel dans une plage spécifique.
J'espérais utiliser l'instruction suivante:
if range("A1:B10").iscalculated = True then ...
Cela ne semblepas fonctionner.
Merci d'avance de votre aide
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
MichDenis
Une feuille se calcule intégralement lorsque demandée ou alors seulement les cellules touchées par les manipulations de l'usager.
Pour qu'une plage spécifique soit recalculée indépendamment, tu dois passer la ligne de code suivante :
Range("a1:A10").Calculate
Au-delà de ça, je n'ai pas compris ton problème !
"Chris" a écrit dans le message de news:
Je désire tester si un recalcul a été faitpar Excel dans une plage spécifique. J'espérais utiliser l'instruction suivante: if range("A1:B10").iscalculated = True then ...
Cela ne semblepas fonctionner. Merci d'avance de votre aide
Une feuille se calcule intégralement lorsque demandée ou
alors seulement les cellules touchées par les manipulations de l'usager.
Pour qu'une plage spécifique soit recalculée indépendamment, tu dois
passer la ligne de code suivante :
Range("a1:A10").Calculate
Au-delà de ça, je n'ai pas compris ton problème !
"Chris" <Chris@discussions.microsoft.com> a écrit dans le message de news:
F3FFEB8D-4BDA-4F4A-9D9D-6E6AC98D071F@microsoft.com...
Je désire tester si un recalcul a été faitpar Excel dans une plage spécifique.
J'espérais utiliser l'instruction suivante:
if range("A1:B10").iscalculated = True then ...
Cela ne semblepas fonctionner.
Merci d'avance de votre aide
Une feuille se calcule intégralement lorsque demandée ou alors seulement les cellules touchées par les manipulations de l'usager.
Pour qu'une plage spécifique soit recalculée indépendamment, tu dois passer la ligne de code suivante :
Range("a1:A10").Calculate
Au-delà de ça, je n'ai pas compris ton problème !
"Chris" a écrit dans le message de news:
Je désire tester si un recalcul a été faitpar Excel dans une plage spécifique. J'espérais utiliser l'instruction suivante: if range("A1:B10").iscalculated = True then ...
Cela ne semblepas fonctionner. Merci d'avance de votre aide
Chris
Bien merci pour ta réponse Michel.
A vrai dire mon problème est le suivant :
je désiremettre en oeuvre uneprocédure évenementielle qui se met en route dès que l'on modifie une "feuille" (soit en y ajoutant ou en modifiantun élément soitpar recalcule automatique suite à des modifications qui ont lieu sur d'autre feuilles du même classeur.
Cela marche très bien mais bien entendu cela ne s'arrête jamais puisque suite à cette détection, je modifie de nouveau la feuille ce qui entraîne un nouveau calcul etc .. La boucle infernale. Il faut donc un test qui puisse l'arrêter et c'est pourquoi j'avais besoin de tester une plage spécifique de la feuille qui, je sais, ne bougera plus après le premier calcul ce qui permet d'arrêter la boucle. Il ne s'agit donc de lancer un calcul mais bien de tester si excel a effectué un calcul.
Si tu as un idée : elle est la bienvenue !!!
Christian
Une feuille se calcule intégralement lorsque demandée ou alors seulement les cellules touchées par les manipulations de l'usager.
Pour qu'une plage spécifique soit recalculée indépendamment, tu dois passer la ligne de code suivante :
Range("a1:A10").Calculate
Au-delà de ça, je n'ai pas compris ton problème !
"Chris" a écrit dans le message de news:
Je désire tester si un recalcul a été faitpar Excel dans une plage spécifique. J'espérais utiliser l'instruction suivante: if range("A1:B10").iscalculated = True then ...
Cela ne semblepas fonctionner. Merci d'avance de votre aide
Bien merci pour ta réponse Michel.
A vrai dire mon problème est le suivant :
je désiremettre en oeuvre uneprocédure évenementielle qui se met en route
dès que l'on modifie une "feuille" (soit en y ajoutant ou en modifiantun
élément soitpar recalcule automatique suite à des modifications qui ont lieu
sur d'autre feuilles du même classeur.
Cela marche très bien mais bien entendu cela ne s'arrête jamais puisque
suite à cette détection, je modifie de nouveau la feuille ce qui entraîne un
nouveau calcul etc .. La boucle infernale.
Il faut donc un test qui puisse l'arrêter et c'est pourquoi j'avais besoin
de tester une plage spécifique de la feuille qui, je sais, ne bougera plus
après le premier calcul ce qui permet d'arrêter la boucle. Il ne s'agit donc
de lancer un calcul mais bien de tester si excel a effectué un calcul.
Si tu as un idée : elle est la bienvenue !!!
Christian
Une feuille se calcule intégralement lorsque demandée ou
alors seulement les cellules touchées par les manipulations de l'usager.
Pour qu'une plage spécifique soit recalculée indépendamment, tu dois
passer la ligne de code suivante :
Range("a1:A10").Calculate
Au-delà de ça, je n'ai pas compris ton problème !
"Chris" <Chris@discussions.microsoft.com> a écrit dans le message de news:
F3FFEB8D-4BDA-4F4A-9D9D-6E6AC98D071F@microsoft.com...
Je désire tester si un recalcul a été faitpar Excel dans une plage spécifique.
J'espérais utiliser l'instruction suivante:
if range("A1:B10").iscalculated = True then ...
Cela ne semblepas fonctionner.
Merci d'avance de votre aide
je désiremettre en oeuvre uneprocédure évenementielle qui se met en route dès que l'on modifie une "feuille" (soit en y ajoutant ou en modifiantun élément soitpar recalcule automatique suite à des modifications qui ont lieu sur d'autre feuilles du même classeur.
Cela marche très bien mais bien entendu cela ne s'arrête jamais puisque suite à cette détection, je modifie de nouveau la feuille ce qui entraîne un nouveau calcul etc .. La boucle infernale. Il faut donc un test qui puisse l'arrêter et c'est pourquoi j'avais besoin de tester une plage spécifique de la feuille qui, je sais, ne bougera plus après le premier calcul ce qui permet d'arrêter la boucle. Il ne s'agit donc de lancer un calcul mais bien de tester si excel a effectué un calcul.
Si tu as un idée : elle est la bienvenue !!!
Christian
Une feuille se calcule intégralement lorsque demandée ou alors seulement les cellules touchées par les manipulations de l'usager.
Pour qu'une plage spécifique soit recalculée indépendamment, tu dois passer la ligne de code suivante :
Range("a1:A10").Calculate
Au-delà de ça, je n'ai pas compris ton problème !
"Chris" a écrit dans le message de news:
Je désire tester si un recalcul a été faitpar Excel dans une plage spécifique. J'espérais utiliser l'instruction suivante: if range("A1:B10").iscalculated = True then ...
Cela ne semblepas fonctionner. Merci d'avance de votre aide
MichDenis
Une suggestion :
Tu passes en mode de calcul manuel : outils / options / onglet calcul
et dans le code de ladite feuille, copie ceci :
Il y aura un recalcul seulement les données de la plage A1:A10 seulement si l'usager a fait passer une des cellules de la plage visée en mode "Édition" ou à modifier la valeur d'une cellule de ladite même plage.
Évidemment, à toi de déterminer la plage de cellules qui t'intéressent
'----------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1:A10")) Is Nothing Then Range("A1:A10").Calculate End If End Sub '-----------------------------
"Chris" a écrit dans le message de news:
Bien merci pour ta réponse Michel.
A vrai dire mon problème est le suivant :
je désiremettre en oeuvre uneprocédure évenementielle qui se met en route dès que l'on modifie une "feuille" (soit en y ajoutant ou en modifiantun élément soitpar recalcule automatique suite à des modifications qui ont lieu sur d'autre feuilles du même classeur.
Cela marche très bien mais bien entendu cela ne s'arrête jamais puisque suite à cette détection, je modifie de nouveau la feuille ce qui entraîne un nouveau calcul etc .. La boucle infernale. Il faut donc un test qui puisse l'arrêter et c'est pourquoi j'avais besoin de tester une plage spécifique de la feuille qui, je sais, ne bougera plus après le premier calcul ce qui permet d'arrêter la boucle. Il ne s'agit donc de lancer un calcul mais bien de tester si excel a effectué un calcul.
Si tu as un idée : elle est la bienvenue !!!
Christian
Une feuille se calcule intégralement lorsque demandée ou alors seulement les cellules touchées par les manipulations de l'usager.
Pour qu'une plage spécifique soit recalculée indépendamment, tu dois passer la ligne de code suivante :
Range("a1:A10").Calculate
Au-delà de ça, je n'ai pas compris ton problème !
"Chris" a écrit dans le message de news:
Je désire tester si un recalcul a été faitpar Excel dans une plage spécifique. J'espérais utiliser l'instruction suivante: if range("A1:B10").iscalculated = True then ...
Cela ne semblepas fonctionner. Merci d'avance de votre aide
Une suggestion :
Tu passes en mode de calcul manuel : outils / options / onglet calcul
et dans le code de ladite feuille, copie ceci :
Il y aura un recalcul seulement les données de la plage A1:A10
seulement si l'usager a fait passer une des cellules de la plage
visée en mode "Édition" ou à modifier la valeur d'une cellule
de ladite même plage.
Évidemment, à toi de déterminer la plage de cellules qui t'intéressent
'-----------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
Range("A1:A10").Calculate
End If
End Sub
'-----------------------------
"Chris" <Chris@discussions.microsoft.com> a écrit dans le message de news:
C9AFD4F8-5C61-41EA-B4A1-1FD11DE23AF8@microsoft.com...
Bien merci pour ta réponse Michel.
A vrai dire mon problème est le suivant :
je désiremettre en oeuvre uneprocédure évenementielle qui se met en route
dès que l'on modifie une "feuille" (soit en y ajoutant ou en modifiantun
élément soitpar recalcule automatique suite à des modifications qui ont lieu
sur d'autre feuilles du même classeur.
Cela marche très bien mais bien entendu cela ne s'arrête jamais puisque
suite à cette détection, je modifie de nouveau la feuille ce qui entraîne un
nouveau calcul etc .. La boucle infernale.
Il faut donc un test qui puisse l'arrêter et c'est pourquoi j'avais besoin
de tester une plage spécifique de la feuille qui, je sais, ne bougera plus
après le premier calcul ce qui permet d'arrêter la boucle. Il ne s'agit donc
de lancer un calcul mais bien de tester si excel a effectué un calcul.
Si tu as un idée : elle est la bienvenue !!!
Christian
Une feuille se calcule intégralement lorsque demandée ou
alors seulement les cellules touchées par les manipulations de l'usager.
Pour qu'une plage spécifique soit recalculée indépendamment, tu dois
passer la ligne de code suivante :
Range("a1:A10").Calculate
Au-delà de ça, je n'ai pas compris ton problème !
"Chris" <Chris@discussions.microsoft.com> a écrit dans le message de news:
F3FFEB8D-4BDA-4F4A-9D9D-6E6AC98D071F@microsoft.com...
Je désire tester si un recalcul a été faitpar Excel dans une plage spécifique.
J'espérais utiliser l'instruction suivante:
if range("A1:B10").iscalculated = True then ...
Cela ne semblepas fonctionner.
Merci d'avance de votre aide
Tu passes en mode de calcul manuel : outils / options / onglet calcul
et dans le code de ladite feuille, copie ceci :
Il y aura un recalcul seulement les données de la plage A1:A10 seulement si l'usager a fait passer une des cellules de la plage visée en mode "Édition" ou à modifier la valeur d'une cellule de ladite même plage.
Évidemment, à toi de déterminer la plage de cellules qui t'intéressent
'----------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1:A10")) Is Nothing Then Range("A1:A10").Calculate End If End Sub '-----------------------------
"Chris" a écrit dans le message de news:
Bien merci pour ta réponse Michel.
A vrai dire mon problème est le suivant :
je désiremettre en oeuvre uneprocédure évenementielle qui se met en route dès que l'on modifie une "feuille" (soit en y ajoutant ou en modifiantun élément soitpar recalcule automatique suite à des modifications qui ont lieu sur d'autre feuilles du même classeur.
Cela marche très bien mais bien entendu cela ne s'arrête jamais puisque suite à cette détection, je modifie de nouveau la feuille ce qui entraîne un nouveau calcul etc .. La boucle infernale. Il faut donc un test qui puisse l'arrêter et c'est pourquoi j'avais besoin de tester une plage spécifique de la feuille qui, je sais, ne bougera plus après le premier calcul ce qui permet d'arrêter la boucle. Il ne s'agit donc de lancer un calcul mais bien de tester si excel a effectué un calcul.
Si tu as un idée : elle est la bienvenue !!!
Christian
Une feuille se calcule intégralement lorsque demandée ou alors seulement les cellules touchées par les manipulations de l'usager.
Pour qu'une plage spécifique soit recalculée indépendamment, tu dois passer la ligne de code suivante :
Range("a1:A10").Calculate
Au-delà de ça, je n'ai pas compris ton problème !
"Chris" a écrit dans le message de news:
Je désire tester si un recalcul a été faitpar Excel dans une plage spécifique. J'espérais utiliser l'instruction suivante: if range("A1:B10").iscalculated = True then ...
Cela ne semblepas fonctionner. Merci d'avance de votre aide
Chris
Bonjour Michel, Bien reçu ta suggestion mais celle la je la connaissais. En fait je ne peux utiliser "worksheet_change" car cela ne teste que des modifications manuelles. Dans mon sujet, je dois utiliser "worksheet_calculate" car les modifs proviennent d'un recalcul d'excel. Et dans ce cas il me semble que l'on ne peut pas utiliser (Byval Target As Range). C'est pourquoi je cherchais une autre fonction permettant de tester les modifs sur une plage précise. Si tu as encore une suggestion ... Merci d'avance
"MichDenis" wrote:
Une suggestion :
Tu passes en mode de calcul manuel : outils / options / onglet calcul
et dans le code de ladite feuille, copie ceci :
Il y aura un recalcul seulement les données de la plage A1:A10 seulement si l'usager a fait passer une des cellules de la plage visée en mode "Édition" ou à modifier la valeur d'une cellule de ladite même plage.
Évidemment, à toi de déterminer la plage de cellules qui t'intéressent
'----------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1:A10")) Is Nothing Then Range("A1:A10").Calculate End If End Sub '-----------------------------
"Chris" a écrit dans le message de news:
Bien merci pour ta réponse Michel.
A vrai dire mon problème est le suivant :
je désiremettre en oeuvre uneprocédure évenementielle qui se met en route dès que l'on modifie une "feuille" (soit en y ajoutant ou en modifiantun élément soitpar recalcule automatique suite à des modifications qui ont lieu sur d'autre feuilles du même classeur.
Cela marche très bien mais bien entendu cela ne s'arrête jamais puisque suite à cette détection, je modifie de nouveau la feuille ce qui entraîne un nouveau calcul etc .. La boucle infernale. Il faut donc un test qui puisse l'arrêter et c'est pourquoi j'avais besoin de tester une plage spécifique de la feuille qui, je sais, ne bougera plus après le premier calcul ce qui permet d'arrêter la boucle. Il ne s'agit donc de lancer un calcul mais bien de tester si excel a effectué un calcul.
Si tu as un idée : elle est la bienvenue !!!
Christian
Une feuille se calcule intégralement lorsque demandée ou alors seulement les cellules touchées par les manipulations de l'usager.
Pour qu'une plage spécifique soit recalculée indépendamment, tu dois passer la ligne de code suivante :
Range("a1:A10").Calculate
Au-delà de ça, je n'ai pas compris ton problème !
"Chris" a écrit dans le message de news:
Je désire tester si un recalcul a été faitpar Excel dans une plage spécifique. J'espérais utiliser l'instruction suivante: if range("A1:B10").iscalculated = True then ...
Cela ne semblepas fonctionner. Merci d'avance de votre aide
Bonjour Michel,
Bien reçu ta suggestion mais celle la je la connaissais. En fait je ne peux
utiliser "worksheet_change" car cela ne teste que des modifications
manuelles. Dans mon sujet, je dois utiliser "worksheet_calculate" car les
modifs proviennent d'un recalcul d'excel. Et dans ce cas il me semble que
l'on ne peut pas utiliser (Byval Target As Range). C'est pourquoi je
cherchais une autre fonction permettant de tester les modifs sur une plage
précise.
Si tu as encore une suggestion ...
Merci d'avance
"MichDenis" wrote:
Une suggestion :
Tu passes en mode de calcul manuel : outils / options / onglet calcul
et dans le code de ladite feuille, copie ceci :
Il y aura un recalcul seulement les données de la plage A1:A10
seulement si l'usager a fait passer une des cellules de la plage
visée en mode "Édition" ou à modifier la valeur d'une cellule
de ladite même plage.
Évidemment, à toi de déterminer la plage de cellules qui t'intéressent
'-----------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
Range("A1:A10").Calculate
End If
End Sub
'-----------------------------
"Chris" <Chris@discussions.microsoft.com> a écrit dans le message de news:
C9AFD4F8-5C61-41EA-B4A1-1FD11DE23AF8@microsoft.com...
Bien merci pour ta réponse Michel.
A vrai dire mon problème est le suivant :
je désiremettre en oeuvre uneprocédure évenementielle qui se met en route
dès que l'on modifie une "feuille" (soit en y ajoutant ou en modifiantun
élément soitpar recalcule automatique suite à des modifications qui ont lieu
sur d'autre feuilles du même classeur.
Cela marche très bien mais bien entendu cela ne s'arrête jamais puisque
suite à cette détection, je modifie de nouveau la feuille ce qui entraîne un
nouveau calcul etc .. La boucle infernale.
Il faut donc un test qui puisse l'arrêter et c'est pourquoi j'avais besoin
de tester une plage spécifique de la feuille qui, je sais, ne bougera plus
après le premier calcul ce qui permet d'arrêter la boucle. Il ne s'agit donc
de lancer un calcul mais bien de tester si excel a effectué un calcul.
Si tu as un idée : elle est la bienvenue !!!
Christian
Une feuille se calcule intégralement lorsque demandée ou
alors seulement les cellules touchées par les manipulations de l'usager.
Pour qu'une plage spécifique soit recalculée indépendamment, tu dois
passer la ligne de code suivante :
Range("a1:A10").Calculate
Au-delà de ça, je n'ai pas compris ton problème !
"Chris" <Chris@discussions.microsoft.com> a écrit dans le message de news:
F3FFEB8D-4BDA-4F4A-9D9D-6E6AC98D071F@microsoft.com...
Je désire tester si un recalcul a été faitpar Excel dans une plage spécifique.
J'espérais utiliser l'instruction suivante:
if range("A1:B10").iscalculated = True then ...
Cela ne semblepas fonctionner.
Merci d'avance de votre aide
Bonjour Michel, Bien reçu ta suggestion mais celle la je la connaissais. En fait je ne peux utiliser "worksheet_change" car cela ne teste que des modifications manuelles. Dans mon sujet, je dois utiliser "worksheet_calculate" car les modifs proviennent d'un recalcul d'excel. Et dans ce cas il me semble que l'on ne peut pas utiliser (Byval Target As Range). C'est pourquoi je cherchais une autre fonction permettant de tester les modifs sur une plage précise. Si tu as encore une suggestion ... Merci d'avance
"MichDenis" wrote:
Une suggestion :
Tu passes en mode de calcul manuel : outils / options / onglet calcul
et dans le code de ladite feuille, copie ceci :
Il y aura un recalcul seulement les données de la plage A1:A10 seulement si l'usager a fait passer une des cellules de la plage visée en mode "Édition" ou à modifier la valeur d'une cellule de ladite même plage.
Évidemment, à toi de déterminer la plage de cellules qui t'intéressent
'----------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1:A10")) Is Nothing Then Range("A1:A10").Calculate End If End Sub '-----------------------------
"Chris" a écrit dans le message de news:
Bien merci pour ta réponse Michel.
A vrai dire mon problème est le suivant :
je désiremettre en oeuvre uneprocédure évenementielle qui se met en route dès que l'on modifie une "feuille" (soit en y ajoutant ou en modifiantun élément soitpar recalcule automatique suite à des modifications qui ont lieu sur d'autre feuilles du même classeur.
Cela marche très bien mais bien entendu cela ne s'arrête jamais puisque suite à cette détection, je modifie de nouveau la feuille ce qui entraîne un nouveau calcul etc .. La boucle infernale. Il faut donc un test qui puisse l'arrêter et c'est pourquoi j'avais besoin de tester une plage spécifique de la feuille qui, je sais, ne bougera plus après le premier calcul ce qui permet d'arrêter la boucle. Il ne s'agit donc de lancer un calcul mais bien de tester si excel a effectué un calcul.
Si tu as un idée : elle est la bienvenue !!!
Christian
Une feuille se calcule intégralement lorsque demandée ou alors seulement les cellules touchées par les manipulations de l'usager.
Pour qu'une plage spécifique soit recalculée indépendamment, tu dois passer la ligne de code suivante :
Range("a1:A10").Calculate
Au-delà de ça, je n'ai pas compris ton problème !
"Chris" a écrit dans le message de news:
Je désire tester si un recalcul a été faitpar Excel dans une plage spécifique. J'espérais utiliser l'instruction suivante: if range("A1:B10").iscalculated = True then ...
Cela ne semblepas fonctionner. Merci d'avance de votre aide