cs_ITALIA
Messages postés2169Date d'inscriptionvendredi 20 avril 2001StatutMembreDernière intervention30 juin 2009
-
10 oct. 2007 à 16:43
cs_ITALIA
Messages postés2169Date d'inscriptionvendredi 20 avril 2001StatutMembreDernière intervention30 juin 2009
-
11 oct. 2007 à 09:58
Bonjour voici un morceau de code vba, il permet de lire une plage de valeur de bas en haut et de gauche à droite.
Il supprimer les cases vides et decale les valeurs non nul vers l'extreme gauche.
Cette plage est assez importante car :
nb_ligne= 3779
nb_col=40
Il faut plus d'une heure pour l'executer...avez vous une idée pour accelerer ce traitement
Application.ScreenUpdating = False ' Désactivation de la mise à jour de l'affichage
For i = -nb_ligne - 1 To -2
For J = -nb_col - 2 To -3
Cells(-i, -J).Select
If Cells(-i, -J) >= Max Then
Selection.Delete Shift:=xlToLeft
End If
Next J
Next i
Application.ScreenUpdating = True ' Réactivation de la mise à jour de l'affichage
Faut faire avec objet Range, c'est en interne un pointeur d'adresse sur les données.
Vire les 'select', rien à faire dans de grosses boucles, ça ruine les perfs.
SMaverick
Messages postés8Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention11 octobre 2007 11 oct. 2007 à 00:15
Salut,
Si Nb_Ligne et Nb_Col et Max ne changent pas, pourquoi faire reference a la variable, c'est du boulot en plus pour le programme .... Utilisent les valeurs directement dans le programme, c'est pas une revolution mais ça permet de gagner un peu de temps ... tutorial sur l'optimisation http://www.vbfrance.com/tutorial.aspx?id=519
bon courage
Vous n’avez pas trouvé la réponse que vous recherchez ?