Les requêtes SQL remplissent de nombreuses tâches concourant à l’analyse de données. Ces requêtes peuvent être utilement programmées en VBA. Cette pratique permet à la fois d’automatiser l’exécution successive de plusieurs requêtes et de modifier les requêtes à la volée pour les adapter en fonction des circonstances précises (dates, comptes, entités…).
'Mouvements sur comptes cessions immo NomReq = "MvtCessImmo" TexteReq = "SELECT * FROM " & NomTableEcritures & " WHERE LEFT(Compte,3)='675' OR LEFT(Compte,3)='775' ORDER BY Affaire, DateEcriture" ExéReq
Dans le cadre d’un projet d’analyse d’écritures comptables (mise en œuvre d’un programme de supervision des comptabilités d’un groupe de sociétés), je suis en train de réfléchir à la définition de traitements automatisés à l’aide d’ Access en remplacement d’Excel (ce projet reprend les grandes lignes du programme d’analyse d’écritures M/ATAC programmé en VBA sur Excel). En effet, le volume d’écritures comptables du groupe dépasse allègrement le million de lignes (limite actuelle d’Excel) pour atteindre environ cinq millions de lignes annuelles. Access apparaît donc comme une solution plus adaptée pour traiter de tels volumes de données (sa limite étant pour sa part de 2 Gigaoctets par base de données).
A titre d’exemple, le programme ci-après, lancé à partir de la procédure Export_XL, exécute des requêtes SQL (procédure ExéReq) sur des écritures comptables extraites du DMS DCSnet et envoie leur résultat dans des onglets d’un classeur Excel (Export_Req.xlsx).
Ainsi, la requête intitulée “MvtCessImmo” sélectionne (SELECT) tous les champs (*) de la table Ecritures (FROM ” & NomTableEcritures) pour lesquels les numéros de compte commencent pas 675x (WHERE LEFT(Compte,3)=’675′) ou 775x. Le résultat de cette requête est trié par société et par date d’écriture (ORDER BY Affaire, DateEcriture).
Option Compare Database
Option Explicit
Dim NomClasseurXL As String
Dim NomReq As String
Dim TexteReq As String
Const NomTableEcritures = "EcrituresDCS"
Const Chemin = "C:\Users\COLDIR01\Desktop\DOSSIERS BR\COMPTES\ANALYSE DES COMPTES\ESSAI IMPORT EXPORT\"
Const DossierSource = "Source DCS EXPORT 2018 AU 20072018\"
Sub ExéReq()
Dim qd As QueryDef
'Si la requête existe déjà, on l'efface
If ReqExiste(CurrentDb, NomReq) Then DoCmd.DeleteObject acQuery, NomReq
'Création de la requête
Set qd = CurrentDb.CreateQueryDef(NomReq, TexteReq)
'Transfert du résultat de la requête vers Excel
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, NomReq, Chemin & NomClasseurXL
'Suppression de la requête
DoCmd.DeleteObject acQuery, NomReq
End Sub
Sub Export_XL()
NomClasseurXL = "Export_Req.xlsx"
'Mouvements sur comptes 10x -> hors A_NOUVEAUX
NomReq = "Mvt10x"
TexteReq = "SELECT * FROM " & NomTableEcritures & " WHERE LEFT(Compte,3)='106' AND [Type de compte]='GENERAUX' AND [Type de journal]<>'N'"
ExéReq
'Mouvements sur comptes pénalités
NomReq = "MvtPénalités"
TexteReq = "SELECT * FROM " & NomTableEcritures & " WHERE LEFT(Compte,4)='6712'"
ExéReq
'Mouvements sur comptes cessions immo
NomReq = "MvtCessImmo"
TexteReq = "SELECT * FROM " & NomTableEcritures & " WHERE LEFT(Compte,3)='675' OR LEFT(Compte,3)='775' ORDER BY Affaire, DateEcriture"
ExéReq
End Sub
Explications sur le code-source :
- La procédure Export_XL définit les requêtes (variable TexteReq) à exécuter successivement par la procédure ExéReq ;
- La procédure ExéReq effectue les tâches suivantes :
- teste si la requête existe déjà dans la base de données et dans ce cas l’efface (DeleteObject) ;
- crée la requête (CreateQueryDef) ;
- transfère le résultat de la requête dans un classeur Excel (TransferSpreadsheet).
Approfondir le sujet : Maîtriser ACCESS / Maîtriser le langage VBA / Maîtriser le langage de requête SQL / Analyse de données
Derniers articles parBenoît RIVIERE (voir tous)
- Analyse des données comptables (FEC) : analyse de la conformité comptable des transactions et de leur dénouement - dimanche 23 novembre 2025
- L’AMF et l’AFA appellent à la vigilance sur le risque de corruption par des réseaux criminels de personnes ayant accès à des informations privilégiées - lundi 4 août 2025
- Détecter les inversions HT/TVA avec ANA-FEC2 - jeudi 31 juillet 2025
- Analyse de FEC en ligne avec ANA-FEC2 (manuel d’utilisation) - mardi 29 juillet 2025
- Rapport AFA 2024 : les contrôles comptables à ne pas négliger - samedi 5 juillet 2025


