Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

Réponse
 
Outils de la discussion
Vieux 27/08/2008, 17h22   #1 (permalink)
Invité de passage
 
Date d'inscription: avril 2008
Messages: 3
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 :
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

Dernière modification par ProgElecT ; 27/08/2008 à 17h47 Motif: Pour le code, bouton # en haut à droite de l'editeur
ccobaye est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 18h09   #2 (permalink)
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Date d'inscription: décembre 2004
Localisation: Haute Savoie
Âge: 52
Messages: 1 522
Envoyer un message via MSN à ProgElecT
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 :
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.
__________________
ProgElecT

Il est souvant plus rapide de trouver la reponse à un probleme par soit même, dans votre éditeur VB, F2/F1, et sur DVP en passant par le TUTO VB6/VBA/VBScript ou Vos contributions VB6 ou Recherche dans ce forum

Voir aussi des petits bouts de codes dans ma page de contribution sur DVP

S’il vous plait, les MPs techniques à mon intention ne doivent être qu’exceptionnels.
Soyez sympa, penser au tag ou tenir au courant des problemes qui ne permettent pas de l'utiliser.
ProgElecT est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 08h28   #3 (permalink)
Modérateur
 
Avatar de AlainTech
 
Date d'inscription: mai 2005
Localisation: Entre Liège et Bruxelles, suivant l'heure.
Âge: 54
Messages: 2 922
Envoyer un message via Skype™ à AlainTech
Par défaut

A vérifier aussi:
S'il y a des cellules calculées dans le classeur, mettre
Code :
Application.Calculation = xlCalculationManual
en début de routine et remettre
Code :
Application.Calculation = xlCalculationAutomatic
une fois la routine terminée.
__________________
Si on vous donne une info qui marche, DITES-LE!!!!
Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres!
N'oubliez pas de cliquer sur quand vous avez obtenu la réponse à votre question.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide