SGBDR ACCESS : Programmer des requêtes SQL dans des macros VBA

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).

Continue reading ‘SGBDR ACCESS : Programmer des requêtes SQL dans des macros VBA’ »

MS/ACCESS, VBA : écrire dans un classeur Excel

Le résultat d’une requête SQL est aisément transférable d’ACCESS vers un classeur Excel à l’aide de la commande VBA TransferSpreadsheet.

Exemple :

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, NomReq, Chemin & NomClasseurXL

La syntaxe de cette commande est la suivante : DoCmd.TransferSpreadsheet(TransferType, SpreadsheetType, TableName, FileName, HasFieldNames, Range, UseOA).

Paramètres :

Continue reading ‘MS/ACCESS, VBA : écrire dans un classeur Excel’ »

MS/ACCESS, VBA : créer et supprimer des requêtes

La création et la suppression de requêtes SQL à partir du VBA d’ACCESS s’opèrent respectivement à l’aide des commandes CreateQueryDef et DeleteObject.

Tout d’abord, pour la création, la commande CreateQueryDef dans l’exemple suivant crée une requête nommée par la variable NomReq avec le texte SQL contenu dans la variable TexteReq dans la base de données courante (CurrentDb).

Dim qd As QueryDef
    
Set qd = CurrentDb.CreateQueryDef(NomReq, TexteReq)

Continue reading ‘MS/ACCESS, VBA : créer et supprimer des requêtes’ »

MS/ACCESS, VBA : tester l’existence d’un objet (requête, table…)

Il n’est pas possible de créer deux objets portant le même nom. Aussi avant de créer un objet, il est préférable de s’assurer qu’il n’existe pas déjà. ACCESS gère différentes natures d’objets : requête (Query), table (Table), formulaire (Form)… Le cas qui va être traité ici est celui des requêtes. L’exemple de code fourni ci-après est aisément adaptable à d’autres objets. Pour ce faire, il suffit, par exemple, de remplacer Query par Table pour tester l’existence d’une table.

En synthèse, le code source de la fonction ReqExiste ci-après renvoie « True » (vrai) si l’objet testé existe ou « False » (faux) dans le cas contraire.

'Cette fonction teste l’existence d’une requête nommée dans la variable strReq contenue dans la base de données nommée db
Function ReqExiste(db As DAO.Database, ByVal strReq As String) As Boolean
  Dim req As DAO.QueryDef
  'Parcourt toutes les requêtes de la base « db »
  For Each req In db.QueryDefs
    If req.Name = strReq Then
      'La requête a été trouvée...
      ReqExiste = True
      Exit Function
    End If
  Next
  'La requête n'existe pas...
  ReqExiste = False
End Function

Continue reading ‘MS/ACCESS, VBA : tester l’existence d’un objet (requête, table…)’ »

Accéder à l’environnement de développement VBA d’ACCESS

VBA (pour Visual Basic for Application) est un langage de programmation puissant qui permet d’automatiser des traitements avec les logiciels de la suite Office de Microsoft (EXCEL, ACCESS, WORD…), d’ajouter de nouvelles fonctions à ces logiciels et même de transférer des données d’une application à l’autre (publipostage Word à partir de données Excel ou ACCESS…). Les possibilités offertes par les développements VBA sont sans limite et offrent de nouvelles perspectives à l’utilisateur notamment en matière d’analyse de données.

EDI d'ACCESS

Allié à ACCESS, VBA traite inlassablement des volumes de données conséquents. Continue reading ‘Accéder à l’environnement de développement VBA d’ACCESS’ »