Comment utiliser la fonction DoEvents dans VBA ?

La fonction `DoEvents` dans VBA (Visual Basic for Applications) est utilisée pour céder le contrôle au système d’exploitation afin qu’il puisse traiter d’autres événements pendant l’exécution d’une macro. Cela peut être utile dans les situations où vous avez une longue boucle et que vous souhaitez que l’application reste réactive, vous permettant d’interrompre l’exécution, de déplacer la fenêtre, ou de mettre à jour l’affichage.

Voici comment vous pouvez utiliser `DoEvents` dans une macro VBA :

  • Ouvrir l’éditeur VBA: Accédez à l’éditeur VBA dans votre application Office (comme Excel) en appuyant sur `ALT + F11`.
  • Insérer un module: Si vous n’avez pas de module déjà ouvert, insérez-en un nouveau en allant dans `Insertion` > `Module`.
  • Écrire une macro: Ajoutez une macro dans le module, comprenant `DoEvents` dans une boucle.

Voici un exemple simple :

Sub ExempleDoEvents()
    Dim i As Long
    Dim somme As Long
    somme = 0
    
    ' Une boucle qui durera un certain temps
    For i = 1 To 1000000
        somme = somme + i
        
        ' Permettre à l'application de traiter d'autres événements
        DoEvents
    Next i
    
    MsgBox "La somme est " & somme
End Sub

Explication :

  • La boucle For: Elle s’exécute un million de fois. Sans `DoEvents`, l’application pourrait ne pas répondre pendant l’exécution de cette boucle.
  • DoEvents: Lorsqu’il est appelé, il permet à l’OS de traiter d’autres tâches, telles que les clics de souris ou les mouvements de fenêtre. Cela rend l’application plus réactive mais peut ralentir légèrement la boucle.

Considérations :

  • Performance: `DoEvents` peut réduire les performances de votre boucle car il ajoute un overhead en permettant au système d’exploitation de gérer d’autres tâches.
  • Éviter les abus: Utilisez `DoEvents` avec parcimonie, principalement dans des boucles longues où l’application risque de devenir non réactive.
  • Alternatives: Dans les applications professionnelles, envisagez d’utiliser des techniques plus robustes comme le multithreading ou la programmation asynchrone, bien que cela dépasse les capacités standard de VBA.

En insérant `DoEvents` judicieusement, vous pouvez améliorer l’expérience utilisateur sans compromettre de manière significative les performances de votre macro.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project