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 :

Optimisation d'une boucle


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Optimisation d'une boucle
    Bonjour

    Mon code mettrai plus de 3 heures à s'executer tel quel. Est-ce que quelqu'un pourrait m'aider pour l'optimiser.
    Ci dessous le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim i, j As Integer
     
    For i = 2 To 8075
        For j = 2 To 10877
     
            If ActiveSheet.Cells(i, 1) = Worksheets("PV").Cells(j, 1) And ActiveSheet.Cells(i, 3) = Worksheets("PV").Cells(j, 3) And ActiveSheet.Cells(i, 2) = Worksheets("PV").Cells(j, 2) Then
                    ActiveSheet.Cells(i, 5) = Worksheets("PV").Cells(j, 4)
     
            End If
     
         Next j
    Next i
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 108
    Points : 16 640
    Points
    16 640
    Par défaut
    Une possibilité d’amélioration de rapidité consiste à imbriquer les conditions If …. Then.
    Commencer par la condition qui n’est pas la plus probable, suivit de l’imbriquement de la condition de rend supérieur ……
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If Condition1 = "TresRarement" Then
    	If Condition2 = "ArriveParfois" then
    		If condition3 = "ArriveSouvant" then
    			'Traiter puisque l’ensemble des conditions est Ok
    		End if
    	End If
    End if
    Le temps passé a l’analyse des conditions internes ne serat effectif que si la condition précédente = True.

  3. #3
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    A vérifier aussi:
    S'il y a des cellules calculées dans le classeur, mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Calculation = xlCalculationManual
    en début de routine et remettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Calculation = xlCalculationAutomatic
    une fois la routine terminée.

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

Discussions similaires

  1. Optimisation d'une boucle de boucle for
    Par LePapat26 dans le forum MATLAB
    Réponses: 3
    Dernier message: 27/02/2010, 17h01
  2. erreur pendant l'optimisation d'une boucle for
    Par bakaratoun dans le forum MATLAB
    Réponses: 2
    Dernier message: 29/01/2010, 14h44
  3. Optimisation d'une boucle
    Par habasque dans le forum R
    Réponses: 2
    Dernier message: 12/11/2009, 19h55
  4. Optimisation d'une boucle for
    Par Vorlane dans le forum MATLAB
    Réponses: 0
    Dernier message: 07/07/2009, 11h36
  5. [Debutant] Optimisation d'une boucle
    Par Javatator dans le forum Langage
    Réponses: 3
    Dernier message: 25/10/2004, 18h50

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