D
Dok'
Guest
Bonjour,
Je cherche à calculer une moyenne sous certaines conditions.
Ci-joint le programe que j'ai écrit : il marche mais est très lent.
j'écris en B(x+2) (cellule suivant la première cellule vide) la moyenne des cellules B3 à Bx (x représente la cellule précédent la première cellule vide),
qui ne sont pas de couleur verte (colorindex 35), et je recommence cette moyenne pour la colonne suivante (C) juskà la colonne AZ (par exemple)
J'ai déjà écrit un programme qui marche, mais il est lent. Est-il possible de l'améliorer (en rapidité) ?
Merci d'avance.
Dok'
Programme écrit :
Range("B3").Select
Dim colonne
colonne = 1
For colonne = 2 To 78
counter = 0
total = 0
Do Until (IsEmpty(ActiveCell) = True)
If IsEmpty(ActiveCell.Offset(1, 0)) = True Then Exit Do
If ActiveCell.Interior.ColorIndex = 35 Then
ActiveCell.Offset(1, 0).Select
Else
counter = counter + 1
total = total + ActiveCell.Value
ActiveCell.Offset(1, 0).Select
End If
Loop
ActiveCell.Offset(3, 0).Select
Selection.NumberFormat = "0.0"
ActiveCell.Value = total / counter
ActiveCell.Offset(-(counter + 3), 1).Select
Next colonne
Je cherche à calculer une moyenne sous certaines conditions.
Ci-joint le programe que j'ai écrit : il marche mais est très lent.
j'écris en B(x+2) (cellule suivant la première cellule vide) la moyenne des cellules B3 à Bx (x représente la cellule précédent la première cellule vide),
qui ne sont pas de couleur verte (colorindex 35), et je recommence cette moyenne pour la colonne suivante (C) juskà la colonne AZ (par exemple)
J'ai déjà écrit un programme qui marche, mais il est lent. Est-il possible de l'améliorer (en rapidité) ?
Merci d'avance.
Dok'
Programme écrit :
Range("B3").Select
Dim colonne
colonne = 1
For colonne = 2 To 78
counter = 0
total = 0
Do Until (IsEmpty(ActiveCell) = True)
If IsEmpty(ActiveCell.Offset(1, 0)) = True Then Exit Do
If ActiveCell.Interior.ColorIndex = 35 Then
ActiveCell.Offset(1, 0).Select
Else
counter = counter + 1
total = total + ActiveCell.Value
ActiveCell.Offset(1, 0).Select
End If
Loop
ActiveCell.Offset(3, 0).Select
Selection.NumberFormat = "0.0"
ActiveCell.Value = total / counter
ActiveCell.Offset(-(counter + 3), 1).Select
Next colonne