1. Livres & vidéos
  2. VBA Excel (versions 2024 et Microsoft 365)
  3. Programmation Windows
Extrait - VBA Excel (versions 2024 et Microsoft 365) Programmer sous Excel : macros et langage VBA
Extraits du livre
VBA Excel (versions 2024 et Microsoft 365) Programmer sous Excel : macros et langage VBA
1 avis
Revenir à la page d'achat du livre

Programmation Windows

Présentation des API

L’interface de programmation Windows API (Application Programming Interface) offre des fonctions qui vous permettent de contrôler les aspects les plus infimes du système d’exploitation. Vous pouvez étendre et personnaliser vos applications Excel en appelant des fonctions Windows API à partir de VBA. Bien qu’Excel continue à évoluer et que son langage de programmation natif (VBA) intègre de plus en plus de fonctions système, il est nécessaire pour certaines tâches d’utiliser des fonctions de l’API.

Une API est une série de fonctions que vous pouvez utiliser pour travailler avec un composant, une application ou un système d’exploitation. Elle se compose généralement d’une ou plusieurs DLL (Dynamic Link Library ou bibliothèque de liaisons dynamiques).

L’API la plus couramment utilisée est l’API Windows qui inclut les DLL constituant le système d’exploitation Windows. Chaque application Windows réagit directement ou indirectement avec l’API Windows. Celle-ci garantit un comportement cohérent à toutes les applications fonctionnant sous Windows.

Les DLL de l’application Windows les plus couramment utilisées sont les suivantes :

Kerne32.dll

Fonctions de bas niveau du système d’exploitation, telles que la gestion...

Appel d’une fonction de l’API Windows

Pour appeler une fonction de l’API Windows, vous devez la déclarer en utilisant l’instruction Declare dans la section Déclarations d’un module de votre projet (généralement un module spécifique aux procédures générales à l’application).

1. Syntaxe de l’instruction Declare

Le respect des minuscules et majuscules est obligatoire pour les noms de fonctions et procédures des DLL.

Déclaration d’une procédure API :

[Public|Private] [PtrSafe] Declare Sub <nom_proc> Lib <nom_DLL>" _
[Alias <nom_alias>] [<liste_arguments>]  

Déclaration d’une function API :

[Public|Private] [PtrSafe] Declare Function <nom_fonc> Lib "<nom_DLL>" _ 
[Alias "<nom_alias>"] [([liste_arguments])] [As <type>] 

PtrSafe

Mot-clé à utiliser dans les versions 64 bits d’Excel.

nom_proc, nom_fonc

Nom de la procédure ou de la fonction tel qu’utilisé dans Visual Basic.

nom_DLL

Nom de la DLL.

nom_alias

Nom de la procédure ou de la fonction dans la DLL.

liste_arguments

Liste des paramètres de l’API.

type

Type de la valeur retournée par la fonction.

2. Passage des arguments

Les fonctions et procédures des DLL sont écrites pour la plupart en langage C et font donc référence...

Liste de fonctions API Windows

Cette liste comporte les fonctions de l’API Windows couramment utilisées. Des exemples d’utilisation de certaines de ces fonctions sont décrits dans la section suivante.

GetWindowsDirectory

Renvoie le chemin complet du répertoire de Windows.

GetSystemDirectory

Renvoie le chemin complet du répertoire système de Windows.

GetSystemInfo

Renvoie toute une série d’informations sur le système. Ces données sont stockées dans une structure de type SYSTEM_INFO.

GetActiveWindow

Renvoie le handle de la fenêtre active.

FindExecutable

La fonction retourne le nom et le chemin de l’application associée à un fichier (application associée à l’extension du fichier).

FindWindow

Renvoie le handle de la fenêtre en fonction de son nom et de la classe à partir de laquelle elle a été définie.

GetPrivateProfileString

Renvoie une option d’un fichier Ini à partir d’un nom de section et de clé.

GetTempPath

Renvoie le chemin vers le dossier temporaire du système.

GetUserName

Renvoie le nom de l’utilisateur.

WNetGetUser

Renvoie le nom du login réseau.

SetFocus

Attribue le focus d’entrée à la fenêtre référencée par son handle.

Exemples d’utilisation de fonctions API Windows

1. Récupération du répertoire Windows

Déclaration de la fonction API :

'   Cette fonction API renvoie le répertoire Windows 
Private Declare Function GetWindowsDirectory _ 
           Lib "kernel32" Alias "GetWindowsDirectoryA" _ 
           (ByVal lpWindowsDir As String, _ 
           ByVal lpWindowsHeight As Long) _ 
           As Long 

Appel de la fonction API :

Function GetWinPath() As String 
' Cette fonction VBA renvoie le répertoire Windows 
Dim StrResult As String 
Dim StrProfile As String 
 
StrResult = String(255, " ") 
StrProfile = GetWindowsDirectory(StrResult, 255) 
 
' Tronque la chaîne au premier caractère nul 
If StrProfile <> "" Then 
   StrResult = Trim(StrResult) 
   GetWinPath = Left(StrResult, InStr(1, StrResult, vbNullChar) - 1) 
Else 
   GetWinPath = "" 
End If 
 
End Function 

2. Lancement de la calculatrice Windows

Cet exemple permet de tester si la calculatrice Windows est déjà active, et de lancer son exécution sinon.

Deux fonctions API sont ici utilisées : la première...

L’objet FileSystemObject

L’objet FileSystemObject donne accès au système de fichiers d’un ordinateur. Il permet notamment de rechercher, créer, supprimer, déplacer des fichiers ou des dossiers.

1. Méthodes

Méthodes relatives aux fichiers

CopyFile

Copie un ou plusieurs fichiers d’un emplacement vers un autre.

CreateTextFile

Crée un nom de fichier spécifié et renvoie un objet TextStream pouvant être utilisé pour lire ou écrire dans le fichier.

DeleteFile

Supprime un fichier spécifié.

FileExists

Renvoie un booléen indiquant si le fichier spécifié existe.

MoveFile

Déplace un ou plusieurs fichiers d’un emplacement vers un autre.

OpenTextFile

Ouvre un fichier spécifié et renvoie un objet TextStream pouvant être utilisé pour lire un fichier ou y effectuer un ajout.

Méthodes relatives aux dossiers

CopyFolder

Copie un dossier d’un emplacement vers un autre.

CreateFolder

Crée un dossier.

DeleteFolder

Supprime un dossier spécifié et son contenu.

FolderExists

Renvoie un booléen indiquant si le dossier spécifié existe.

MoveFolder

Déplace un ou plusieurs dossiers d’un emplacement vers un autre.

Méthodes relatives aux lecteurs

DriveExists

Renvoie un booléen indiquant si le lecteur spécifié existe.

GetDrive

Renvoie...