DoEvents pour ouvrir un classeur

4 réponses
Avatar
rmill...
Bonjour,

Puis-je vous demander votre opinion su ceci?

J'ai lu qu'on devrait ou pourrait utiliser un DoEvents lorsqu'on veut remettre la main au système.

Mais ... si dans un classeur j'ai le code Workbooks("Test").open ... devrait-on ensuite avoir le DoEvents? Car est-ce le système qui l'ouvre de cette manière?

Merci Í  l'avance.

4 réponses

Avatar
MichD
Le 15/11/20 Í  16:58, a écrit :
Bonjour,
Puis-je vous demander votre opinion su ceci?
J'ai lu qu'on devrait ou pourrait utiliser un DoEvents lorsqu'on veut remettre la main au système.
Mais ... si dans un classeur j'ai le code Workbooks("Test").open ... devrait-on ensuite avoir le DoEvents? Car est-ce le système qui l'ouvre de cette manière?
Merci Í  l'avance.

Bonjour,
Voici un exemple de l'utilité de la commande DoEvents
Suppose que tu as créé une boucle et que tu as fait une erreur de code
en l'écrivant et que la boucle est sans fin, si tu inscris dans la
boucle la commande "Doevents", tu peux ajouter un point d'arrêt et la
macro va s'arrêter, sans cette commande, ce serait impossible.
Dans une boucle sans fin, le processeur focus aux actions qu'il doit
exécuter. Lorsque tu insères un DoEvents, cette commande demande Í 
Windows une pause, question de savoir si l'usager devant l'ordinateur a
demandé une autre tÍ¢che (comme un clic pour ajouter un point d'arrêt Í 
la procédure (boucle). Si l'usager ne demande rien de particulier, la
boucle ne s'arrête pas. Attention, cette pause se fait Í  l'intérieur de
l'application. Pendant une boucle sans fin, tu ne peux pas intervenir
dans Excel mais rien ne t'empêche d'ouvrir Word.
Dans une macro, cette ligne de commande "Workbooks("Test").open" va
s'exécuter. Nul besoin d'utiliser doevents. Dans une procédure, chaque
ligne s'exécute une Í  la suite de l'autre.
MichD
Avatar
rmill...
Un grand merci.
Avatar
GL
Le 16/11/2020 Í  02:12, a écrit :
Un grand merci.

Derien (surtout que ce n'était pas moi qui répondais)
DoEvents est documentée ici
https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/doevents-function
Windows gère des messages généralement envoyés avec SendMessage
(https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendmessage)
Ces messages sont des événements type click, drag-and-drop etc.
DoEvents sert alors Í  indiquer que les messages en cours doivent être
traités même si le code VBA est occupé Í  autre chose.
Bonne soirée.
--
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
rmill...
Merci. Je vais aller lire ceci avec intérêt.