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

Access Discussion :

Importer chaque onglet d’un fichier Excel comme un « record » dans accès [AC-2010]


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 33
    Points : 12
    Points
    12
    Par défaut Importer chaque onglet d’un fichier Excel comme un « record » dans accès
    Voilà j’ai un fichier avec 60 onglet, chaque onglet représente un record à importer dans accès.. donc tout les onglets ( qui sont tous identique) ont 15 informations, ces 15 informations redevrait apparaitre dans un champ du même « record ».( un record avec 15 champs). qq’un peut me donner un truc pour importer ça dans accès automatiquement? Je dois refaire ca chaque mois. Gros merci

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Si j'ai bien compris, tu as :
    1- Un fichier Excel avec 60 onglets.
    2- Chaque onglet contient "obligatoirement" une ligne avec 15 colonnes contenant des informations
    3- Tu veux importer ces "données" dans une table Access avec 15 champs et les 60 "enregistrements".

    Est-ce bien cela ?
    Tu as des débuts de solution à ta problématique dans les discussions :
    - http://www.developpez.net/forums/d76...s-vers-access/
    - http://www.developpez.net/forums/d76...-nom-l-onglet/

    Il faut passer par vba pour faire une boucle et intégrer les onglets venant d'être importés dans une table définitive.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Non pas vraiment, mes info sont un peu partout dans mon onglet, mais même si je me ramasse avec 70 champs, ça ne me dérange pas, je vais juste utiliser ceux que j'ai besoin dans ma table/raquette

    en gros exemple:
    onglet 1: a1=martin b22=34 b78=montreal
    onglet 2: a1=patrick b22=55 b78=rigaud

    je voudrais comme résultat dans 1 table table
    1er enregistrement : 3 champs : martin;34;montreal
    2e enregistrement : 3 champs : patrick;55;rigaud

    merci




    Citation Envoyé par madefemere Voir le message
    Bonjour,

    Si j'ai bien compris, tu as :
    1- Un fichier Excel avec 60 onglets.
    2- Chaque onglet contient "obligatoirement" une ligne avec 15 colonnes contenant des informations
    3- Tu veux importer ces "données" dans une table Access avec 15 champs et les 60 "enregistrements".

    Est-ce bien cela ?
    Tu as des débuts de solution à ta problématique dans les discussions :
    - http://www.developpez.net/forums/d76...s-vers-access/
    - http://www.developpez.net/forums/d76...-nom-l-onglet/

    Il faut passer par vba pour faire une boucle et intégrer les onglets venant d'être importés dans une table définitive.

    Cordialement,

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour bibimtl2x,

    Voici un code qui te permet de parcourir les différentes feuilles d'un fichier Excel et d'en importer différentes cellules.
    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
    Option Compare Database
    Option Explicit
     
    Private Sub parcourirExcel()
        'Déclaration des variables nécessaires
        'Dans outils tu dois avoir la référence Excel de cocher
        Dim db As DAO.Database: Set db = CurrentDb
        Dim rst As DAO.Recordset
        Dim strSQL As String
        Dim xl As Excel.Application
        Dim wbk As Excel.Workbook
        Dim i As Long
        'On ouvre un record set
        strSQL = "SELECT T_Table.LeNom, T_Table.LeChiffre, T_Table.LaVille FROM T_Table;"
        Set rst = db.OpenRecordset(strSQL)
        'On ouvre Excel
        Set xl = New Excel.Application
        With xl
            Set wbk = .Workbooks.Open("C:\LeCheminComplet\LeNomComplet.xlsx") 'A modifier pour récupérer le bon fichier
            With wbk
                For i = 1 To .Sheets.Count 'On parcours les différentes feuilles
                    rst.AddNew 'On insère les données dans un record
                        rst("LeNom") = .Sheets(i).Cells(1, 1)
                        rst("LeChiffre") = .Sheets(i).Cells(2, 22)
                        rst("LaVille") = .Sheets(i).Cells(2, 78)
                    rst.Update
                Next i
            End With
        End With
        'Libération des objets
        Set xl = Nothing
        Set wbk = Nothing
        Set rst = Nothing
        Set db = Nothing
     
    End Sub
    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Robert1957 Voir le message
    Bonjour bibimtl2x,

    Voici un code qui te permet de parcourir les différentes feuilles d'un fichier Excel et d'en importer différentes cellules.
    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
    Option Compare Database
    Option Explicit
     
    Private Sub parcourirExcel()
        'Déclaration des variables nécessaires
        'Dans outils tu dois avoir la référence Excel de cocher
        Dim db As DAO.Database: Set db = CurrentDb
        Dim rst As DAO.Recordset
        Dim strSQL As String
        Dim xl As Excel.Application
        Dim wbk As Excel.Workbook
        Dim i As Long
        'On ouvre un record set
        strSQL = "SELECT T_Table.LeNom, T_Table.LeChiffre, T_Table.LaVille FROM T_Table;"
        Set rst = db.OpenRecordset(strSQL)
        'On ouvre Excel
        Set xl = New Excel.Application
        With xl
            Set wbk = .Workbooks.Open("C:\LeCheminComplet\LeNomComplet.xlsx") 'A modifier pour récupérer le bon fichier
            With wbk
                For i = 1 To .Sheets.Count 'On parcours les différentes feuilles
                    rst.AddNew 'On insère les données dans un record
                        rst("LeNom") = .Sheets(i).Cells(1, 1)
                        rst("LeChiffre") = .Sheets(i).Cells(2, 22)
                        rst("LaVille") = .Sheets(i).Cells(2, 78)
                    rst.Update
                Next i
            End With
        End With
        'Libération des objets
        Set xl = Nothing
        Set wbk = Nothing
        Set rst = Nothing
        Set db = Nothing
     
    End Sub
    Bonne journée

    Merci pour la réponse ( désolé pour le délais j'ai du tout réinstaller windows)
    chu pas trop connaissant dans le VBA, j'ai bien tenté de mettre votre code sur exécuter sur un bouton de formulaire mais ça bogue à :
    Dim xl As Excel.Application

    le message reçu est : " Erreur de compilation : type défini par l'utilisateur non défini"
    j'utilise office 2010 sous windows 10

    merci

  6. #6
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour bibimtl2x,

    Dans l'éditeur VBA il faut cocher la référence comme suit:
    Nom : Reference.PNG
Affichages : 574
Taille : 55,4 Ko

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Robert1957 Voir le message
    Bonjour bibimtl2x,

    Dans l'éditeur VBA il faut cocher la référence comme suit:
    Nom : Reference.PNG
Affichages : 574
Taille : 55,4 Ko

    Bonne journée
    Wow ,merci c'est vraiment en bonne voie grâce a toi
    3 tites question:
    1) : est possible que le nom de l'onglet soit importer en même temps dans un des champs de mon enregistrement?
    2) : c,est quoi le code pour que le chemin d'accès a mon fichier excel n'a aps de chemin si je met le fichier excel dans le même répertoire que ma base de donné? comme les employés vont l’avoir dans différent répertoire..? ex: Set wbk = .Workbooks.Open("import.xls") ( mais directement comme ça, ça marche pas, j'ai essayer .\import.xls ou ..\import.xls mais sans résultat
    3) un bug bisard une fois que j'ai importer les donnes dans mon fichier accès je n'arrive plus a ouvrir le fichier excel? ça ne fais que flasher et rien, si je reclik dessus il veux l’ouvrir mais en "read only" comme si il était déjà ouvert

    merci

    au cas j'ai mis une photo de mes choix de mes "références" Nom : acces.jpg
