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 :

Problème lors de l'importation


Sujet :

Access

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Problème lors de l'importation
    Bonjour, j'ai un souci lors de l'importation en Access de fichier excel.
    Je vous link mon code ci-dessous :

    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
    'On vide la table excelMOD
    DoCmd.OpenQuery "R_supp ExcelBase"
     
    'Tester si les fichiers sont là
    Dim repertoire, Source As String
    repertoire = Application.CurrentProject.Path
    ext = ""
    monrep = repertoire + "\ExcelCorrigé\MHF"
    Dim fichier As String
    Dim feuille As String
    Dim feuilles As Object
    'On cherche tout les onglet du fichier excel
    Set appExcel = CreateObject("Excel.Application")
     
     
    ext = Dir(monrep & "\*.xls")
    L_MHFMOD.Visible = True
    L_MHFMOD.DefaultValue = ""
    Do While ext <> ""
    fichier = ext
    Source = monrep + "\" + fichier
    appExcel.Workbooks.Open FileName:=Source
    For Each feuilles In appExcel.Sheets
    feuille = feuilles.Name
    MsgBox Source + " " + feuille
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "ExcelBase", Source, True, feuille
    Next feuilles
    ext = Dir
    Loop
    ce code est sensé lire tout les fichier contenu dans le dossier ExcelCorrigé, pour chaque fichier il va lire chaque feuille, et il va stocker le résultat de chaque feuille sera stocké dans la table "ExcelBase".
    La procédure commence par les fichier excel de petite taille(entre 300 et 8000 lignes). Le dernier fichier excel contient 2 feuilles de (8000 et 57000 lignes). Il charge donc la 1ere ligne et arrivé à la deuxième la barre d'importation en bas ç gauche reste pleine (comme si le chargement était effectué) et ca reste comme ca indéfiniment.

    J'ai alors crée un deuxieme code qui fait simplement à la suite les deux chargement de cette table et els stock dans ma table ExcelBase. Ce code est :

    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
    'On remplie le fichier excel PHP saisie
     
    DoCmd.Hourglass True
     
    Dim xlApp As Excel.Application
    Dim xlSheet As Excel.Worksheet
    Dim xlBook As Excel.Workbook
    Dim i As Long, j As Long
     
    Dim repertoire As String
    DoCmd.OpenQuery "R_supp ExcelBase"
    repertoire = Application.CurrentProject.Path
    Dim stock As String
     
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "ExcelBase", repertoire + "\ExcelBase\MHF\D7099.xls", True, "51"
     
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "ExcelBase", repertoire + "\ExcelCorrigé\MHF\D709952.xls", True
    MsgBox ("table charger")
    Ce code marche. Et je ne comprend pas la différence.

  2. #2
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Je suis arrivé à localisé mon souci:
    Voici le code:

    Première méthode:

    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
    'On remplie le fichier excel PHP saisie
    DoCmd.Hourglass True
     
    Dim repertoire, Source As String
    repertoire = Application.CurrentProject.Path
    Dim feuille As String
    Dim feuilles As Object
    'On cherche tout les onglet du fichier excel
    Set appExcel = CreateObject("Excel.Application")
    Source = repertoire + "\ExcelBase\MHF\D7099.xls"
    appExcel.Workbooks.Open FileName:=Source
    For Each feuilles In appExcel.Sheets
            feuille = feuilles.Name
            MsgBox Source + "   " + feuille
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "ExcelBase", Source, True, feuille
    Next feuilles
    Deuxième méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "ExcelBase", repertoire + "\ExcelBase\MHF\D7099.xls", True, "51"
     
    'DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "ExcelBase", repertoire + "\ExcelBase\MHF\D7099.xls", True, "52"
     
     
    DoCmd.Hourglass False
    Dans la première méthode l'action dure plus de 10 minutes à charger mon fichier D7099 contenant une feuille 51 et une feuille 52. J'ai vérifié pour trouver les deux Feuille la recherche est presque instantannée.

    La deuxième méthode je lui donne donc les deux feuille à ouvrir directement. Cette méthode met moin d'une minute à charger les deux tables. Je ne vois malheureusement aucune différence entre les deux méthode appart que l'une me permet de parcourir toute les feuille que je ne connaitrait aps forcément.

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    J'ai résolue mon problème en ajoutant une MsgBox devant chaque importation. Du coup je n'ai lpus de problème lors de l'importation. Je suis étonné tout de même que cela fonctionne et j'aimerais savoir si quelqu'un à une idée de pourquoi cela fonctionne justement. Merci.

    Pour les modérateurs, je m'excuse encore de ne aps avoir mis mon code entre balise code, je suis nouveau sur le forum et je ne connaissais pas l'outil. Désolé aussi des fautes d'orthographe, je suis d'origine étrangère.

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Finalement j'ai finir par découvrir ou se trouvait le problème. Si ca peux aider d'autres personne, lors de l'importation de gros fichier excel "en chaîne" les vieux PC on du mal à lancer l'importation. C'est pourquoi il faut rajouter un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.sleep(now+ "00:00:01")
    ce qui permet donc de retarder d'une seconde le début de l'importation et de bien démarrer celle-ci.
    Cordiallement Sydd68

Discussions similaires

  1. Problème lors d'un import de table
    Par niavlys77 dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/09/2007, 13h59
  2. Réponses: 4
    Dernier message: 04/04/2007, 07h46
  3. Problème lors de l'import d'une dll native.
    Par -Jolan- dans le forum C++/CLI
    Réponses: 4
    Dernier message: 21/02/2007, 12h18
  4. Problème lors de l'import de Oracle 9i à XE
    Par cedrich dans le forum Oracle
    Réponses: 7
    Dernier message: 29/09/2006, 16h16
  5. Réponses: 2
    Dernier message: 28/10/2005, 20h43

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