IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Extraire une table access [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    responsable formation
    Inscrit en
    Janvier 2020
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : responsable formation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 75
    Par défaut Extraire une table access
    Bonjour je souhaite extraire les données d une table access par code VBA mais je n'y arrive pas, je souhaiterais avoir le même résultat quand faisant dans excel "donnée,données externes à partir d un fichier access". Voici le début de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     Sub Connexion()
     
        Dim cnx As New ADODB.Connection
        Dim cmd As New ADODB.Command
        Dim rst As New ADODB.Recordset
        Dim resultat()
     
        cnx.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\*****\Desktop\***************.accdb;Persist Security Info=False;"
     
        Set cmd.ActiveConnection = cnx
     
        cmd.CommandType = adCmdTable
        'cmd.CommandText = "Select * From T_Personnel"
        cmd.CommandText = "T_Personnel"
        Set rst = cmd.Execute
        Do Until rst.EOF
        resultat = rst.GetRows
        rst.MoveNext
        'Debug.Print rst("Classement") & " " & rst("Nom") & " " & rst("Prenom")
        Loop
        rst.Requery
     
        Me.Range("A1") = resultat
     
    End Sub
    Merci de votre aide.

  2. #2
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour,

    Si vous souhaitez obtenir le même résultat qu'à l'aide d'une commande "manuelle", pourquoi ne pas utiliser l'enregistreur de macros ?

    De plus, préciser le type d'importation que vous souhaitez (sous forme de tableau, de rapport de TCD, de TCD, etc.) serait d'une grande utilité pour les personnes susceptibles de vous aider.

    Cdt

  3. #3
    Membre confirmé
    Homme Profil pro
    responsable formation
    Inscrit en
    Janvier 2020
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : responsable formation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 75
    Par défaut
    Bonjour, ce que je veux faire c est de récupérer ses données pour par la suite affecter le résultat dans des plages précises dans excel pour réaliser u état comme dans access.

  4. #4
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Pour récupérer toutes les données de la table "T_Personnel" et les stocker dans l'onglet "Extract" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub Extract_Data()
        Dim Conn As New Connection, Rec As New Recordset
        Dim DbPath, Prvd, ConnString, Query As String, i As Integer, nRow As Long
     
        DbPath = "C:\Users\*****\Desktop\***************.accdb"
        Prvd = "Microsoft.ace.OLEDB.12.0;"
        ConnString = "Provider=" & Prvd & "Data Source=" & DbPath
        Query = "SELECT * FROM T_Personnel;"
        Conn.Open ConnString
        Rec.Open Query, Conn
        Application.ScreenUpdating = False
        With ThisWorkbook.Sheets("Extract")
            .Cells.ClearContents
            If (Rec.RecordCount <> 0) Then
                nRow = 2
                If Not Rec.EOF Then
                    For i = 0 To Rec.Fields.Count - 1
                        .Cells(1, i + 1).Value = Rec.Fields.Item(i).Name
                    Next i
                End If
                Do While Not Rec.EOF
                    For i = 0 To Rec.Fields.Count - 1
                        .Cells(nRow, i + 1).Value = Rec.Fields.Item(i).Value
                    Next i
                    DoEvents
                    nRow = nRow + 1
                    Rec.MoveNext
                Loop
            End If
        End With
        Application.ScreenUpdating = True
        Rec.Close
        Conn.Close
    End Sub
    En ajoutant bien sur la référence à "Microsoft ActiveX Data Objects 6.1 Library".

  5. #5
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 579
    Par défaut
    Bonjour,
    Tu penses qu'il nous appartient d'otopcier ton code ou tu vas nous dire ce qui ne vas pas?
    Utilises Range("A1").CopyFromRecordset cn.execute(SQL)

  6. #6
    Membre confirmé
    Homme Profil pro
    responsable formation
    Inscrit en
    Janvier 2020
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : responsable formation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 75
    Par défaut
    Merci Ben_L

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Extraire une valeur d'une table access
    Par othmanepf dans le forum Access
    Réponses: 1
    Dernier message: 25/09/2017, 09h56
  2. Réponses: 8
    Dernier message: 05/03/2012, 15h21
  3. Récupérer les mails Outlook dans une table Access
    Par zerrokooll dans le forum VBA Access
    Réponses: 79
    Dernier message: 07/07/2009, 14h22
  4. extraire les données d'un fichier text vers une table access
    Par djatto dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/09/2008, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo