Calcul de moyenne en fonction des couleurs des cellules

  • Initiateur de la discussion Dok'
  • Date de début
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
 
P

Popeye

Guest
Bonjour a toi et le forum
tien ca devrait aller vachement plus vite
la raison de la lenteur c que tu selectionnes a chaque fois
voili voilou

Sub yaya()

Dim colonne
colonne = 1
For colonne = 2 To 78
counter = 0
total = 0
ligne = 1
While Cells(ligne, colonne) <> ""
If Cells(ligne, colonne).Interior.ColorIndex <> 35 Then
counter = counter + 1
total = total + Cells(ligne, colonne).Value
End If
ligne = ligne + 1
Wend
If counter <> 0 Then
Cells(ligne + 1, colonne).NumberFormat = "0.0"
Cells(ligne + 1, colonne).Value = total / counter
End If
ligne = 1
Next colonne
End Sub
 
D

Dok'

Guest
Il apparait une erreur d'exécution de type 13 (type incompatible !!!??)
et apparemment c'est la ligne :

total = total + Cells(ligne, colonne).Value

qui est en cause !

Je suis débutant donc ne comprend pas tout ! Pourquoi cells(ligne,colonne).value ne veut-il pas être "reconnu" ?

Merci.
 
P

Popeye

Guest
regarde si ce ne serait pas une donnée texte (meme si ca apparait etre un nombre a virgule ca peut ne pas etre un nombre parfois)
ya une fonction que tu peux rajouter si tu veux c eval

exemple
total = total + eval(Cells(ligne, colonne).Value)

ca devrait marcher je pense
 
D

Dok'

Guest
ok c'est bon autant pour moi... en réalité mes chiffres commencent à la ligne 3 donc c'est normal qu'il ne comprenne pas, sur la ligne 1 sont écrits à quoi correspondent ces chiffres....

Merci à toi Popeye, ça va en effet plus vite...
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 655
Messages
2 111 604
Membres
111 217
dernier inscrit
aladinkabeya2