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 :

Améliorer la vitesse d'une macro [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Par défaut Améliorer la vitesse d'une macro
    Bonjour

    Je suis débutant en macro et j'ai un soucis de vitesse avec une macro qui mets une trentaine de seconde à s'exécuter.
    En effet je dois faire la somme dans une feuille Excel de 65000 lignes, en fonction de 2 paramètres et il doit me ressortir la durée en heures.
    Cette macro fonctionne bien mais mets un temps fort long pour m'afficher les résultats dans mon tableau.
    Environ 100 lignes pour 15 colonnes.

    Est-il possible d'accélerer la vitesse de cette macro?

    Merci pour vos réponses

    Voici le 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
    Sub test()
     
        For i = 6 To 160 Step 1
            i = 6
            For j = 3 To 30 Step 1
                If Cells(5, j) = "" Then
                    Exit For
                End If
     
                Cells(i, j) = "=IF(RC2="""","""",IF(SUMPRODUCT(('Poste de travail'!R1C5:R65000C5=RC2)*('Poste de travail'!R1C10:R65000C10=R5C),('Poste de travail'!R1C8:R65000C8))=0,"""",SUMPRODUCT(('Poste de travail'!R1C5:R65000C5=RC2)*('Poste de travail'!R1C10:R65000C10=R5C),('Poste de travail'!R1C8:R65000C8))))"
                Cells(i, j).Select
                Selection.Copy
                Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                SkipBlanks:=False, Transpose:=False
            Next
     
            If Cells(i + 1, 2) = "" Then
     
            End If
     
     
        Next
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    D'abord en début de procédure tu peux placer ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim flgCalcul As Integer
     With Application
      .ScreenUpdating = False
      flgCalcul = .Calculation
     End With
    Et en fin de procédure celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Application
      .ScreenUpdating = True
      .Calculation = flgCalcul
     End With
    Maintenant, il y a une élément qui m'échappe, pourquoi alors que tu es dans une boucle, tu fais un Select sur la cellule sur laquelle tu es déjà (Cells(i, j).Select).
    En plus c'est parfaitement inutile de faire une sélection sur une cellule.
    Pourquoi ce Copy/Paste Special, y a-t-il une raison particulière ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    personelement, je ne comprend pas une boucle qui dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 6 To 160 Step 1
    i = 6
    next

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Citation Envoyé par alsimbad Voir le message
    personelement, je ne comprend pas une boucle qui dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 6 To 160 Step 1
    i = 6
    next
    Ah, celle là m'a échappée
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Améliorer et faire fonctionner une macro !
    Par laurent481826 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/01/2015, 16h08
  2. Recherche de l'aide pour améliorer une macro excel
    Par Yul80 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/09/2008, 10h21
  3. macro pour calculer la vitesse d'execution d'une macro
    Par victorzecat dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/12/2007, 14h34
  4. améliorer une macro
    Par casavba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/08/2007, 06h02
  5. Améliorer une macro
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 30/05/2007, 22h33

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