OVH Cloud OVH Cloud

Conflit OnTime / Worksheet_calculate

4 réponses
Avatar
JeNeVois
Bonsoir !

J'ai 2 macros:
la première insére avec l'instruction
Application.OnTime.
à chaque nouvelle minute une ligne dans la feuille.

La deuxième écrit sur cette ligne des données
capturée avec worksheet_calculate (d'une autre feuille).

Tout va bien, sauf si la 2. macros s'enclenche avant que
la 1. ait fini l'insertion, car au lieu d'une, il y en a plusieurs
(parfois même une traintaine) de lignes qui s'insèrent.

Merci pour toute suggestion pour résoudre ce probème !

4 réponses

Avatar
twinley
Bonsoir,

ton lancement de OnTime doit se faire sur un test, tu m'as demandé
pourquoi j'avais trois feuilles, un jour.
C'est pour décomposer et mettre au point.
Le DDE en feuil1
La constitution de la bougie en Feuil2
Le transfert de la bougie feuil2 vers la Feuil3 et raz des cells feuil2
de la bougie.
J'ai donné une version avec verrou et tu mets feuil2!H1 False.
Le test c'est : si ces cells feuil2 sont vides,et que le verrou est
inactif, le OnTime déclenche dès que la première donnée arrive. Si on ne
recoit pas de DDE, le OnTime ne part pas.
Si à xx' et 58" tu recois un cours le ontime déclenche pour deux
secondes et il transmettra tous les cours pris pendant 2" puis clear
feuill2 et attente des données.

à+twinley

Bonsoir !

J'ai 2 macros:
la première insére avec l'instruction
Application.OnTime.
à chaque nouvelle minute une ligne dans la feuille.

La deuxième écrit sur cette ligne des données
capturée avec worksheet_calculate (d'une autre feuille).

Tout va bien, sauf si la 2. macros s'enclenche avant que
la 1. ait fini l'insertion, car au lieu d'une, il y en a plusieurs
(parfois même une traintaine) de lignes qui s'insèrent.

Merci pour toute suggestion pour résoudre ce probème !



Avatar
JeNeVois
Bonjour !

Merci, je croyais comprendre que ton besoin des 3 feuilles
ètait lié à la construction du graphique et qu'ainsi 2 feuilles
me suffisaient. :)
Toutefois je ne comprends malheureusement toujours
rien à ton explication J'aurais plutôt pensé à rétarder
le _calculate jusqu'à ce que le OnTime ait fini son
ouvrage. Le OnTime part chez moi à xx:00:00 , chez
toi il part avant ?
"Si on ne recoit pas de DDE, le OnTime ne part pas."
Dans ce cas, la minute ne sera-t-elle pas sautée ?
N'y a t-il donc aucune possibilité de rétarder
le _calculate seulement pendant le temps critique
xx:00:00...xx:00:15 ?

Salutations






Bonsoir,

ton lancement de OnTime doit se faire sur un test, tu m'as demandé
pourquoi j'avais trois feuilles, un jour.
C'est pour décomposer et mettre au point.
Le DDE en feuil1
La constitution de la bougie en Feuil2
Le transfert de la bougie feuil2 vers la Feuil3 et raz des cells feuil2
de la bougie.
J'ai donné une version avec verrou et tu mets feuil2!H1 False.
Le test c'est : si ces cells feuil2 sont vides,et que le verrou est
inactif, le OnTime déclenche dès que la première donnée arrive. Si on ne
recoit pas de DDE, le OnTime ne part pas.
Si à xx' et 58" tu recois un cours le ontime déclenche pour deux
secondes et il transmettra tous les cours pris pendant 2" puis clear
feuill2 et attente des données.

à+twinley

Bonsoir !

J'ai 2 macros:
la première insére avec l'instruction
Application.OnTime.
à chaque nouvelle minute une ligne dans la feuille.

La deuxième écrit sur cette ligne des données
capturée avec worksheet_calculate (d'une autre feuille).

Tout va bien, sauf si la 2. macros s'enclenche avant que
la 1. ait fini l'insertion, car au lieu d'une, il y en a plusieurs
(parfois même une traintaine) de lignes qui s'insèrent.

Merci pour toute suggestion pour résoudre ce probème !






Avatar
twinley
Bonjour,

J'ai envoyé un complément d'explication en BAL perso.
La _calculate part dès que enableevents est true.
Le OnTime est un process indépendant.
Dans l'exemple que je t'ai donné, le OnTime se déclenche sur le premier
cours reçu et il se termine à la seconde 00.
Ben oui s'il n'y a pas de cours, il n'y a pas de bougie.

à+twinley

Bonjour !

Merci, je croyais comprendre que ton besoin des 3 feuilles
ètait lié à la construction du graphique et qu'ainsi 2 feuilles
me suffisaient. :)
Toutefois je ne comprends malheureusement toujours
rien à ton explication J'aurais plutôt pensé à rétarder
le _calculate jusqu'à ce que le OnTime ait fini son
ouvrage. Le OnTime part chez moi à xx:00:00 , chez
toi il part avant ?
"Si on ne recoit pas de DDE, le OnTime ne part pas."
Dans ce cas, la minute ne sera-t-elle pas sautée ?
N'y a t-il donc aucune possibilité de rétarder
le _calculate seulement pendant le temps critique
xx:00:00...xx:00:15 ?

Salutations







Bonsoir,

ton lancement de OnTime doit se faire sur un test, tu m'as demandé
pourquoi j'avais trois feuilles, un jour.
C'est pour décomposer et mettre au point.
Le DDE en feuil1
La constitution de la bougie en Feuil2
Le transfert de la bougie feuil2 vers la Feuil3 et raz des cells feuil2
de la bougie.
J'ai donné une version avec verrou et tu mets feuil2!H1 False.
Le test c'est : si ces cells feuil2 sont vides,et que le verrou est
inactif, le OnTime déclenche dès que la première donnée arrive. Si on ne
recoit pas de DDE, le OnTime ne part pas.
Si à xx' et 58" tu recois un cours le ontime déclenche pour deux
secondes et il transmettra tous les cours pris pendant 2" puis clear
feuill2 et attente des données.

à+twinley


Bonsoir !

J'ai 2 macros:
la première insére avec l'instruction
Application.OnTime.
à chaque nouvelle minute une ligne dans la feuille.

La deuxième écrit sur cette ligne des données
capturée avec worksheet_calculate (d'une autre feuille).

Tout va bien, sauf si la 2. macros s'enclenche avant que
la 1. ait fini l'insertion, car au lieu d'une, il y en a plusieurs
(parfois même une traintaine) de lignes qui s'insèrent.

Merci pour toute suggestion pour résoudre ce probème !








Avatar
JeNeVois
Bonsoir,

j'ai placé les instructions OnTime dans le _calculate
et le phénomène d'insertion de lignes multiples a cessé.
Le problème est donc qu'une procédure enclenchée
par OnTime ne semble pas pouvoir s'appeler elle-même,
au moins dans ce cas spécifique.

Salutations



Bonjour !

Merci, je croyais comprendre que ton besoin des 3 feuilles
ètait lié à la construction du graphique et qu'ainsi 2 feuilles
me suffisaient. :)
Toutefois je ne comprends malheureusement toujours
rien à ton explication J'aurais plutôt pensé à rétarder
le _calculate jusqu'à ce que le OnTime ait fini son
ouvrage. Le OnTime part chez moi à xx:00:00 , chez
toi il part avant ?
"Si on ne recoit pas de DDE, le OnTime ne part pas."
Dans ce cas, la minute ne sera-t-elle pas sautée ?
N'y a t-il donc aucune possibilité de rétarder
le _calculate seulement pendant le temps critique
xx:00:00...xx:00:15 ?

Salutations






Bonsoir,

ton lancement de OnTime doit se faire sur un test, tu m'as demandé
pourquoi j'avais trois feuilles, un jour.
C'est pour décomposer et mettre au point.
Le DDE en feuil1
La constitution de la bougie en Feuil2
Le transfert de la bougie feuil2 vers la Feuil3 et raz des cells feuil2
de la bougie.
J'ai donné une version avec verrou et tu mets feuil2!H1 False.
Le test c'est : si ces cells feuil2 sont vides,et que le verrou est
inactif, le OnTime déclenche dès que la première donnée arrive. Si on ne
recoit pas de DDE, le OnTime ne part pas.
Si à xx' et 58" tu recois un cours le ontime déclenche pour deux
secondes et il transmettra tous les cours pris pendant 2" puis clear
feuill2 et attente des données.

à+twinley

Bonsoir !

J'ai 2 macros:
la première insére avec l'instruction
Application.OnTime.
à chaque nouvelle minute une ligne dans la feuille.

La deuxième écrit sur cette ligne des données
capturée avec worksheet_calculate (d'une autre feuille).

Tout va bien, sauf si la 2. macros s'enclenche avant que
la 1. ait fini l'insertion, car au lieu d'une, il y en a plusieurs
(parfois même une traintaine) de lignes qui s'insèrent.

Merci pour toute suggestion pour résoudre ce probème !