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 :

Macro très lente


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Par défaut Macro très lente
    Bonjour le forum,

    Je viens vers vous cra ma macro mets plus d une journée a tourner
    Mon fichier a deux feuilles, ma macro va rechercher la combinaison des lignes contenus dans la première feuille dans la seconde feuille et mettre un BINGO si elle trouve, une sorte de VLOOKUP complexe quoi.
    Elle est très simple mais trop longue

    Comment puis je faire pour la rendre plus rapide ???

    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
    Sub macropsl()
    Application.ScreenUpdating = False
    For i = 5 To 2000
    For j = 2 To 30000
     
    If (Feuil2.Cells(i, 2).Value = Feuil3.Cells(j, 63).Value And Feuil2.Cells(i, 4).Value = Feuil3.Cells(j, 59).Value And Feuil2.Cells(i, 6).Value = Feuil3.Cells(j, 60).Value) Then
    Feuil3.Cells(j, 61).Value = "BINGO"
     
     
    End If
    Next j
    Next i
     
    Application.ScreenUpdating = True
     
    End Sub


    Merci beaucoup pour votre aide

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut,à tenter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Application.ScreenUpdating = False
        Application.Calculation = xlManual
            ' ........
        Application.Calculation = xlAutomatic
        Application.ScreenUpdating = True

  3. #3
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    as tu essayé de mettre les calculs en supends
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Calculation = xlCalculationManual

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour lolodo,

    Voici un code à tester.
    L’idée, c’est de transférer les données dans un tableau avant d’effectuer le traitement.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    Sub macropsl()
    Dim TabI
    Dim TabJ
    Dim TabK(1 To 29999)
    Dim Depart As Single
    Dim Arrivee As Single
    Dim Duree As Long
     
        Depart = Timer
        Application.ScreenUpdating = False
        Application.Calculation = xlManual
        With Sheets("Feuil2")
            TabI = .Range(.Cells(5, 2), .Cells(2000, 6))
        End With
        With Sheets("Feuil3")
            TabJ = .Range(.Cells(2, 59), .Cells(30000, 63))
        End With
     
        For i = 1 To 1996
            For j = 1 To 29999
                If TabI(i, 1) = TabJ(j, 5) Then
                    If TabI(i, 3) = TabJ(j, 1) Then
                        If TabI(i, 5) = TabJ(j, 2) Then TabK(j) = "BINGO"
                    End If
                End If
            Next j
        Next i
     
        For i = 2 To 30000
            Sheets("Feuil3").Range("BI" & i) = TabK(i - 1)
        Next i
     
        Application.Calculation = xlAutomatic
        Application.ScreenUpdating = True
    Arrivee = Timer
    MsgBox "Temps écoulé = " & Arrivee - Depart & " secondes"
    End Sub
    Cordialement.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Par défaut
    Merci pour vos réponses
    Je vais tester ca et je vous donne les nouveaux temps ...

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Par défaut
    1h20 !!!!! Ce qui est nettement mieux
    Mettre la condition if en cascade marche bien grace a plusieurs if y est pour beaucoup
    Merci a tous

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

Discussions similaires

  1. [XL-2007] Mise en page par macro très lente
    Par mathspountz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/01/2014, 11h13
  2. [XL-2010] Macro très lente quand mise en page/formules
    Par Ephysio dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/11/2013, 13h43
  3. Macro très lente
    Par andrea0 dans le forum Macros et VBA Excel
    Réponses: 32
    Dernier message: 30/03/2011, 17h52
  4. Sélection d'une plage de dates par macro très lente
    Par yvesduc dans le forum QlikView
    Réponses: 1
    Dernier message: 11/03/2010, 15h48
  5. [WD-2007] Exécution très lente des macros
    Par bibendum7302 dans le forum VBA Word
    Réponses: 10
    Dernier message: 22/06/2009, 12h27

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