Code VBA pour importer des données Access Table /Query vers Excel

Code VBA pour importer les données d'une table Access vers Excel
Table des matières

Importer un tableau Access vers Excel avec VBA (images et code)

Qu'est-ce que c'est ?Ce code VBA vous permet de télécharger ou d'importer Accès Les données d'un tableau ou d'une requête sont transférées vers Excel en un seul clic.Pourquoi ?Vous pouvez importer des données de tables Access dans Excel sans même ouvrir la base de données Access.

Comment importer des données de tableaux Access dans Excel

Étape 1: Ouvrez le classeur Excel et accédez au générateur de code VBA (Alt + F11) et ouvrez un nouveau module.XmoduleÉtape 2: Copiez et collez le code ci-dessous.
				
					Sous importAccessdata()

Dim cnn As ADODB.Connection

Dim rs As ADODB.Recordset

Dim sQRY As String

Dim strFilePath As String

strFilePath = "C:\NDatabaseFolder\NmyDB.accdb" 'Remplacez 'DatabaseFolder' et 'myDB.accdb' par le chemin d'accès et le nom de votre base de données.

Set cnn = Nouvelle connexion ADODB

Set rs = New ADODB.Recordset

cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0 ;" & _

"Data Source=" & strFilePath & " ;"

sQRY = "SELECT * FROM tblData" 'Remplacez 'tblData' par le nom de la table de votre base de données Access ou par le nom de la requête à partir de laquelle vous souhaitez télécharger les données.

rs.CursorLocation = adUseClient

rs.Open sQRY, cnn, adOpenStatic, adLockReadOnly

Application.ScreenUpdating = False

Sheet1.Range("A1").CopyFromRecordset rs

rs.Close

Set rs = Nothing

cnn.Close

Set cnn = Nothing

Exit Sub

End Sub
				
			

Étape 3: Cliquez sur le bouton Exécuter ou sur F5 (vous pouvez également insérer un bouton/une forme dans la feuille Excel, puis cliquer avec le bouton droit de la souris et assigner cette macro pour qu'elle s'exécute à chaque fois).

Importation d'un tableau Access

Les enregistrements de la base de données Access ont été téléchargés avec succès dans Excel. Ouvrez votre classeur Excel et vérifiez les données.

Remarque : Assurez-vous que l'option "Microsoft ActiveX Data Objects Library" est activée dans l'écran d'accueil. Outils – Références (le numéro utilise la dernière version [6.1 au moment de la publication de cet article]).

Importation d'un tableau AccessÉpingle



Je suis sûr que vous travaillez sur de nombreuses données Excel, MS Access et VBA. Fortement Nous vous recommandons de vous joindre à l'Ultimate Excel VBA Userform avec Access Database ! C'est un investissement qui en vaut la peine ! FAITES-LE MAINTENANT !

Construisez votre propre programme du monde réel, apprenez le vrai Excel VBA (Macros), dépassez les limites d'Excel avec un projet complet.

Image de Anson Antony
Anson Antoine
Anson est un auteur collaborateur et le fondateur de www.askeygeek.com. Sa passion pour l'apprentissage de nouvelles choses l'a conduit à créer askeygeek.com, qui se concentre sur la technologie et les affaires. Avec plus d'une décennie d'expérience dans l'externalisation des processus d'entreprise, la finance et la comptabilité, les technologies de l'information, l'excellence opérationnelle et l'intelligence économique, Anson a travaillé pour des entreprises telles que Genpact, Hewlett Packard, M*Modal et Capgemini, où il a occupé différents postes. En dehors de ses activités professionnelles, il est un cinéphile qui aime passer des heures à regarder et à étudier le cinéma, et il est également cinéaste.

8 réponses

  1. Bonjour, je voulais vérifier si je gardais ma base de données Access dans un lecteur partagé et si je distribuais cette macro excel dans mon organisation, est-ce que cela fonctionnerait ? Je veux que ma macro excel lise certaines valeurs de cette base de données Access et mette à jour certaines variables à l'ouverture d'excel.

    Si Access ne fonctionne pas, puis-je utiliser un autre fichier Excel conservé sur le disque de l'organisation et y accéder au lieu de la base de données ? J'ai essayé avec la méthode d'ouverture de classeur dans ma macro de lire mon excel onedrive qui est partagé par tous dans mon entreprise mais cela n'a pas fonctionné.

  2. J'ai fini par le faire.

    J'utilise 2 variables (textbox1 comme valeur 'currency, format R$0.000,00' et textbox2 comme 'date', format mm/dd/yyyy).

    Code ↓

    '================================================== ===|
    '========================================== Kauê Vaz==|
    '================================================== ===|

    Option explicite

    Cliquez sur Outils, Références et sélectionnez
    ' Bibliothèque Microsoft ActiveX Data Objects 2.0
    Sub getDataFromAccess(strValue, strDate)

    Dim DBFullName As String
    Dim Connect As String, Source As String
    Dim Connection As ADODB.Connection
    Dim Recordset As ADODB.Recordset
    Dim Col As Integer
    Dim mySQLVariable As String
    Dim mySQLVariable_1 As String
    Dim strSQL As String

    mySQLVariable = strValue 'Valeur de la zone de texte 1 (format monétaire R$0.000,00)
    mySQLVariable_1 = strDate 'Valeur de la zone de texte 2 (format de la date mm/jj/aaaa)

    Code SQL
    strSQL = "SELECT * FROM tblDatabase WHERE "
    strSQL = strSQL & " [Valeur] = '" & (mySQLVariable) & "' et " ".
    strSQL = strSQL & " [Date] = '" & (mySQLVariable_1) & "' "

    ' Base de données, sélectionnez votre accès à la base de données
    DBFullName = "C:³Users³Desktop³Databases³BD_PaynotProcess³bd_PaynotProcess.accdb" (nom complet de la base de données)

    ' Ouvrir la connexion
    Set Connection = New ADODB.Connection
    Connect = "Provider=Microsoft.ACE.OLEDB.12.0 ;"
    Connect = Connect & "Data Source=" & DBFullName & " ;"
    Connection.Open ConnectionString:=Connect

    ' Création d'un jeu d'enregistrements
    Set Recordset = New ADODB.Recordset
    Avec jeu d'enregistrements

    ' Recherche de valeurs à l'aide de la variable de code SQL strSQL
    Source = strSQL
    Open Source:=Source, ActiveConnection:=Connection

    Importation de colonnes de la base de données.
    Pour Col = 0 à Recordset.Fields.Count - 1
    Range("A5").Offset(0, Col).Value = Recordset.Fields(Col).Name
    Suivant

    Importation de lignes de la base de données.
    Range("A5").Offset(1, 0).CopyFromRecordset Recordset
    Terminer par

    Set Recordset = Rien
    Connexion.Fermer
    Définir la connexion =

    ActiveSheet.Columns.AutoFit

    Fin du sous-marin

    Salutations

  3. Puis-je importer seulement quelques données ? Filtrer par 2 variables ?
    Exemple :

    X = 13/03
    Y = '122315124'

    Ne reprendre de la base de données d'accès que les lignes qui contiennent ces variables ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Toutes nos félicitations!
Tu l'as fait,
Ne fermez pas !

Accès UberCreate Creator Pro
gratuitement!!!

Cette fenêtre contextuelle ne montrera pas à toi de voir encore!!!

8
Partager avec...