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 :

Pb Importation de fichiers Excel dans Access


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut Pb Importation de fichiers Excel dans Access
    Bonjour,
    J'importe dans une base access des fichiers excel situés sur un répertoire.
    Le programme me fait bien l'import des données dans ma base access, simplement lors du traitement de
    plusieurs fichiers le programme bug en ouvrant la fenêtre suivante:

    Fichier désormais disponible
    "toto.xls" est à présent disponible pour modification
    Ouvrez le fichier en lecture-écriture pour le modifier


    Je suis alors obligé de tuer les processus excel pour retrouver un état normal
    quelqu'un aurait-il une idée ???
    D'avance merci

    ci joint 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
    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
    Sub ImportAllFiles()
     
        'Supprimer enreg table T_Import_Brut
        DoCmd.RunSQL "DELETE FROM TImportTable1"
        DoCmd.RunSQL "DELETE FROM TImportTable2"
        DoCmd.RunSQL "DELETE FROM TImportTable3"
        DoCmd.RunSQL "DELETE FROM TImportTable4"
        DoCmd.RunSQL "DELETE FROM TImportTable5"
        DoCmd.RunSQL "DELETE FROM TBTable6"
     
        Dim strPathToFiles As String
        Dim xlAppl As Excel.Application
        Dim wb As Excel.Workbook
        Dim onglet As String
        Dim ws As Excel.Worksheet
        Dim Repertoire As String, Fichier As String
     
        Repertoire = "C:\documents and Settings\Import\"
     
        Fichier = Dir(Repertoire & "*.xls")
     
        Do While Fichier <> ""
     
        strPathToFiles = Repertoire & Fichier
     
        Set xlAppl = CreateObject("Excel.Application")
     
        Set wb = xlAppl.Workbooks.Open(strPathToFiles)
     
     
            For Each ws In wb.Worksheets
                If ws.Visible = True Then
                    onglet = ws.Name
     
                    If onglet = "TestIndicateurs" Then
                        ' transfert vers table T_Import_Brut
                        DoCmd.TransferSpreadsheet acImport, 8, "TImportTable1", strPathToFiles, False, onglet & "!H1:L201"
                        DoCmd.TransferSpreadsheet acImport, 8, "TImportTable2", strPathToFiles, False, onglet & "!H202:L291"
                        DoCmd.TransferSpreadsheet acImport, 8, "TImportTable3", strPathToFiles, False, onglet & "!H292:L328"
                        DoCmd.TransferSpreadsheet acImport, 8, "TImportTable4", strPathToFiles, False, onglet & "!H338:M344"
                        DoCmd.TransferSpreadsheet acImport, 8, "TImportTable5", strPathToFiles, False, onglet & "!H345:L352"
     
     
                    ElseIf onglet = "TransposeB" Then
     
                        ' transfert vers table T_Import_IG
                        DoCmd.TransferSpreadsheet acImport, 8, "TBTable6", strPathToFiles, False, onglet & "!A1:F"
     
     
                    End If
                End If
            Next ws
     
          wb.Close 
     
        xlAppl.Quit
        Set wb = Nothing
        Set xlAppl = Nothing
        Fichier = Dir
        Loop
     
    En sub

  2. #2
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    Re,

    J'ai également oublié de vous demander la chose suivante:

    Comment faire pour enregistrer le fichier lu sous un autre répertoire, juste avant le "wb.Close"


    Merci à tous

  3. #3
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    ça me dis quelquechose les EXCEL.EXE qui restent en mémoire.
    Personellement je l'ai résolu en ne créant un Objet Excel.Application que si Excel n'est pas déja ouvert.
    Pour cela j'essaie un GetObject de Excel.Application.
    Si Erreur, Excel n'est pas ouvert
    - Je fais CreateObject sur Excel.Application et
    - je mets ma variable boolean ExcelCreated à True
    Sinon
    - je mets ma variable boolean ExcelCreated à False

    Avant de quitter ma procedure ou fonction je teste la variable ExcelCreated
    pour savoir si je doit fermer Excel avec .Quit

    Pour l'autre question, il y la méthode SaveAs ou SaveCopyAs de l'objet Workbook

    Bon courage

  4. #4
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    Merci beaucoup pour ta réponse...

    j'ai bien compris ce que tu as voulu dire.

    Excuse moi de te demander ça, mais pourrais-tu me montrer ce que ça donne sur mon code car apparemment je ne suis pas capable de reproduire l'algo que tu m'as donné...

    pour la méthode saveAs, c'est ok, mise à part ce problème de EXCEL.exe qui reste en mémoire

    d'avance merci à tous

  5. #5
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Pas de problème.
    J'ai mis en rouge ce que j'ai ajouté ou déplacé.
    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
    71
    72
    73
    74
    75
    76
    77
    78
    Sub ImportAllFiles()
     
        'Supprimer enreg table T_Import_Brut
    
        DoCmd.RunSQL "DELETE FROM TImportTable1"
        DoCmd.RunSQL "DELETE FROM TImportTable2"
        DoCmd.RunSQL "DELETE FROM TImportTable3"
        DoCmd.RunSQL "DELETE FROM TImportTable4"
        DoCmd.RunSQL "DELETE FROM TImportTable5"
        DoCmd.RunSQL "DELETE FROM TBTable6"
     
        Dim strPathToFiles As String
        Dim xlAppl As Excel.Application
        Dim wb As Excel.Workbook
        Dim onglet As String
        Dim ws As Excel.Worksheet
        Dim Repertoire As String, Fichier As String
        Dim ExcelCreated As Boolean
      
        Repertoire = "C:\documents and Settings\Import\"
        Fichier = Dir(Repertoire & "*.xls")
        
        Set xlAppl = Nothing
        ExcelCreated = False
        On Error Resume Next
        Set xlAppl = GetObject(, "Excel.Application")
        On Error GoTo 0
    
        If xlAppl Is Nothing Then
           Set xlAppl = CreateObject("Excel.Application")
           ExcelCreated = True
        End If
        
        Do While Fichier <> ""
     
        strPathToFiles = Repertoire & Fichier
     
        Set wb = xlAppl.Workbooks.Open(strPathToFiles)
     
            For Each ws In wb.Worksheets
                If ws.Visible = True Then
                    onglet = ws.Name
     
                    If onglet = "TestIndicateurs" Then
                        ' transfert vers table T_Import_Brut
    
                        DoCmd.TransferSpreadsheet acImport, 8, "TImportTable1", _
                              strPathToFiles, False, onglet & "!H1:L201"
                        DoCmd.TransferSpreadsheet acImport, 8, "TImportTable2", _
                              strPathToFiles, False, onglet & "!H202:L291"
                        DoCmd.TransferSpreadsheet acImport, 8, "TImportTable3", _
                              strPathToFiles, False, onglet & "!H292:L328"
                        DoCmd.TransferSpreadsheet acImport, 8, "TImportTable4", _
                              strPathToFiles, False, onglet & "!H338:M344"
                        DoCmd.TransferSpreadsheet acImport, 8, "TImportTable5", _
                              strPathToFiles, False, onglet & "!H345:L352"
     
                    ElseIf onglet = "TransposeB" Then
     
                        ' transfert vers table T_Import_IG
    
                        DoCmd.TransferSpreadsheet acImport, 8, "TBTable6", _
                              strPathToFiles, False, onglet & "!A1:F"
     
                    End If
                End If
            Next ws
     
          wb.Close
     
        Set wb = Nothing
        Fichier = Dir
        Loop
        
        If ExcelCreated Then xlAppl.Quit
        Set xlAppl = Nothing
     
    End Sub
    Par contre je ne sais plus pourquoi les objet Excel créés ne se ferment pas.
    A cause du classeur PERSO.XLS ?

    Bon courage.

  6. #6
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    Merci pour ta réponse et ta rapidité,

    malheureusement mon programme bug toujours.

    Il me demande sans cesse sur le premier fichier qu'il essaye d'importer si je veux enregistrer les modifications apporté à celui-ci...

    Aurais-tu encore une idée ?

    merci encore

    @+

  7. #7
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Salut,

    Essaie avec ça quand tu fermes le classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          xlAppl.DisplayAlerts = False
          wb.Close , False
          xlAppl.DisplayAlerts = True
    Au départ j'avais testé avec les DisplayAlert en dehors de la boucle principale mais ça ne marche pas.

    A+

  8. #8
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    Salut LedZeppII, le forum

    Merci pour ta réponse, mais rien a changé, toujours pb...:-(

    après voir tout testé mon fichier excel, debugger pas à pas, j'en suis venu à la conclusion suivante, et j'en suis presque sûr:

    Le pb vient de ma boucle. En fait il reste toujours sur le même fichier et c'est ça qui fait planté le programme. Après pour les fichiers excel qui restent en mémoire, c'est surement du à cela.

    Alors pourrais-tu encore une fois m'aiguiller sur mon test de boucle. Quelqu'un sur le forum, n'aurait-il pas essayer de lire plusieurs fichiers sur un répertoire, et quel méthode a-t-il adopté pour faire cela ?


    D'avance merci à tous

  9. #9
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    En fait, je me rends compte que je n'arrive pas à passer au fichier suivant dans le répertoire c'est-à-dire incrémenter...

    Comment puis-je faire cela ?

    D'avance merci

Discussions similaires

  1. [AC-2003] Code VBA pour importer un fichier Excel dans access
    Par granddebutant dans le forum VBA Access
    Réponses: 5
    Dernier message: 24/01/2012, 14h51
  2. Importer un fichier excel dans access avec découpage en tables
    Par taz_wanted dans le forum VBA Access
    Réponses: 5
    Dernier message: 26/05/2011, 09h46
  3. Réponses: 11
    Dernier message: 03/05/2011, 08h02
  4. importer des fichiers excel dans access
    Par skillipo dans le forum Access
    Réponses: 1
    Dernier message: 12/11/2007, 16h53
  5. [VBA-A] Importation de fichiers Excel dans Access
    Par elkhy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/05/2006, 17h57

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