Fonction Excel VBA DoEvents

Lorsque nous écrivons des codes énormes, nous tombons toujours dans le piège de VBA. Lorsque le code est volumineux, VBA prend son propre temps pour terminer le processus d'exécution et d'exécution. Ce qui peut prendre du temps d'une minute à plusieurs minutes. C'est le laps de temps où tout le monde s'énerve. Et nous ne pouvons rien faire d'autre pendant cette période. Mais pour éviter cela, nous avons une fonction dans VBA appelée DoEvents. À l'aide de DoEvents, nous pouvons exécuter le code en arrière-plan et simultanément, nous pouvons également faire d'autres types de choses. Nous ne pouvons pas seulement travailler sur d'autres outils ou logiciels, mais nous pouvons également interrompre le code ou nous arrêter entre les processus d'exécution.

Une fois que nous aurons entré DoEvents dans le code, à part VBA, nous aurons également le contrôle du travail que nous voulons faire. La bonne chose à propos de DoEvents est qu'il n'a aucune sorte de syntaxe à écrire. Nous pouvons placer directement Doevents là où nous voulons prendre le contrôle de VBA et effectuer les tâches selon nos besoins.

Comment utiliser la fonction DoEvents dans Excel VBA?

Vous trouverez ci-dessous les différents exemples d'utilisation de la fonction DoEvents dans Excel à l'aide du code VBA.

Vous pouvez télécharger ce modèle Excel VBA DoEvents ici - Modèle Excel VBA DoEvents

Excel VBA DoEvents - Exemple # 1

Bien que pour exécuter DoEvents, nous avons besoin d'un énorme ensemble de données où nous pouvons voir comment le code est interrompu. Ainsi, nous utiliserons une boucle, où les nombres seront appliqués jusqu'à ce que le code soit terminé. Pour cela, suivez les étapes ci-dessous:

Étape 1: Ouvrez un module dans VBA à partir de l'onglet de menu Insérer, comme indiqué ci-dessous.

Étape 2: Écrivez la sous-procédure de VBA DoEvents ou nous pouvons choisir n'importe quel nom pour définir le code selon nos besoins.

Code:

 Sub VBA_DoEvents () End Sub 

Étape 3: Définissez maintenant une variable dans n'importe quel nom avec des types de données Long. Le but de considérer le type de données comme Long est parce que nous prendrons toute longueur de données que nous voulons, ce qui n'est pas possible si nous considérons Integer.

Code:

 Sub VBA_DoEvents () Dim A As Sub End Long 

Étape 4: Maintenant, ouvrez une boucle For-Next où nous allons mettre les conditions.

Code:

 Sub VBA_DoEvents () Dim A aussi long pour Next A End Sub 

Étape 5: Considérez la gamme d'un certain nombre de votre choix qui peut être vu en cours d'implémentation. Ici, nous prenons la plage de 1 à 2000 dans la variable définie A.

Code:

 Sub VBA_DoEvents () Dim A aussi long pour A = 1 à 20000 Next A End Sub 

Étape 6: Une fois que nous avons défini la plage de nombres, nous sélectionnerons la plage de cellules où nous verrons les changements de nombres que nous avons choisis ci-dessus. Disons que la plage de cellules va de A1 à A5. Cela pourrait également être une seule cellule.

Code:

 Sub VBA_DoEvents () Dim A aussi longtemps pour A = 1 à 20000 ("A1: A5"). Valeur = A Next A End Sub 

Étape 7: Maintenant, exécutez le code en cliquant sur le bouton Lecture situé sous la barre de menus.

Nous verrons, le code s'est terminé en imprimant les chiffres de 1 à 20000 mais nous n'avons pas pu l'arrêter.

Étape 8: pour obtenir le contrôle total du code, appliquez DoEvents après les conditions de boucle, comme indiqué ci-dessous.

Code:

 Sous VBA_DoEvents () Dim A aussi longtemps pour A = 1 à 20000 ("A1: A5"). Valeur = A DoEvents suivant A End Sub 

Étape 9: Maintenant, exécutez à nouveau le code. Et à ce moment, nous essayons d'arrêter le code en cliquant sur le bouton d'arrêt, nous remarquerons que le code sera arrêté entre les processus avant de terminer l'essai de 20000.

Excel VBA DoEvents - Exemple # 2

