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

Macros et VBA Excel Discussion :

Script vba excel trop lent


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Script vba excel trop lent
    Voici une partie d'un script vba fait avec excel 2003. Il copie les lignes d'une feuille vers d'autres feuilles selon un critère. Le nom contenu dans la colone A correspond à une feuille ex:A1=Zootman alors la ligne complète est copiée dans une feuille dont l'onglet s'appelle Zootman. Le problème c'est qu'il est très long à executer. Je l'ai fait avec une boucle imbriquée. Ca prend presque 2h pour copier 16 500 lignes. Quelqu'un aurait une suggestion pour que ce soit plus rapide? Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For i = 1 To Sheets.Count - 1
            k = 1
            For j = 1 To nbCell + 1
            If Sheets(i).Name = Sheets("Zootman").Cells(j, 1).Value Then
            Worksheets("Zootman").Range("A" & j & ":" & "IV" & j).Copy
            Worksheets(i).Range("A" & k & ":" & "IV" & k).PasteSpecial
            k = k + 1
            End If
            Next j
    Next i
    dans mon cas précis: Sheets.Count = 112 feuilles et nbCell=16500


    [Edit] bbil : Penser à rajouter les balises de codes, utiliser le bouton

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Il y a des formules qui trainent dans tes feuilles ?

    En gros, est-ce qu'il fait des calculs pendant que tu fais les copies, d'ou un temps d'éxécution relativement long ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    essaie déjà de voir si ça arrange les choses de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    'au debut du prog
    Application.ScreenUpdating=False
     
    ...
     
    'fin du prog
    Application.ScreenUpdating.True
    Moi, j'aime pas facebook.

    Musiciens de France

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    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
     
    dim xlwksZoot as excel.worksheet
    dim xlwksDest as excel.worksheet
     
    set xlwksZoot = sheets("Zootman")
    for each xlwksDest in sheets
        k = 1
        for j=1 to nbCell+1
             if xlwksDest.name = xlwksZoot.Cells(j, 1).Value Then
                 xlwksZoot.rows(j).Copy
                 xlwksDest.cells(k,1) PasteSpecial
                 k = k + 1
            End If
        next
     
    next
    Ce programme t'évite a chaque fois de "rechercher" la feuille Zootman. Mais je ne sais pas si ca va te faire gagner des masses de tp. mais on sait jms.
    Perso je ne comprend pas trop ton incrémentation du k

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut
    C'est une impression ou "k" à la même valeur que "j" ? ( si c'est le cas, tu peux te séparer de "k" ... bon ca ne va pas significativement booster tes perf mais ca sera un poil + clair déjà ) .

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je ne comprends pas l'utilisation de pastespecial sans un paramètre. Pourquoi ne pas utiliser Paste tout court ?

Discussions similaires

  1. Logger l'activité d'un script PHP, fopen trop lent
    Par Fobec dans le forum Langage
    Réponses: 2
    Dernier message: 19/11/2013, 16h42
  2. Echanges trop lents entre Excel (Maitre) et Word
    Par Philippe53 dans le forum VBA Word
    Réponses: 14
    Dernier message: 24/06/2008, 17h25
  3. Transformé une formule Excel en script VBA ?
    Par SFLEY dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 06/01/2007, 11h48
  4. [VBA-E]temps d execution trop lent
    Par chmod777 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/03/2006, 15h10
  5. [vba-excel] Le temps de fermeture trop court ?
    Par Damsou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 10h03

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