Comment utiliser l’instruction Declare dans VBA ?

L’instruction `Declare` en VBA (Visual Basic for Applications) est utilisée pour déclarer une fonction externe qui réside dans une bibliothèque de liens dynamiques (DLL) ou un fichier code resource (comme une API Windows). Cela permet à votre code VBA d’appeler des fonctions qui ne sont pas directement disponibles dans VBA.

Voici comment utiliser l’instruction `Declare` :

Structure de base

Declare Function NomDeLaFonction Lib "NomDeLaDLL" Alias "NomRéelDeLaFonction" (ListeDesArguments) As TypeDeRetour

Composants de l’instruction Declare

  • Function/Sub : Indique si vous déclarez une fonction (`Function`) ou une procédure subroutine (`Sub`).
  • NomDeLaFonction : Le nom que vous utiliserez dans votre code VBA pour appeler cette fonction.
  • Lib “NomDeLaDLL” : Indique le fichier DLL ou EXE qui contient la fonction. Le nom doit être entre guillemets.
  • Alias “NomRéelDeLaFonction” (facultatif) : Utilisé si le nom que vous voulez utiliser dans VBA est différent du nom réel de la fonction dans la bibliothèque.
  • ListeDesArguments : Les paramètres que la fonction accepte. Chaque argument doit être défini avec son nom, son type de données et, éventuellement, le mot-clé `ByVal` ou `ByRef`.
  • As TypeDeRetour : Le type de données que la fonction va retourner. Cela peut être des types standards comme `Integer`, `Long`, `String`, etc.

Exemple d’utilisation

Pour appeler la fonction MessageBox de l’API Windows, vous pourriez utiliser la déclaration suivante :

Declare PtrSafe Function MessageBox Lib "user32" Alias "MessageBoxA" ( _
    ByVal hwnd As LongPtr, _
    ByVal lpText As String, _
    ByVal lpCaption As String, _
    ByVal uType As Long) As Long

Et pour l’utiliser dans votre code :

Sub ShowMessageBox()
    Dim RetVal As Long
    RetVal = MessageBox(0, "Voici votre message", "Titre du Message", 0)
End Sub

Remarques importantes

  • `PtrSafe` : Ce mot-clé est nécessaire pour les versions 64 bits d’Office, et il garantit que le code est compatible avec la version 64 bits de VBA.
  • `ByVal` et `ByRef` : `ByVal` passe une copie de l’argument, tandis que `ByRef` passe une référence à l’argument, permettant ainsi à la fonction de modifier la donnée d’origine.
  • Compatibilité 64 bits : Si vous travaillez avec des versions 64 bits, prêtez attention à la compatibilité des pointeurs en utilisant `LongPtr` au lieu de `Long` pour les handles et les pointeurs.

Utiliser les API Windows correctement nécessite de bien comprendre la gestion des types de données et des appels système. Assurez-vous de manipuler ces éléments avec soin pour éviter des erreurs ou des plantages.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project