Affichages : 312
Taille : 54,9 Ko

  8. #8
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour bibimtl2x,

    Voici le code corrigé pour tes demandes:
    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
    Private Sub parcourirExcel()
        'Déclaration des variables nécessaires
        'Dans outils tu dois avoir la référence Excel de cocher
        Dim db As DAO.Database: Set db = CurrentDb
        Dim rst As DAO.Recordset
        Dim strSQL As String
        Dim xl As Excel.Application
        Dim wbk As Excel.Workbook
        Dim i As Long
        'On ouvre un record set
        strSQL = "SELECT T_Table.LeNom, T_Table.LeChiffre, T_Table.LaVille, T_Table.OngletExcel FROM T_Table;"
        Set rst = db.OpenRecordset(strSQL)
        'On ouvre Excel
        Set xl = New Excel.Application
        With xl
            Set wbk = .Workbooks.Open(CurrentProject.Path & "\import.xls")  'Code qui répond à la demande # 2
            With wbk
                For i = 1 To .Sheets.Count 'On parcours les différentes feuilles
                    rst.AddNew 'On insère les données dans un record
                        rst("LeNom") = .Sheets(i).Cells(1, 1)
                        rst("LeChiffre") = .Sheets(i).Cells(2, 22)
                        rst("LaVille") = .Sheets(i).Cells(2, 78)
                        rst("OngletExcel") = .Worksheets(i).Name 'Code qui répond à la demande # 1
                    rst.Update
                Next i
            End With
        End With
        'Libération des objets
        xl.Quit 'Code qui répond à la demande # 3
        Set xl = Nothing
        Set wbk = Nothing
        Set rst = Nothing
        Set db = Nothing
     
    End Sub
    # 1 à la ligne 23
    # 2 à la ligne 16
    # 3 à la ligne 29

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Robert1957 Voir le message
    Bonjour bibimtl2x,

    Voici le code corrigé pour tes demandes:
    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
    Private Sub parcourirExcel()
        'Déclaration des variables nécessaires
        'Dans outils tu dois avoir la référence Excel de cocher
        Dim db As DAO.Database: Set db = CurrentDb
        Dim rst As DAO.Recordset
        Dim strSQL As String
        Dim xl As Excel.Application
        Dim wbk As Excel.Workbook
        Dim i As Long
        'On ouvre un record set
        strSQL = "SELECT T_Table.LeNom, T_Table.LeChiffre, T_Table.LaVille, T_Table.OngletExcel FROM T_Table;"
        Set rst = db.OpenRecordset(strSQL)
        'On ouvre Excel
        Set xl = New Excel.Application
        With xl
            Set wbk = .Workbooks.Open(CurrentProject.Path & "\import.xls")  'Code qui répond à la demande # 2
            With wbk
                For i = 1 To .Sheets.Count 'On parcours les différentes feuilles
                    rst.AddNew 'On insère les données dans un record
                        rst("LeNom") = .Sheets(i).Cells(1, 1)
                        rst("LeChiffre") = .Sheets(i).Cells(2, 22)
                        rst("LaVille") = .Sheets(i).Cells(2, 78)
                        rst("OngletExcel") = .Worksheets(i).Name 'Code qui répond à la demande # 1
                    rst.Update
                Next i
            End With
        End With
        'Libération des objets
        xl.Quit 'Code qui répond à la demande # 3
        Set xl = Nothing
        Set wbk = Nothing
        Set rst = Nothing
        Set db = Nothing
     
    End Sub
    # 1 à la ligne 23
    # 2 à la ligne 16
    # 3 à la ligne 29

    Bonne journée
    Nom : table.jpg
