Une moyenne avec un si, petit soucis
Résolu
monstromain
Messages postés
8
Statut
Membre
-
monstromain Messages postés 8 Statut Membre -
monstromain Messages postés 8 Statut Membre -
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
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
A voir également:
- Une moyenne avec un si, petit soucis
- Excel moyenne - Guide
- Petit 2 ✓ - Forum Bureautique
- Comment imprimer une photo en petit - Forum Photo numérique
- Trier du plus petit au plus grand excel - Guide
- Comment écrire mètre carré avec un m+2 expos? ✓ - Forum Windows
3 réponses
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
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
comme promis:
https://www.cjoint.com/?3CBohOWT0hT
Michel
https://www.cjoint.com/?3CBohOWT0hT
Michel
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
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
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...
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...
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
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
https://www.cjoint.com/c/ECBl0ykv6zx