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

VBA Access Discussion :

Importer des fichiers Excel avec plusieurs feuilles [AC-2016]


Sujet :

VBA Access

  1. #21
    Futur Membre du Club
    Homme Profil pro
    impiegato
    Inscrit en
    mai 2019
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : impiegato

    Informations forums :
    Inscription : mai 2019
    Messages : 79
    Points : 7
    Points
    7
    Par défaut
    Bonsoir
    oui se vrai Toutes les feuilles sont parcourues et toutes les lignes sont importées dans la tbl
    mais la colonne cod soc doit rapporter 4400,4401,4403 etc etc
    je joins un fichier avec tbl comme il se doit


    Citation Envoyé par hyperion13 Voir le message
    sérieusement, cela fait un bail que j'ai compris qu'il fallait importer toutes les feuilles !
    le fichier *.xslx que vous avez déposé ne contient que 11 feuilles.
    pour autant la sub() du Post#15 fonctionne. Toutes les feuilles sont parcourues et toutes les lignes sont importées dans la tbl !
    voir img.
    le compte 194 lignes !
    Et n'oubliez pas de corriger les en-têtes de la Col F (indirizzo versus indrizzo) !
    Fichiers attachés Fichiers attachés

  2. #22
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    octobre 2007
    Messages
    3 934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 934
    Points : 6 053
    Points
    6 053
    Par défaut
    Euh ...
    Et si c'est le champ ID qui vous pose problème, vous le supprimer de la tbl !
    Citation Envoyé par lourid Voir le message
    ...mais la colonne cod soc doit rapporter 4400,4401,4403 etc etc ...
    Images attachées Images attachées  
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Si la réponse est satisfaisante, alors 1 et n'oubliez pas de clôturer le sujet en cliquant sur

  3. #23
    Futur Membre du Club
    Homme Profil pro
    impiegato
    Inscrit en
    mai 2019
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : impiegato

    Informations forums :
    Inscription : mai 2019
    Messages : 79
    Points : 7
    Points
    7
    Par défaut
    no même si je supprime l'id ,ça me ramène les données non réparties par cod soc
    le code soc change non et pour toutes les lignes 4400
    j'espère que j'ai été clair

    Citation Envoyé par hyperion13 Voir le message
    Euh ...
    Et si c'est le champ ID qui vous pose problème, vous le supprimer de la tbl !

  4. #24
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    octobre 2007
    Messages
    3 934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 934
    Points : 6 053
    Points
    6 053
    Par défaut
    re,
    désolé, mais je ne comprends plus rien ! Et je ne dois pas être le seul ici !
    les Codice Soc sont tous présents !
    Images attachées Images attachées  
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Si la réponse est satisfaisante, alors 1 et n'oubliez pas de clôturer le sujet en cliquant sur

  5. #25
    Membre éclairé
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    448
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : juillet 2006
    Messages : 448
    Points : 718
    Points
    718
    Par défaut
    Citation Envoyé par lourid Voir le message
    Bonsoir
    oui se vrai Toutes les feuilles sont parcourues et toutes les lignes sont importées dans la tbl
    mais la colonne cod soc doit rapporter 4400,4401,4403 etc etc
    je joins un fichier avec tbl comme il se doit
    Heu .... Es-tu bien conscient que dans une base de données, l'ordre des lignes n'a aucune importance, et ne doit pas en avoir ?

    C'est le boulot des requêtes de faire du tri, des filtres, des regroupement ect ect ....

  6. #26
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    octobre 2007
    Messages
    3 934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 934
    Points : 6 053
    Points
    6 053
    Par défaut
    @deedolith
    Si Codice Soc doit être importé dans l'ordre, autant trier les feuilles avant (L35/L42) !

    EDIT : (L35/L42) ne servent à rien, car même si les feuilles ne sont pas dans un ordre ASC/DESC, l'importation se fait en ASC !
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Option Explicit
    #Const IsLateBinding = True
     
    Private Sub btnImportXL_Click()
    On Error GoTo btnImportXL_Err
     
    #If IsLateBinding Then
        Dim xlApp As Object
        Dim xlWbk As Object
        Dim xlWst As Object
        Set xlApp = CreateObject("Excel.Application")
    #Else
        'Early binding Nécessite Microsoft Excel xx.x Object Library
        Dim xlApp As Excel.Application
        Dim xlWbk As Excel.Workbook
        Dim xlWst As Excel.Worksheet
        Set xlApp = New Excel.Application
    #End If
     
    Dim strFilePath As String, strTableName As String, strSheetName As String
    Dim strImportAddress As String, strImportSheetAddress As String
    Dim shtCount As Long, i As Long, j As Long, lastRow As Long, lastCol As Long
    Dim rngImport As Range
    Dim StartTime As Double
     
    strFilePath = "C:\Users\Desktop\backup\Nuova cartella\PatInail rev 3.xlsx"
    strTableName = "PAT"
     
    Set xlWbk = xlApp.Workbooks.Open(strFilePath)
     
    shtCount = xlWbk.Worksheets.Count
     
    StartTime = Timer
     
    If shtCount = 1 Then Exit Sub
    For i = 1 To shtCount
        For j = 1 To shtCount - 1
            If xlWbk.Worksheets(j).Name > xlWbk.Worksheets(j + 1).Name Then
                xlWbk.Worksheets(j).Move After:=xlWbk.Worksheets(j + 1)
            End If       
        Next j
    Next i
     
    For i = 1 To shtCount
        Set xlWst = xlWbk.Worksheets(xlWbk.Worksheets(i).Name)
        strSheetName = xlWst.Name
        With xlWst
            lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
            lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
            Set rngImport = .Range(.Cells(1, 1), .Cells(lastRow, lastCol))
            strImportAddress = WorksheetFunction.Substitute(rngImport.Address, "$", "")
            strImportSheetAddress = strSheetName & "!" & strImportAddress
            Call DoCmd.TransferSpreadsheet(acImport, 10, strTableName, strFilePath, True, strImportSheetAddress)
        End With
    Next i
     
    MsgBox "durée du traitement: " & Timer - StartTime & " secondes"
     
    btnImportXL_Exit:
        On Error Resume Next
        Set xlWst = Nothing
        xlWbk.Close False
        Set xlWbk = Nothing
        xlApp.Quit
        Set xlApp = Nothing
        Exit Sub
    btnImportXL_Err:
        MsgBox Err.Description, , "Erreur " & Err.Number
        Resume btnImportXL_Exit
    End Sub
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Si la réponse est satisfaisante, alors 1 et n'oubliez pas de clôturer le sujet en cliquant sur

  7. #27
    Futur Membre du Club
    Homme Profil pro
    impiegato
    Inscrit en
    mai 2019
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : impiegato

    Informations forums :
    Inscription : mai 2019
    Messages : 79
    Points : 7
    Points
    7
    Par défaut
    ok maintenant et parfait ça marche.
    Je demande une dernière chose comment fermer excel reste ouvert

    Citation Envoyé par hyperion13 Voir le message
    @deedolith
    Si Codice Soc doit être importé dans l'ordre, autant trier les feuilles avant (L35/L42) !

    EDIT : (L35/L42) ne servent à rien, car même si les feuilles ne sont pas dans un ordre ASC/DESC, l'importation se fait en ASC !
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Option Explicit
    #Const IsLateBinding = True
     
    Private Sub btnImportXL_Click()
    On Error GoTo btnImportXL_Err
     
    #If IsLateBinding Then
        Dim xlApp As Object
        Dim xlWbk As Object
        Dim xlWst As Object
        Set xlApp = CreateObject("Excel.Application")
    #Else
        'Early binding Nécessite Microsoft Excel xx.x Object Library
        Dim xlApp As Excel.Application
        Dim xlWbk As Excel.Workbook
        Dim xlWst As Excel.Worksheet
        Set xlApp = New Excel.Application
    #End If
     
    Dim strFilePath As String, strTableName As String, strSheetName As String
    Dim strImportAddress As String, strImportSheetAddress As String
    Dim shtCount As Long, i As Long, j As Long, lastRow As Long, lastCol As Long
    Dim rngImport As Range
    Dim StartTime As Double
     
    strFilePath = "C:\Users\Desktop\backup\Nuova cartella\PatInail rev 3.xlsx"
    strTableName = "PAT"
     
    Set xlWbk = xlApp.Workbooks.Open(strFilePath)
     
    shtCount = xlWbk.Worksheets.Count
     
    StartTime = Timer
     
    If shtCount = 1 Then Exit Sub
    For i = 1 To shtCount
        For j = 1 To shtCount - 1
            If xlWbk.Worksheets(j).Name > xlWbk.Worksheets(j + 1).Name Then
                xlWbk.Worksheets(j).Move After:=xlWbk.Worksheets(j + 1)
            End If       
        Next j
    Next i
     
    For i = 1 To shtCount
        Set xlWst = xlWbk.Worksheets(xlWbk.Worksheets(i).Name)
        strSheetName = xlWst.Name
        With xlWst
            lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
            lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
            Set rngImport = .Range(.Cells(1, 1), .Cells(lastRow, lastCol))
            strImportAddress = WorksheetFunction.Substitute(rngImport.Address, "$", "")
            strImportSheetAddress = strSheetName & "!" & strImportAddress
            Call DoCmd.TransferSpreadsheet(acImport, 10, strTableName, strFilePath, True, strImportSheetAddress)
        End With
    Next i
     
    MsgBox "durée du traitement: " & Timer - StartTime & " secondes"
     
    btnImportXL_Exit:
        On Error Resume Next
        Set xlWst = Nothing
        xlWbk.Close False
        Set xlWbk = Nothing
        xlApp.Quit
        Set xlApp = Nothing
        Exit Sub
    btnImportXL_Err:
        MsgBox Err.Description, , "Erreur " & Err.Number
        Resume btnImportXL_Exit
    End Sub

  8. #28
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    octobre 2007
    Messages
    3 934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 934
    Points : 6 053
    Points
    6 053
    Par défaut
    re,
    en L56 ajoutez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xlApp.ActiveWorkbook.Close Savechanges:=False ' ou True !
    xlApp.Quit
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Si la réponse est satisfaisante, alors 1 et n'oubliez pas de clôturer le sujet en cliquant sur

  9. #29
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    novembre 2004
    Messages
    7 829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : novembre 2004
    Messages : 7 829
    Points : 13 207
    Points
    13 207
    Par défaut
    bonsoir,
    bonne année
    Citation Envoyé par hyperion13 Voir le message
    re,
    en L56 ajoutez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xlApp.ActiveWorkbook.Close Savechanges:=False ' ou True !
    xlApp.Quit
    la commande Quit existe déjà en ligne 64 et, sauf preuve du contraire, le code y passe après le Msgbox, c'est donc certainement une instance créée par ailleurs qui n'a pas été fermée correctement (peut-être lors de la phase de tests du code ?)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  10. #30
    Futur Membre du Club
    Homme Profil pro
    impiegato
    Inscrit en
    mai 2019
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : impiegato

    Informations forums :
    Inscription : mai 2019
    Messages : 79
    Points : 7
    Points
    7
    Par défaut
    bonjour e bonne année
    ok résolu

    Citation Envoyé par tee_grandbois Voir le message
    bonsoir,
    bonne année
    la commande Quit existe déjà en ligne 64 et, sauf preuve du contraire, le code y passe après le Msgbox, c'est donc certainement une instance créée par ailleurs qui n'a pas été fermée correctement (peut-être lors de la phase de tests du code ?)

  11. #31
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    7 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2004
    Messages : 7 875
    Points : 18 516
    Points
    18 516
    Billets dans le blog
    38
    Par défaut
    Bonsoir à tous,

    Pour info, si Excel est déjà ouvert on peut aussi tenter de récupérer l'instance de l'application Excel avec un horrible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    On Error Resume Next   
    Set xlApp = Getobject(, "Excel.Application")
    ...
    https://learn.microsoft.com/fr-fr/of...bject-function

    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Comment générer un fichier Excel avec plusieurs feuilles ?
    Par sinoun dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 15/03/2018, 16h16
  2. [POI] Importer fichier Excel avec plusieurs feuilles
    Par ninoch07 dans le forum Documents
    Réponses: 9
    Dernier message: 10/02/2015, 10h59
  3. importation des fichiers excel avec jee
    Par soon13 dans le forum Développement
    Réponses: 1
    Dernier message: 10/01/2011, 18h07
  4. Créer un fichier excel avec plusieurs feuilles à partir d'un fichier html
    Par yuukuari dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/12/2009, 17h07
  5. Réponses: 4
    Dernier message: 12/05/2009, 13h21

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