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 :

Ecriture dans un fichier excel => performances


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 43
    Points : 26
    Points
    26
    Par défaut Ecriture dans un fichier excel => performances
    Bonjour à tous,

    Je vous explique mon problème :
    Je dispose d'une application access qui peut générer des statistiques en exportant certains résultats dans un onglet d'un classeur excel qui contient les données brutes. Les statistiques "lisibles" sont ensuite générées par excel par la suite.
    J'utilise le code suivant pour mettre à jour ma feuille excel :

    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
        Set MyExcelApplication = CreateObject("Excel.Application")
        ' Définit le fichier EXCEL à ouvrir
        Set MyWorkbook = MyExcelApplication.Workbooks.Open("" & CheminFichierSource)
        Set MySheet = MyWorkbook.Sheets("Data")
        MyExcelApplication.Windows("" & NomFichierSource).Visible = True
     
    (...)
     
    Set rst = CurrentDb.OpenRecordset(sSQL) 'extraction des données a exporter vers excel
     
    rst.MoveFirst
    i = 2 'on exporte les données vers un template deja créé ou la premiere ligne est remplie. on commence donc a 2
    While Not rst.EOF
        ' Place du texte dans les cellules de la feuille à la ligne j, et sur la colonne i (il y a 17 colonnes utiles).
        j = 1
     
        While j <= 18
            MySheet.Application.Cells(i, j).Value = rst.Fields(j - 1)
            j = j + 1
        Wend
     
        i = i + 1
        rst.MoveNext
    Wend
    Le problème, c'est que l'écriture est extremement longue (environ 40 secondes quand sSQL retourne une dizaine de lignes!)
    Instinctivement je dirais que le probleme vient du fait qu'on écrit "case par case", mais j'aimerais avoir vos avis la dessus avant de trop faire n'importe quoi!
    Connaissez-vous un moyen pour accélérer un peu l'opération?

    Merci d'avance pour votre aide

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    bjr,

    copyfromrecordset est la solution

    http://www.developpez.net/forums/sho...yfromrecordset

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup, et désolé d'avoir polué le forum pour rien.

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

Discussions similaires

  1. [JXL] Ecriture dans un fichier Excel
    Par opensource dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 22/09/2014, 15h50
  2. Lecture et Ecriture dans un fichier Excel
    Par qiqi1111 dans le forum C++
    Réponses: 2
    Dernier message: 18/12/2008, 19h10
  3. lecture/ecriture dans un fichier excel
    Par developpeur82 dans le forum Documents
    Réponses: 13
    Dernier message: 02/12/2008, 14h44
  4. [xlswrite] Probleme d'ecriture dans un fichier Excel
    Par AlphaJack dans le forum MATLAB
    Réponses: 0
    Dernier message: 26/08/2008, 06h03
  5. Réponses: 10
    Dernier message: 30/08/2007, 17h55

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