Avant de préparer les questions d'entretien d'un développeur VBA, regardez ce que l'offre décrit. Certaines portent sur une application Access utilisée par tout un service, avec des tables liées à SQL Server. D'autres sur des outils Excel qui pilotent Outlook et Word, ou sur des macros de calcul à fiabiliser. Dans les offres récentes, VBA côtoie souvent .NET, Python ou un outil de RPA, et le poste demande de faire évoluer l'existant autant que de le maintenir.
Le CV ne dit pas grand-chose. « VBA, Excel, Access » couvre aussi bien l'enregistreur de macros que des modules de classe et des appels à l'API Windows. L'écart s'entend quand la personne parle d'une base scindée entre interface et données, de liaison tardive pour éviter une référence cassée, d'un Declare corrigé pour Office 64 bits ou d'un fichier bloqué par la marque du web.
Le poste bouge aussi. Office s'installe en 64 bits par défaut depuis Office 2019, le nouvel Outlook pour Windows n'exécute plus de macros ni de compléments COM, et les macros des fichiers venus d'internet sont bloquées par défaut depuis 2022. Un bon profil sait dire quel outil garder en VBA et lequel passer en Python, en Power Apps ou en .NET. Le PDF contient 30 questions sur six axes et un cas de 20 minutes.
Ce que manipule un développeur VBA au quotidien
VBA et l'éditeur VBE
Le langage intégré aux applications Office de bureau, écrit dans l'éditeur Visual Basic. Un projet contient des modules standard, des modules de classe et des formulaires (UserForms). Un profil confirmé structure son code et gère les erreurs dans chaque procédure, loin de la macro enregistrée puis retouchée.
Microsoft Access
La base de données de bureau d'Office, avec formulaires, états, requêtes et macros. En multi-utilisateur, l'application se scinde en deux fichiers : l'interface sur chaque poste, les données sur un serveur de fichiers ou dans SQL Server. Un fichier Access est limité à 2 Go, et un partage réseau instable suffit à le corrompre.
DAO, ADO et ODBC
Les bibliothèques d'accès aux données. DAO est natif dans Access, ADO sert surtout depuis Excel vers SQL Server ou Oracle, et ODBC relie les tables liées et les requêtes directes. Vérifiez que la personne écrit des requêtes paramétrées au lieu de coller les valeurs saisies dans le texte SQL.
Automatisation COM
VBA pilote d'autres applications par COM : Outlook pour envoyer des mails, Word pour produire des courriers, Excel depuis Access. La liaison précoce, avec une référence cochée, donne l'autocomplétion. La liaison tardive, avec CreateObject, évite les références cassées quand les versions d'Office diffèrent d'un poste à l'autre.
Modules de classe et événements
Les classes regroupent une règle métier ou un accès aux données, écoutent les événements d'un objet avec WithEvents et partagent une interface avec Implements. Peu de CV le mentionnent. C'est pourtant souvent ce qui sépare un outil qu'on peut reprendre d'un empilement de macros.
Office 64 bits et API Windows
Microsoft 365 s'installe en 64 bits par défaut depuis Office 2019. Les instructions Declare qui appellent l'API Windows doivent porter le mot-clé PtrSafe et utiliser LongPtr pour les pointeurs et les handles. Un vieil outil qui plante après une migration de poste vient souvent de là.
Sécurité et diffusion des macros
Depuis 2022, Office bloque par défaut les macros des fichiers venus d'internet, repérés par la marque du web. La diffusion passe par des emplacements approuvés, une signature de code avec un éditeur approuvé, ou un fichier ACCDE pour Access. Le développeur doit connaître ces options avant de livrer un outil à cinquante personnes.
Outillage, versionnement et sorties
Rubberduck ajoute à l'éditeur des inspections de code, du refactoring et des tests unitaires. L'export des modules en fichiers texte permet de versionner le code dans Git. Pour faire évoluer un outil, les pistes courantes sont Python, Power Apps avec Dataverse, .NET, ou Office Scripts pour Excel sur le web.
Le développeur VBA travaille rarement dans une équipe de développement classique. Il est rattaché à un service métier, à une cellule d'outils ou à une DSI qui reprend des applications construites par les utilisateurs. Les missions vont de la maintenance d'une base Access partagée à la création d'outils Excel qui produisent des documents, en passant par la migration vers Office 64 bits ou vers SQL Server. Les offres ajoutent souvent .NET, Python, Power Automate ou un outil de RPA comme Blue Prism ou UiPath. Les certifications Microsoft Office Specialist portent sur l'usage des logiciels, pas sur le développement : des exemples de code commentés en entretien disent bien plus.
Les compétences à vérifier chez un développeur VBA
- Langage VBA et modules de classe
- Applications Access multi-utilisateurs
- Accès aux données DAO, ADO et SQL Server
- Automatisation COM entre applications Office
- Office 64 bits, sécurité et diffusion
- Maintenabilité, versionnement et migration
Base Access, COM, 64 bits : cinq questions pour un développeur VBA
Chaque question vient avec ce qu'une bonne réponse contient et le signal qui doit vous alerter. Pas besoin d'être technique pour les poser : écoutez si le candidat raconte du vécu.
Question 1 · confirmé
Une base Access partagée par quinze personnes sur un partage réseau se corrompt une fois par mois. Que changez-vous ?
Une bonne réponseD'abord la séparation : un fichier d'interface (le frontal) installé sur chaque poste et un fichier de données sur le serveur, ou mieux, les tables dans SQL Server reliées par ODBC. Ensuite un compactage régulier du fichier de données, précédé d'une sauvegarde, des formulaires qui n'ouvrent pas des milliers d'enregistrements à la fois et un partage réseau stable, jamais un dossier synchronisé par OneDrive ni un poste en Wi-Fi.
Signal d'alerteUn seul fichier ouvert par tout le monde, « on lance une réparation quand ça plante », ou aucune idée de la séparation entre interface et données.
Question 2 · confirmé
Votre outil Excel envoie des mails par Outlook. Il marche sur votre poste et plante chez un collègue avec une erreur de référence manquante. Pourquoi ?
Une bonne réponseLe projet utilise une liaison précoce : une référence à la bibliothèque Outlook d'une version précise est cochée, et elle apparaît comme MANQUANTE sur un poste qui a une autre version, ou pas Outlook. Pour la diffusion, la personne passe en liaison tardive (CreateObject, variables As Object, constantes Outlook redéclarées) et garde éventuellement la liaison précoce pendant le développement pour l'autocomplétion. Elle teste ensuite l'outil sur un poste qui n'a pas la même configuration que le sien.
Signal d'alerte« Il faut réinstaller Office chez le collègue », ou ne pas savoir où se trouve la liste des références dans l'éditeur.
Question 3 · junior à confirmé
Un formulaire construit une requête SQL en collant le texte saisi par l'utilisateur. Quel problème voyez-vous, et comment le corrigez-vous ?
Une bonne réponseUne injection SQL possible, et une requête qui casse dès qu'un nom contient une apostrophe, comme O'Brien. Les dates posent aussi problème, interprétées différemment selon le format régional du poste. La personne corrige avec une requête paramétrée : un QueryDef et ses paramètres en DAO, ou un objet Command et sa collection Parameters en ADO, avec des paramètres typés pour les dates et les montants.
Signal d'alerteDoubler les apostrophes avec Replace et considérer le sujet réglé, ou ne pas voir de risque dans un outil « interne ».
Question 4 · confirmé
Après le passage à Microsoft 365 en 64 bits, un outil affiche une erreur de compilation sur une instruction Declare. Que faites-vous ?
Une bonne réponseAjouter PtrSafe à chaque Declare, puis reprendre chaque paramètre et chaque valeur de retour : les pointeurs et les handles passent en LongPtr, sinon l'appel compile mais renvoie une valeur tronquée. Les types utilisateur qui contiennent des handles sont corrigés aussi. Pour un parc qui mélange 32 et 64 bits, la compilation conditionnelle avec VBA7 et Win64. Un bon profil se demande aussi si l'appel à l'API Windows sert encore à quelque chose.
Signal d'alerteAjouter PtrSafe partout et s'arrêter là : l'erreur disparaît, les types restent faux. Ou « on réinstalle Office en 32 bits » comme solution durable.
Question 5 · confirmé à senior
Dans quel cas écrivez-vous un module de classe plutôt qu'une série de procédures dans un module standard ?
Une bonne réponseQuand une notion métier réunit des données et des règles (un contrat, une ligne de facture), quand il faut plusieurs instances, ou pour écouter des événements avec WithEvents, par exemple ceux de contrôles créés à l'exécution. La personne cite Implements pour partager une interface entre classes, l'initialisation dans Class_Initialize et le risque des références circulaires, qui empêchent un objet d'être détruit.
Signal d'alerte« Je n'en ai jamais eu besoin » pour un profil senior, ou une confusion entre module de classe et module de feuille ou de formulaire.
Recevez la fiche d'entretien complète en PDF
La fiche pour mener l'entretien de bout en bout, prête à imprimer ou à partager avec le manager.
- 30 questions sur 6 axes, avec la bonne réponse, le signal d'alerte et la relance
- Le niveau visé pour chaque question
- Une mise en situation de 20 minutes et ce qu'on attend du candidat
- La grille d'évaluation de 1 à 4, axe par axe
Recruter un développeur VBA, les questions fréquentes
Quelle différence entre un développeur VBA et un analyste Excel VBA ?
L'analyste construit des reportings : formules, Power Query, tableaux croisés, avec des macros pour automatiser la production. Le développeur VBA écrit des applications que d'autres utilisent tous les jours : bases Access multi-utilisateurs, outils qui pilotent Outlook et Word, accès à SQL Server, diffusion sur des dizaines de postes. Il lui faut des modules de classe, une gestion d'erreurs complète et un code versionné. Pour un poste de reporting, la fiche analyste reporting Excel VBA convient mieux.
Un développeur Excel VBA peut-il reprendre une application Access ?
Le langage est le même, l'environnement change. Access ajoute les formulaires liés à des tables, les requêtes, DAO, le verrouillage entre utilisateurs et la séparation entre interface et données. Un développeur Excel solide s'y met vite s'il connaît déjà le SQL. Demandez-lui comment il gérerait deux personnes qui modifient le même enregistrement : la réponse montre s'il a déjà travaillé sur une base partagée.
Faut-il un test technique pour un développeur VBA ?
Un exercice court en entretien suffit souvent. Donnez une procédure d'une trentaine de lignes avec une requête SQL concaténée, un Declare sans PtrSafe et un objet Excel jamais libéré, puis demandez ce que la personne corrige et dans quel ordre, en commentant à voix haute. En un quart d'heure, vous voyez si elle sait lire du code existant, ce qui occupe la plus grande partie du poste.
VBA a-t-il encore un avenir dans les entreprises ?
Microsoft livre toujours VBA dans les applications Office de bureau, et beaucoup d'outils métier en dépendent. Le cadre se resserre pourtant, avec les macros bloquées par défaut dans les fichiers venus d'internet et un nouvel Outlook qui ne les exécute plus. Un bon développeur VBA connaît ces limites et sait proposer Python, Power Apps ou .NET quand un outil devient critique ou doit servir hors du poste de travail.
Pour structurer vos autres entretiens, consultez aussi nos pages sur les questions d'entretien de recrutement, la méthode de l'entretien structuré et la grille d'évaluation d'entretien.