Il existe un autre type de processus pour implémenter DoEvents. Mais pour cela aussi, nous aurons besoin d'un code énorme comme le montre l'exemple-1. Pour cela, suivez les étapes ci-dessous:

Étape 1: Écrivez la sous-procédure de VBA DoEvents comme indiqué ci-dessous.

Code:

 Sub VBA_DoEvents2 () End Sub 

Étape 2: ouvrez directement une boucle For-next sans définir de variable.

Code:

 Sub VBA_DoEvents2 () pour Sub End suivant 

Étape 3: Choisissez une plage de numéros que nous verrons fonctionner. Laissez la plage de 1 à 20000 identique à l'exemple-1.

Code:

 Sub VBA_DoEvents2 () Pour A = 1 à 20000 Next End Sub 

Étape 4: Maintenant, mettez directement n'importe quel travail pour la sortie, disons que la sortie est comme indiqué ci-dessous. Et la plage de valeurs sera +1 de la valeur réelle.

Code:

 Sub VBA_DoEvents2 () Pour A = 1 à 20000 Sortie = Sortie + 1 Next End Sub 

Étape 5: Sélectionnez maintenant la plage où nous voulons voir la sortie. Soit la cellule A1.

Code:

 Sub VBA_DoEvents2 () Pour A = 1 à 20000 Sortie = Sortie + 1 plage ("A1") Valeur = Sortie Next End Sub 

Étape 6: Et enfin, nous mettrons DoEvents à la fin de la condition de boucle For.

Code:

 Sub VBA_DoEvents2 () Pour A = 1 à 20000 Sortie = Sortie + 1 plage ("A1"). Valeur = Sortie DoEvents Next End Sub 

Étape 7: Et puis exécutez le code en appuyant sur la touche F5. Nous verrons, nous pouvons tout faire même lorsque le code est en cours d'exécution. Pour démonstration, j'ai sélectionné les cellules B1 et C1. Seuls les chiffres ont atteint 4348, ce qui est bien inférieur à la limite que nous avons fixée.

Étape 8: Si nous supprimons les DoEvents et exécutons le code, nous ne pourrons rien faire tant que le code n'aura pas terminé son processus. Voyons cela aussi.

Code:

 Sub VBA_DoEvents2 () Pour A = 1 à 20000 Sortie = Sortie + 1 plage ("A1") Valeur = Sortie Next End Sub 

Étape 9: Maintenant, exécutez à nouveau le code. Comme nous pouvons le voir, alors que nous avons essayé de cliquer sur Arrêter, le code ne s'est pas arrêté. Et la fonction de lecture était toujours activée.

Avantages et inconvénients d'Excel VBA DoEvents

  • Nous pouvons travailler sur n'importe quel outil ou fichier en arrière-plan pendant que le code VBA s'exécute en parallèle.
  • L'utilisation de DoEvents ne nous empêche pas de faire le travail que nous voulons lorsque le code est en cours d'exécution.
  • Il écrase la feuille de calcul ou le classeur lorsque nous basculons entre les différentes feuilles de calcul ou classeur.
  • Le code s'arrête lorsque nous écrivons ou modifions la cellule pendant un moment et nous ne sommes pas informés.

Choses dont il faut se rappeler

  • Si nous faisons quelque chose sans appliquer DoEvents, il y a une possibilité majeure que le code gèle le système et le fichier. Et que nous allons soit reprendre les fichiers une fois le code complètement exécuté, soit planter le fichier en plusieurs clics.
  • Nous pouvons voir le changement dans le processus tout en travaillant sur l'autre travail simultanément.
  • Une fois le code terminé, enregistrez le fichier au format Excel activé par macro pour éviter de perdre du code.
  • Essayez d'appliquer le code dans un ensemble de codage énorme et grand, nous verrons la mise en œuvre et l'utilisation réelles.

Articles recommandés

Ceci est un guide des événements VBA. Ici, nous discutons de l'utilisation de la fonction DoEvents dans Excel à l'aide du code VBA ainsi que des exemples pratiques et un modèle Excel téléchargeable. Vous pouvez également consulter nos autres articles suggérés -

  1. Comment utiliser StrConv dans Excel VBA?
  2. Convertir des nombres en texte dans Excel (exemples)
  3. Fonction VBA ByRef (exemples avec modèle Excel)
  4. SUMIFS Excel avec dates | Modèle Excel

Catégorie: