Bonjour tout le monde
Je ne sais pas à quoi sert DoEvents
Merci tout le monde
Amicalement Francisco
Bonjour tout le monde
Je ne sais pas à quoi sert DoEvents
Merci tout le monde
Amicalement Francisco
Bonjour tout le monde
Je ne sais pas à quoi sert DoEvents
Merci tout le monde
Amicalement Francisco
Bonjour Francisco,
Je crois que DoEvents sert à redonner la main à Excel et l'utilisateur
pour faire d'autres actions. Toutefois la macro se poursuit et les
actions effectuées via clavier/souris peuvent interférer avec la mcro
(attention aux activeworksheet si tu changes de feuille...)
@+
FxM
francisco wrote:Bonjour tout le monde
Je ne sais pas à quoi sert DoEvents
Merci tout le monde
Amicalement Francisco
Bonjour Francisco,
Je crois que DoEvents sert à redonner la main à Excel et l'utilisateur
pour faire d'autres actions. Toutefois la macro se poursuit et les
actions effectuées via clavier/souris peuvent interférer avec la mcro
(attention aux activeworksheet si tu changes de feuille...)
@+
FxM
francisco wrote:
Bonjour tout le monde
Je ne sais pas à quoi sert DoEvents
Merci tout le monde
Amicalement Francisco
Bonjour Francisco,
Je crois que DoEvents sert à redonner la main à Excel et l'utilisateur
pour faire d'autres actions. Toutefois la macro se poursuit et les
actions effectuées via clavier/souris peuvent interférer avec la mcro
(attention aux activeworksheet si tu changes de feuille...)
@+
FxM
francisco wrote:Bonjour tout le monde
Je ne sais pas à quoi sert DoEvents
Merci tout le monde
Amicalement Francisco
Bonjour tout le monde
Je ne sais pas à quoi sert DoEvents
Merci tout le monde
Amicalement Francisco
Bonjour tout le monde
Je ne sais pas à quoi sert DoEvents
Merci tout le monde
Amicalement Francisco
Bonjour tout le monde
Je ne sais pas à quoi sert DoEvents
Merci tout le monde
Amicalement Francisco
Bonjour Francisco,
Lors de l'exécution d'une macro, l'application Excel dédie toutes ses
ressources à l'accomplissement des actions que lui
demandent la procédure. L'application Excel (l'instance en cours) est
alors insensible aux interventions en provenance d'une
source autre que la ligne suivante de code à exécuter et ce jusqu'à la fin
de la procédure. Les demandes externes faite à
l'application sont mises "en attente".
Par exemple suppose que tu exécutes (lances) cette macro (Boucle1) à
partir de la fenêtre de l'éditeur de macro. Si tu
essaies en cours d'exécution de cliquer sur l'icône représentant la
feuille de calcul de la barre des tâches, l'action
demandée sera "mise en attente" par l'application Excel; cette dernière
étant occupé à exécuter la macro. Lorsqu'elle aura
terminé, elle affichera la feuille de calcul.
'----------------------
Sub Boucle1()
For a = 1 To 1000000
Range("A1") = a
Next
End Sub
'----------------------
Si tu refais la même expérience en ajoutant la ligne de code "DoEvents",
dès que tu cliqueras sur l'icône de la feuille de
calcul de la barre des tâches, elle s'affichera et tu pourras observer
l'incrémentation de la valeur de la cellule A1.
'----------------------
Sub Boucle2()
For a = 1 To 1000000
Range("A1") = a
DoEvents
Next
End Sub
'----------------------
Et si ta macro requiert suffisamment de temps, rien ne t'empêchera durant
l'exécution de celle-ci de sélectionner des
cellules, de modifier leur format , j'ajouter une feuille, de supprimer
des lignes... une foule d'actions est possible. Tu
constateras qu'excel exécute ces actions une à la suite de l'autre et non
concurremment. Une instance d'excel ne peut pas
faire tourner en même temps 2 processus (Threads) indépendants en même
temps. C'est pour cette raison que la macro s'arrêtera
de s'exécuter si tu essaies de saisir des données dans une cellule de la
feuille de calcul.
De fait, la commande "DoEvents" ne donne pas la main à Windows mais à
l'instance de l'application Excel sous laquelle la
macro s'exécute. Windows sait très bien gérer le multi-tâches. Exemple :
pendant que tu élabores une application, tu peux
télécharger des fichiers MP3, écouter la radio via Internet .... etc, et
ce en même temps. De la même façon, si tu ouvres 2
instances d'excel, pendant l'exécution de la macro dans une instance
d'excel, rien ne empêchera de travailler dans l'autre
instance d'excel et de lui faire exécuter tous les calculs et procédures
que tu voudras.
La commande "DoEvents" peut être défini comme un événement en soi au même
titre que tous les autres événements de
l'application. La fonction de cette commande est d'induire une "pause"
dans l'exécution du code afin de permettre à
l'application Excel (l'instance en cours ) de percevoir si il n'y a pas
d'autres tâches qui lui ont été commandées. Si tel
est le cas, cette "pause" permettra d'exécuter une à la suite des autres
les actions demandées et mise en attente alors
qu'elle s'affairait à exécuter la procédure.
Lorsque la macro est très longue, on peut utiliser à plus d'une reprise
cette commande car ce n'est qu'à l'exécution de cette
ligne de commande, que l'application répond à un ordre en provenance de
l'extérieur. La répétition de la ligne de commande a
des endroits stratégiques du code permettra à l'application de répondre
plus rapidement aux commandes externes (actions en
attente).
Voilà !
Salutations!
"francisco" a écrit dans le message de
news:c0524g$p99$
Bonjour tout le monde
Je ne sais pas à quoi sert DoEvents
Merci tout le monde
Amicalement Francisco
Bonjour Francisco,
Lors de l'exécution d'une macro, l'application Excel dédie toutes ses
ressources à l'accomplissement des actions que lui
demandent la procédure. L'application Excel (l'instance en cours) est
alors insensible aux interventions en provenance d'une
source autre que la ligne suivante de code à exécuter et ce jusqu'à la fin
de la procédure. Les demandes externes faite à
l'application sont mises "en attente".
Par exemple suppose que tu exécutes (lances) cette macro (Boucle1) à
partir de la fenêtre de l'éditeur de macro. Si tu
essaies en cours d'exécution de cliquer sur l'icône représentant la
feuille de calcul de la barre des tâches, l'action
demandée sera "mise en attente" par l'application Excel; cette dernière
étant occupé à exécuter la macro. Lorsqu'elle aura
terminé, elle affichera la feuille de calcul.
'----------------------
Sub Boucle1()
For a = 1 To 1000000
Range("A1") = a
Next
End Sub
'----------------------
Si tu refais la même expérience en ajoutant la ligne de code "DoEvents",
dès que tu cliqueras sur l'icône de la feuille de
calcul de la barre des tâches, elle s'affichera et tu pourras observer
l'incrémentation de la valeur de la cellule A1.
'----------------------
Sub Boucle2()
For a = 1 To 1000000
Range("A1") = a
DoEvents
Next
End Sub
'----------------------
Et si ta macro requiert suffisamment de temps, rien ne t'empêchera durant
l'exécution de celle-ci de sélectionner des
cellules, de modifier leur format , j'ajouter une feuille, de supprimer
des lignes... une foule d'actions est possible. Tu
constateras qu'excel exécute ces actions une à la suite de l'autre et non
concurremment. Une instance d'excel ne peut pas
faire tourner en même temps 2 processus (Threads) indépendants en même
temps. C'est pour cette raison que la macro s'arrêtera
de s'exécuter si tu essaies de saisir des données dans une cellule de la
feuille de calcul.
De fait, la commande "DoEvents" ne donne pas la main à Windows mais à
l'instance de l'application Excel sous laquelle la
macro s'exécute. Windows sait très bien gérer le multi-tâches. Exemple :
pendant que tu élabores une application, tu peux
télécharger des fichiers MP3, écouter la radio via Internet .... etc, et
ce en même temps. De la même façon, si tu ouvres 2
instances d'excel, pendant l'exécution de la macro dans une instance
d'excel, rien ne empêchera de travailler dans l'autre
instance d'excel et de lui faire exécuter tous les calculs et procédures
que tu voudras.
La commande "DoEvents" peut être défini comme un événement en soi au même
titre que tous les autres événements de
l'application. La fonction de cette commande est d'induire une "pause"
dans l'exécution du code afin de permettre à
l'application Excel (l'instance en cours ) de percevoir si il n'y a pas
d'autres tâches qui lui ont été commandées. Si tel
est le cas, cette "pause" permettra d'exécuter une à la suite des autres
les actions demandées et mise en attente alors
qu'elle s'affairait à exécuter la procédure.
Lorsque la macro est très longue, on peut utiliser à plus d'une reprise
cette commande car ce n'est qu'à l'exécution de cette
ligne de commande, que l'application répond à un ordre en provenance de
l'extérieur. La répétition de la ligne de commande a
des endroits stratégiques du code permettra à l'application de répondre
plus rapidement aux commandes externes (actions en
attente).
Voilà !
Salutations!
"francisco" <malabar@wanadoo.fr> a écrit dans le message de
news:c0524g$p99$1@news-reader5.wanadoo.fr...
Bonjour tout le monde
Je ne sais pas à quoi sert DoEvents
Merci tout le monde
Amicalement Francisco
Bonjour Francisco,
Lors de l'exécution d'une macro, l'application Excel dédie toutes ses
ressources à l'accomplissement des actions que lui
demandent la procédure. L'application Excel (l'instance en cours) est
alors insensible aux interventions en provenance d'une
source autre que la ligne suivante de code à exécuter et ce jusqu'à la fin
de la procédure. Les demandes externes faite à
l'application sont mises "en attente".
Par exemple suppose que tu exécutes (lances) cette macro (Boucle1) à
partir de la fenêtre de l'éditeur de macro. Si tu
essaies en cours d'exécution de cliquer sur l'icône représentant la
feuille de calcul de la barre des tâches, l'action
demandée sera "mise en attente" par l'application Excel; cette dernière
étant occupé à exécuter la macro. Lorsqu'elle aura
terminé, elle affichera la feuille de calcul.
'----------------------
Sub Boucle1()
For a = 1 To 1000000
Range("A1") = a
Next
End Sub
'----------------------
Si tu refais la même expérience en ajoutant la ligne de code "DoEvents",
dès que tu cliqueras sur l'icône de la feuille de
calcul de la barre des tâches, elle s'affichera et tu pourras observer
l'incrémentation de la valeur de la cellule A1.
'----------------------
Sub Boucle2()
For a = 1 To 1000000
Range("A1") = a
DoEvents
Next
End Sub
'----------------------
Et si ta macro requiert suffisamment de temps, rien ne t'empêchera durant
l'exécution de celle-ci de sélectionner des
cellules, de modifier leur format , j'ajouter une feuille, de supprimer
des lignes... une foule d'actions est possible. Tu
constateras qu'excel exécute ces actions une à la suite de l'autre et non
concurremment. Une instance d'excel ne peut pas
faire tourner en même temps 2 processus (Threads) indépendants en même
temps. C'est pour cette raison que la macro s'arrêtera
de s'exécuter si tu essaies de saisir des données dans une cellule de la
feuille de calcul.
De fait, la commande "DoEvents" ne donne pas la main à Windows mais à
l'instance de l'application Excel sous laquelle la
macro s'exécute. Windows sait très bien gérer le multi-tâches. Exemple :
pendant que tu élabores une application, tu peux
télécharger des fichiers MP3, écouter la radio via Internet .... etc, et
ce en même temps. De la même façon, si tu ouvres 2
instances d'excel, pendant l'exécution de la macro dans une instance
d'excel, rien ne empêchera de travailler dans l'autre
instance d'excel et de lui faire exécuter tous les calculs et procédures
que tu voudras.
La commande "DoEvents" peut être défini comme un événement en soi au même
titre que tous les autres événements de
l'application. La fonction de cette commande est d'induire une "pause"
dans l'exécution du code afin de permettre à
l'application Excel (l'instance en cours ) de percevoir si il n'y a pas
d'autres tâches qui lui ont été commandées. Si tel
est le cas, cette "pause" permettra d'exécuter une à la suite des autres
les actions demandées et mise en attente alors
qu'elle s'affairait à exécuter la procédure.
Lorsque la macro est très longue, on peut utiliser à plus d'une reprise
cette commande car ce n'est qu'à l'exécution de cette
ligne de commande, que l'application répond à un ordre en provenance de
l'extérieur. La répétition de la ligne de commande a
des endroits stratégiques du code permettra à l'application de répondre
plus rapidement aux commandes externes (actions en
attente).
Voilà !
Salutations!
"francisco" a écrit dans le message de
news:c0524g$p99$
Bonjour tout le monde
Je ne sais pas à quoi sert DoEvents
Merci tout le monde
Amicalement Francisco