Un idée pour alleger mon code

chapeleurb Messages postés 2 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 23 juillet 2010 - 19 juil. 2010 à 16:28
chapeleurb Messages postés 2 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 23 juillet 2010 - 23 juil. 2010 à 08:00
Bonjour à tous,

tout nouveau sorti de ma premiere formation VBA appliquée à excel je decouvre dejà la joie des problèmes...

auriez vous une idée pour alleger ce code (le sablier reste scotché 15 seconde lors de chaque action sur ma feuille excel): (en gros je demande de colorier des cellules en fonction des valeurs trouvées dans des cellules adjacente, et ce sur toute une liste de 500 lignes environ)

For Each a In Range("k5:k500")
If a.Offset(0, -9).Value = Sheet("Parametre").Range("B9").Value Then
a.Value = a.Offset(0, -1).Value + 90
Else: a.Value = a.Offset(0, -1).Value + 365
End If

If a.Offset(0, -9).Value = Sheets("Parametre").Range("B18").Value Then
a.Value = a.Offset(0, -1).Value + 180
End If

If a.Offset(0, -1).Value < Range("O1").Value Then
a.Font.ColorIndex = 2
Else: a.Font.ColorIndex = 0
End If
Next

Ensuite ce code est répété plusieurs fois pour refaire l'analyse sur d'autres colonnes (colonne O, S, W, AA....) :

For Each b In Range("o5:o500")
If b.Offset(0, -13).Value = Sheets("Parametre").Range("B9").Value Then blabla
............
End If


Merci d'avance pour le coup de main !

3 réponses

CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
19 juil. 2010 à 17:55
Bonjour,

Peut-être ça:


Application.ScreenUpdating = False

à placer en début de macro et


Application.ScreenUpdating = True

à placer éventuellement en fin de macro

A+
Rataxes64
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 juil. 2010 à 18:43
j'approuves CerberusPau.
De meme, sors :

Sheet("Parametre").Range("B9").Value
etc.

de la boucle : ce sont des donnees fixes, so...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
chapeleurb Messages postés 2 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 23 juillet 2010
23 juil. 2010 à 08:00
Merci pour votre aide mais en fait ça rame toujours

peut être parce que j'ai mis à la suite 6 boucles qui débutent à chaque fois par For Each X In Range("xxx5:xxx500") ...un peu lourd de scanner et comparer 6 colonnes de 500 lignes ?

en tout cas merci
0
Rejoignez-nous