Créer un tableau par calculs à partir d'un autre tableau

Bonjour,

J'aimerais automatiser les calculs des moyennes de temps et de vitesse par code VBA mais comme je débute je suis bloquée très vite... peut être avez-vous des idées...

Comment faire comprendre par code VBA que je veux sélectionner certaines cellules précises d'un tableau pour les utiliser dans les calculs d'une autre cellule d'un autre tableau?

Plus précisément, j'ai en colonnes différentes heures et en ligne différentes données correspondant à chaque heure... J'aimerais faire la moyenne des données à l'intérieur d'une plage horaire...

Par exemple par rapport au tableau en pièce jointe, je veux calculer la moyenne des vitesses et des temps moyens entre 00 et 1h dans les cellules N7 et N9. Mais le but final serait de remplir automatiquement toutes les cellules colorées de mon tableau de droite. Les formules utilisées seraient :

temps moyen = Moyenne(plage_de_cellules tm) ==> dans la cellule N7 par exemple

temps théorique = Moyenne(plage_de_cellules tt)

vitesse = 0.3/(HEURE(N7)+MINUTE(N7)/60+SECONDE(N7)/3600)

Si une piste est possible... Merci beaucoup

41essai-macro.xlsm (14.31 Ko)

Bonjour,

solution via une fonction personnalisée, exemple d'utilisation de la fonction en pièce jointe.

Function averageinterval(critere, min, max, param, Optional ignorezero = True)
' fonction qui calcule une moyenne sur des valeurs sélectionnées si le critère correspondant se situe entre min(inclus) et max(exclu)
    If critere.Count <> param.Count Then averageinterval = "erreur": Exit Function
    For i = 1 To critere.Count
        If critere(i) >= min And critere(i) < max Then
            If ignorezero = True And param(i) = 0 Then Else c = c + 1
            s = s + param(i)
        End If
    Next i
    averageinterval = s / c
End Function

edit correction code

42essai-macro.xlsm (20.33 Ko)

Bonjour, merci beaucoup

J'ai bien compris la fonction averageinterval (critère, min, max, paramètre) mais si par exemple j'ai un autre tableau je ne saurais pas comment l'appeler cette fonction... Il faudrait que j'écrive une procédure que j'associe à un bouton (une procédure appelant cette fonction pour remplir mes cases voulues), et je nage un peu car je suis novice en programmation et en langage VBA mais j'en ai besoin alors... Si vous avez encore des pistes...

Merci en tout cas, bonne journée

Bonjour,

cette fonction personnalisé peut être utilisée dans une cellule comme n'importe quelle fonction classique d'excel.

=averageinterval (critère, min, max, parametre, optional ignorezero=true)

ou

critère est un vecteur contenant les valeurs critères pour la sélection (dans ton cas l'heure de l'événement mesuré)

min représente la valeur minimum à laquelle le critère doit répondre pour sélectionner la valeur à prendre en compte pour la moyenne

max représente la valeur maximum à laquelle le critère doit répondre pour sélectionner la valeur à prendre en compte pour la moyenne

parametre est un vecteur contenant les valeurs à sélectionner pour le calcul de la moyenne

ignorezero permet de ne pas tenir compte des valeurs nulles pour le calcul de la moyenne (true, vrai est l'option par défaut)

tu peux voir comment cette fonction est utilisée dans les cellules des colonnes N et O.

pour que la fonction donne un résultat correct, les données heures doivent être de type date( et heure) et non texte. (j'ai dû corriger ton tableau exemple pour cela)

pour sélectionner les valeurs dans l'intervalle 0h à 1h min=0 et max=1/24 (1/24 de jour=1 heure)

pour sélectionner les valeurs dans l'intervalle 1h à 7h min=1/24 et max=7/24

Bonjour,

D'accord merci . Par contre je ne comprends pas pourquoi la formule ne marche pas avec mon fichier... (colonne N). Peut-être savez vous le problème...?

Bonne journée,

31essai-macro.xlsm (23.57 Ko)

Bonjour,

Pourquoi cela ne fonctionne pas ?

2 raisons :

1) cfr message précédent

pour que la fonction donne un résultat correct, les données heures doivent être de type date( et heure) et non texte. (j'ai dû corriger ton tableau exemple pour cela)

pour transformer les heures de texte en nombre, je copie un cellule contenant 0 et fait un coller spécial "addition" sur les cellules contenant les heures en ligne C.

2) le vecteur critère et du vecteur parametre doivent avoir la même longueur. j'ai corrigé la fonction pour qu'elle affiche bien "erreur" si ce n'est pas le cas.

tu trouveras en pièce jointe en feuil1 , ta feuille qui ne fonctionne pas et en feuil2 la feuille avec les corrections.

38essai-macro.xlsm (26.41 Ko)

Merci beaucoup

Rechercher des sujets similaires à "creer tableau calculs partir"