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 :

accélerer des manipulations Excel


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 63
    Points
    63
    Par défaut accélerer des manipulations Excel
    Bonjour,

    j'utilise une macro sous Access qui exporte des données dans une feuille excel et la met en forme. La mise en forme de la feuille prend beaucoup de temps (formattage, copier coller etc dans des boucles For).

    Est-ce qu'il y a un moyen d'accélerer l'éxécution d'un code VB qui écrit dans une feuille excel (sachant que les modifications ne sont pas affichées pendant l'éxécution) ?

  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,

    C'est de l'automation OLE??

    Il y a beaucoup de chose qui peuvent ralentir l'exécution :
    - Comment l'objet a été déclaré (as Objet ou as Excel.Application, sans le New dans la déclaration c'est mieux de le faire après)
    - Es-tu tombé dans le piège d'utiliser systématiquement des instructions genre Activate et ActiveCell
    - Essaye d'utiliser CopyFromRecordset si tes données sont dans un recordset et sous forme de tableau simple, ça transfère les données d'un recordset vers excel en une seule instruction
    - Tu peux mettre aussi tes données en tableau et transférer le tableau en une seule fois au lieu de mettre les valeurs cellule par cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim TabValeur(1 To 10, 1 To 20)
    Dim i As Integer, j As Integer
    For i = 1 To 10
        For j = 1 To 20
            TabValeur(i, j) = i * j
        Next j
    Next i
    ObjFeuille.Range(Cells(1, 1), Cells(10, 20)) = TabValeur
    par exemple pour transférer les données de 10 lignes et 20 colonnes avec un seul appel au serveur OLE.

    Bref faire un maximum d'opérations dans Access et limiter un maximum les appels au serveur OLE (c'est à dire les propriétés et méthodes des objets Excel).

    Il y a sûrement plein d'autres choses, j'ai juste mis quelques idées...

  3. #3
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    Bonjour,

    Je te conseille de réaliser une macro sous Excel pour réaliser ta mise en forme que tu lanceras depuis Access, à la place de piloter toute les étapes de mise en forme depuis Access

  4. #4
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 63
    Points
    63
    Par défaut
    En fait j'ai testé les différentes parties de ma fonction d'export vers excel et c'est en effet la partie formattage qui prend le plus de temps (en occurence l'alignement du text dans les cellules).

    Sinon pour le CopyRecordset tu peux me donner la syntaxe, sachant que j'ai effectivement un Recordset qui contient mes valeurs et j'ouvre effectivement Excel avec Set xlApp = New Excel.Application (qu'est-ce que tu veux dire par l'utilisation plus tard de New)

    Sinon pour l'écriture de la macro pour la mise en page dans excel même. je ne sais pas si c'est possible d'écrire une macro par une macro dans un classeur qui n'existe pas auparavant.

    Merci en tout cas à vous deux

  5. #5
    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
    slt,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xlApp = New Excel.Application
    c'est bon

    la "mauvaise" syntaxe est de regrouper la déclaration et l'initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim xlApp as New Excel.Application
    ensuite à chaque utilisation de xlApp, Access vérifie que l'objet est bien initialisé et ça ralentit un peu

    mais là c'est bon...

    Pour le copyfromrecordset, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjFeuille.Range("A1").CopyFromRecordset(TonRecordset)
    Rien de sorcier, à tester quand même j'ai pas Access sous la main.

    Pour le formattage, essaye de regouper un maximum et d'appliquer par exemple le formatage sur une colonne entière au lieu de l'appliquer cellule par cellule si c'est la cas.

  6. #6
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 63
    Points
    63
    Par défaut
    ok, merci bcp

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

Discussions similaires

  1. Manipuler des fichiers Excel avec Perl
    Par Buboba dans le forum Modules
    Réponses: 2
    Dernier message: 04/09/2012, 13h54
  2. Manipulation des feuilles excel en Java
    Par cathy1 dans le forum Documents
    Réponses: 7
    Dernier message: 04/04/2011, 10h48
  3. manipuler excel avec delphi ( gestion des feuilles)
    Par lila23 dans le forum Débuter
    Réponses: 4
    Dernier message: 01/04/2009, 15h14
  4. [c#][.net 1.1] - Manipuler des fichiers Excel en c#
    Par skystef dans le forum ASP.NET
    Réponses: 4
    Dernier message: 13/08/2007, 13h10
  5. accélerer des manipulations Excel
    Par pschmidtke dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/06/2006, 20h02

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