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 :

Export Exel dans Access (*.accdb) via VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    correspondant informatique du service
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : correspondant informatique du service
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut Export Exel dans Access (*.accdb) via VBA
    Bonjour,

    Je début dans le code VBA pour export Access. J'ai réussi à exporter des données Excel sous Access avec un Access au format *.mdb. En revanche, je ne trouve pas la solution pour export sous accdb.

    Pouvez-vous m'aider?

    Ci-dessous le code fonctionnant

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
          Dim Plage   As Range
          Dim Array1   As Variant
          Dim x   As Variant
          Dim Db1   As Database
          Dim Rs1   As Recordset
     
          ' Ouverture de la base de données Commandes.mdb
     
          Set Db1 = DBEngine.OpenDatabase(Adr_BD & Nom_BD)
     
          ' Ouverture de la table
          ' Un objet Recordset représente les enregistrements d'une table
     
          Set Rs1 = Db1.OpenRecordset(table_BD, dbOpenDynaset)
     
          ' Ecriture des données depuis Excel vers Access
     
     
               With Rs1
     
                   .AddNew
                   .Fields("Nom_BDU") = Cells(2, 2)
                   .Fields("Num_DE") = Cells(3, 2)
                   .Fields("Nom_TSE") = Cells(4, 2)
                   .Fields("Nom_demandeur") = Cells(5, 2)
                   .Fields("Sce_demandeur") = Cells(6, 2)
                   .Fields("NQL") = Cells(7, 2)
                   .Fields("NQI") = Cells(8, 2)
                   .Fields("NQA") = Cells(9, 2)
                   .Fields("NDI") = Cells(10, 2)
                   .Fields("NPQ") = Cells(11, 2)
                   .Fields("NRhC") = Cells(12, 2)
                   .Fields("CQL") = Cells(13, 2)
                   .Fields("CQI") = Cells(14, 2)
                   .Fields("CQA") = Cells(15, 2)
                   .Fields("CDI") = Cells(16, 2)
                   .Fields("CPQ") = Cells(17, 2)
                   .Fields("CRhC") = Cells(18, 2)
                   .Fields("Moyenne") = Cells(19, 2)
                   .Update
     
               End With
     
     
     
          ' Fermeture de la base Commandes.mdb
     
         Db1.Close

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour!
    Je me suis moi-même beaucoup battue avec les imports Excel-Access. Ma solution est sans doute loin d'être idéale, mais voici ce que j'avais fait (peut-être que ça te donnera des idees):

    Dans Excel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub updateAccess()
        Dim acApp As Access.Application
        Set acApp = New Access.Application
        acApp.OpenCurrentDatabase ("Adresse\nom fichier Access.accdb") 'ouvre bdd Access
        acApp.Run ("'adresse\nom fichier access.accdb'!importData")    'appel méthode dans Access
        acApp.CloseCurrentDatabase  'ferme BDD
        Set acApp = Nothing
    End Sub
    Dans Access:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub importData()
        DoCmd.TransferSpreadsheet acImport, , "NomTable", "Adresse\nom fichier Excel", True, "[Nom feuille du classeur]!"
    End Sub

    PS: je vois que tu es nouveau. Bienvenue La prochaine fois que tu as une question concernant VBA, pose-la sur le forum dédié à VBA (une fois que tu es sur le forum Excel, tu peux choisir d'aller plus précisemment vers le forum VBA).

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    correspondant informatique du service
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : correspondant informatique du service
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    Bonjour,

    Merci pour ce retour rapide. et merci pour le conseil.

    Je vais essayer de tester cela cette après-midi.

    J'espère que cela va fonctionner, dans la mesure ou je pousse actuellement des infos d'Excel vers Access et cela pour une partie des utilisateurs sans avoir Access installé sur leurs poste de travail.

    En //, j'ai beaucoup d'utilisateurs, et du coup l'emplacement n'est pas figée.....

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    correspondant informatique du service
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : correspondant informatique du service
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    Bonjour,

    J'ai trouvé ma solution!

    je vous la partage donc :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
        Dim cn As ADODB.Connection, rs As ADODB.Recordset, row As Long
        Set cn = New ADODB.Connection
        cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & _
                "Data Source=" & Adr_BD & Nom_BD & ";"
     
        ' open a recordset
        Set rs = New ADODB.Recordset
        rs.Open table_BD, cn, adOpenKeyset, adLockOptimistic, adCmdTable
     
        'row = 3    ' the start row in the worksheet
        'Do While Not IsEmpty(Worksheets("FeuilleTravail").Range("B" & row))
     
     
            With rs
                .AddNew    ' create a new record
                   .Fields("Nom_BDU") = Sheets("FeuilleTravail").Cells(2, 2)
                   .Fields("Num_DE") = Sheets("FeuilleTravail").Cells(3, 2)
                   .Fields("Nom_TSE") = Sheets("FeuilleTravail").Cells(4, 2)
                   .Fields("Nom_demandeur") = Sheets("FeuilleTravail").Cells(5, 2)
                   .Fields("Sce_demandeur") = Sheets("FeuilleTravail").Cells(6, 2)
                   .Fields("NQL") = Sheets("FeuilleTravail").Cells(7, 2)
                   .Fields("NQI") = Sheets("FeuilleTravail").Cells(8, 2)
                   .Fields("NQA") = Sheets("FeuilleTravail").Cells(9, 2)
                   .Fields("NDI") = Sheets("FeuilleTravail").Cells(10, 2)
                   .Fields("NPQ") = Sheets("FeuilleTravail").Cells(11, 2)
                   .Fields("NRhC") = Sheets("FeuilleTravail").Cells(12, 2)
                   .Fields("CQL") = Sheets("FeuilleTravail").Cells(13, 2)
                   .Fields("CQI") = Sheets("FeuilleTravail").Cells(14, 2)
                   .Fields("CQA") = Sheets("FeuilleTravail").Cells(15, 2)
                   .Fields("CDI") = Sheets("FeuilleTravail").Cells(16, 2)
                   .Fields("CPQ") = Sheets("FeuilleTravail").Cells(17, 2)
                   .Fields("CRhC") = Sheets("FeuilleTravail").Cells(18, 2)
                   .Fields("UET_TSE") = "DEATVR3"
                .Update
            End With
    '        row = row + 1
    '    Loop
     
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       Dim cn As ADODB.Connection, rs As ADODB.Recordset, row As Long
        Set cn = New ADODB.Connection
        cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & _
                "Data Source=" & Adr_BD & Nom_BD & ";"
    SQL ="INSERT INTO toto (Nom_BDU,Num_DE,Nom_TSE,Nom_demandeur,Sce_demandeur,NQL,NQI,NQA,NDI,NPQ,NRhC,CQL,CQI,CQA,CDI,CPQ,CRhC,UET_TSE)"  
    SQL=SQL & " SELECT (Nom_BDU,Num_DE,Nom_TSE,Nom_demandeur,Sce_demandeur,NQL,NQI,NQA,NDI,NPQ,NRhC,CQL,CQI,CQA,CDI,CPQ,CRhC,'DEATVR3' as UET_TSE)"
    SQL=SQL & " FROM [toto$] IN '" & ThisWorkbook.FullName & "'[Excel 12.0;HDR=YES;];"
    cn.execute SQL
    Dernière modification par Invité ; 08/03/2017 à 13h41.

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

Discussions similaires

  1. [AC-2007] lancer une requete avec 2 parametres dans Access 2007 avec VBA
    Par dimis dans le forum VBA Access
    Réponses: 8
    Dernier message: 29/07/2009, 14h45
  2. [XL-2003] Lien hypertexte dans Mail généré via VBA excel
    Par jerem7w dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/06/2009, 16h12
  3. [AC-2007] Problème de publipostage entre Access & Word via VBA
    Par sebaci972 dans le forum VBA Access
    Réponses: 0
    Dernier message: 12/05/2009, 20h10
  4. Inserer une formule (Longue) dans une cellule via VBA
    Par alex830001 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/01/2009, 12h28
  5. [A97] : Intégration de data dans une table via VBA
    Par JeremieT dans le forum VBA Access
    Réponses: 11
    Dernier message: 22/01/2008, 14h11

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