Une moyenne avec un si, petit soucis

Résolu
monstromain Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
monstromain Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Pour mon stage, je dois traiter une énorme base de donnée. Je n'y connais pas encore grand chose au langage VBA d'où mon appel sur ce forum.

J'essaye d'automatiser le calcul de plusieurs moyennes où les différents groupes de valeurs sont sur la même colonne et séparées par trois cases deux vides et être elles une où c'est marqué "ok". La plage des valeurs à calculer sont variables allant de une à plusieurs milliers.

Ma logique était de lui faire calculer la moyenne avec la fonction, dès qu'il voit ok, il me calcule la moyenne des valeurs en dessous et d'afficher le résultat donne une autre colonne. Pour cela , j'ai utilisé ceci en piochant à droite, à gauche :

Sub moyenne()
'
' moyenne Macro
'
If Range("F2") = "ok" Then ' => SI condition validée ALORS
'Instructions si vrai
Range("J2").FormulaR1C1 = Application.Average(Range(Range("F4"), Range("F4").End(xlDown)))
Else ' => SINON
'Instructions si faux
Range("J2").FormulaR1C1 = "ok"
End If
End Sub

Cela fonctionne mais le hic c'est que j'aimerais cela s'applique à toute la colone J en utilisant ce genre de code :

DernLigne = Range("G" & Rows.Count).End(xlUp).Row
Range("J2").AutoFill Destination:=Range("J2:J" & DernLigne)

or cela ne fait que glisser la valeur obtenue, je vois bien que le code Applicaton.average renvoie une valeur et non une formule que je puisse ensuite utiliser sur toute la colonne.

J'espère avoir été plus ou moins clair dans mes explications et que vous serez m'aider pour résoudre mon soucis qui à coup sûr vous paraitra évident. Merci

3 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour
pour m'éviter de construire un tableau
mettre un extrait du classeur (1000 lignes colonnes F à J)sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le lien proposé dans le message de réponse
Dans l'attente
0
monstromain Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
voila comme demandé,un extrait du classeur. Les valeurs sont le résultat d'un collage spéciale de données précédemment calculées

https://www.cjoint.com/c/ECBl0ykv6zx
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
OK, merci
Je regarde tout ctaprem
0
monstromain Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
merci c'est très gentil
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
0
monstromain Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour cette rapidité mais je ne comprend pas quelque chose, la premiere moyenne a calculée ne comprend qu'une valeur (F4), pourtant le résultat est différent.
j'ai l'impression que la macro calcule de 2 lignes sous ok jusqu'à la fin de la colonne. Or j'avais en tête que la moyenne a calculé était entre deux ok seulement, par plage de cellule de valeurs : la première étant (F4), la seconde (F8), la troisième (F15:F16)...

Etant débutant dans ce domaine, j'espère être plus clair cecoup ci
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Oui, Ok, excuse moi, j'avais mal saisi la demande (d'ailleurs ca me semblait bizarre mais...)
je regarde
d'après ta 1° demande , la limite est bien la 1°cellule vide : Application.Average(Range(Range("F4"), Range("F4").End(xlDown)))
mais que fait t'on avec plusieurs "ok" à la suite ? (F10,11,12;;)
la limite ne serait elle pas le changement de date ? cad calculer la moyenne journalière ?

Je repasserai vers 17h...
0
monstromain Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
la première cellule vide après F4 ici c'est F5
encas de plusieurs ok à la suite, il n'y a pas de moyenne à calculer, la formule ne trouvant pas de valeur deux lignes en dessous devrait ecrire erreur ou quelque chose du genre non ? mais cela je pourrais le rectifier après à la main si besoin en triant les colonnes
0
monstromain Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
la limite ne serait pas vraiment d'ordre journalière car sur d'autres jeux de données, il y a plusieurs changement par jour
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314 > monstromain Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
ok, mais il faut que je trouve une autre méthode, sois patient
tu as combien de lignes environ dans ta base ?
0