Affichages : 274
Taille : 30,4 Ko



    Pour commencer merci beaucoup pour le temps que vous passez à mon problème 

    Maintenant je reçois le message suivant :
    Je reçois le message d’erreur suivant :
    Erreur d’exécution 3061
    Trop peu de paramètres 1 attendu

    Pour bien comprendre, j’ai mi les bon champs dans le code soit :
    ("Cie") = pour le champs : D4
    ("compte") = pour le champs : D5
    ("ajustéavant") = pour le champs :E55
    ("ajustéaprès") = pour le champs :K55
    ("imputé") = pour le champs :K56
    ("àcrédité") = pour le champs :K57

    Pour garder simple ma table s’appelle : T_table
    Voir la photo pour voir ma table

    Et voici le code que j’ai tenté de programmer avec tes infos :


    Private Sub Commande7_Click()

    'Déclaration des variables nécessaires
    'Dans outils tu dois avoir la référence Excel de cocher
    Dim db As DAO.Database: Set db = CurrentDb
    Dim rst As DAO.Recordset
    Dim strSQL As String
    Dim xl As Excel.Application
    Dim wbk As Excel.Workbook
    Dim i As Long
    'On ouvre un record set
    strSQL = "SELECT T_Table.Cie, T_Table.compte, T_Table.ajustéavant, T_Table.ajustéaprès, T_Table.imputé, T_Table.àcrédité, T_Table.OngletExcel FROM T_Table;"
    Set rst = db.OpenRecordset(strSQL)
    'On ouvre Excel
    Set xl = New Excel.Application
    With xl
    Set wbk = .Workbooks.Open(CurrentProject.Path & "\import.xls") 'Code qui répond à la demande # 2
    With wbk
    For i = 1 To .Sheets.Count 'On parcours les différentes feuilles
    rst.AddNew 'On insère les données dans un record
    rst("Cie") = .Sheets(i).Cells(4, 4)
    rst("compte") = .Sheets(i).Cells(4, 5)
    rst("ajustéavant") = .Sheets(i).Cells(5, 55)
    rst("ajustéaprès") = .Sheets(i).Cells(11, 55)
    rst("imputé") = .Sheets(i).Cells(11, 56)
    rst("àcrédité") = .Sheets(i).Cells(11, 57)
    rst("OngletExcel") = .Worksheets(i).Name 'Code qui répond à la demande # 1
    rst.Update
    Next i
    End With
    End With
    'Libération des objets
    xl.Quit 'Code qui répond à la demande # 3
    Set xl = Nothing
    Set wbk = Nothing
    Set rst = Nothing
    Set db = Nothing

    End Sub

  10. #10
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour bibimtl2x,

    La première chose que je vois est l'absence du champ "OngletExcel" dans T_Table.

    Si ce n'est pas le problème, il faudrait que tu spécifies à quel endroit dans le code tu as ce message d'erreur.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Robert1957 Voir le message
    Bonjour bibimtl2x,

    La première chose que je vois est l'absence du champ "OngletExcel" dans T_Table.

    Si ce n'est pas le problème, il faudrait que tu spécifies à quel endroit dans le code tu as ce message d'erreur.

    Bonne journée
    Gros merci, tout semble beau maintenant, oui en effet j'avais pas pensé ajouter le champs "OngletExcel" dans T_Table mais après ça importait seulement le 1er champs, de chaque onglet j'ai changer cell par range et ça réglé le tout.. encore une fois un gros merci

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/05/2008, 13h49
  2. Réponses: 5
    Dernier message: 12/08/2007, 15h33
  3. Importer et garder présentation fichier Excel
    Par guiguilive dans le forum Access
    Réponses: 3
    Dernier message: 31/05/2007, 14h10
  4. Réponses: 2
    Dernier message: 05/09/2006, 21h14
  5. [VBA-E]Importer des données de fichiers excel fermés
    Par bart64 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/04/2006, 11h35

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