Moyenne date

Bonjour voici ma question,

J'ai une petite question. j'ai une Colonne A avec des types "happy, sad, idea, reply announce" et dans une colonne Q la date et l'heure par exemple "04/12/2018 17:30" l'objectif serait de parcourir le colonne A et dès qu'il y a "announce" on va dans la colonne Q et on récupérer la date et l'heure.

On récupère car à la fin l'objectif serait de faire la moyenne afin d'obtenir le nombre d'announce par Jour/heure/minutes.

A savoir que j'ai une entête dans chacun de mes colonnes et qu'il me faudrait la réponse ne macro car il le faut en cas général.

Si le résultat vous être en R1 ce serait top.

Je vous laisse un extrait du fichier des données que j'ai.

Merci encore pour votre aide.

Bonjour

Ce n'est pas très clair :

l'objectif serait de faire la moyenne afin d'obtenir le nombre d'announce par Jour/heure/minutes.

Tu veux la moyenne ou le nombre ?

et qu'il me faudrait la réponse ne macro car il le faut en cas général.

Ça veut dire quoi ?

Si le résultat vous être en R1 ce serait top.

Pareil ...

A te relire.

bye !

Bonjour,

Voici un exemple avec un tcd en feuil2

Bonjour

Ce n'est pas très clair :

l'objectif serait de faire la moyenne afin d'obtenir le nombre d'announce par Jour/heure/minutes.

Tu veux la moyenne ou le nombre ?

et qu'il me faudrait la réponse ne macro car il le faut en cas général.

Ça veut dire quoi ?

Si le résultat vous être en R1 ce serait top.

Pareil ...

A te relire.

bye !

Bonjour vraiment désolé, j'ai eu un ptit bug durant mon message.

Alors il me faudrait la moyenne, par exemple "0J 0 H 50M" ce qui peut se traduire par " il y a en moyenne une announce toutes les 50 minutes."

Il me faudrait la réponse à l'aide d'une macro car dans l'exemple donnée ma table fait 40 ligne sauf que cela varie.

et enfin ce serait top que le résultat puisse se trouver dans la cellule R1.

Bonjour,

Voici un exemple avec un tcd en feuil2

Merci pour ton aide mais il me faudrait la réponse que pour annonce en macro et pas avec un tableau croisé dynamique.

Bonjour,

Une proposition de formule (pas besoin de macro, même avec une plage variable...):

=(MAX($I:$I)-MIN($I:$I))/NB.SI($A:$A;"announce")

Le résultat peut être mis au format personnalisé [h]:mm:ss

PS : attention, ton fichier contient à priori des données personnelles (noms et n° de téléphone).

Bonjour,

Une proposition de formule (pas besoin de macro, même avec une plage variable...):

=(MAX($I:$I)-MIN($I:$I))/NB.SI($A:$A;"announce")

Le résultat peut être mis au format personnalisé [h]:mm:ss

PS : attention, ton fichier contient à priori des données personnelles (noms et n° de téléphone).

Merci pour ton message c'est très gentil mais je suis obligé d'utiliser une macro....

Ps: les données sont fictives

Merci pour ton message c'est très gentil mais je suis obligé d'utiliser une macro....

Je serais curieux de savoir pour quel motif !

La même proposition en macro (à mettre dans le module de la feuille en question) :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Max As Double, Min As Double, Nb As Integer
    Max = Application.Max(Range("I:I"))
    Min = Application.Min(Range("I:I"))
    Nb = Application.CountIf(Range("A:A"), "announce")
    Range("R1") = (Max - Min) / Nb
End Sub

Merci pour ton message c'est très gentil mais je suis obligé d'utiliser une macro....

Je serais curieux de savoir pour quel motif !

La même proposition en macro (à mettre dans le module de la feuille en question) :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Max As Double, Min As Double, Nb As Integer
    Max = Application.Max(Range("I:I"))
    Min = Application.Min(Range("I:I"))
    Nb = Application.CountIf(Range("A:A"), "announce")
    Range("R1") = (Max - Min) / Nb
End Sub

Merci mais le programme bug, j'ai fais un test en gardant 2 announce l'un le 26/01/2018 à minuit (00:00) et l'autre le 21/01/2018 à 00:00 aussi sauf que dans le résultat j'obtiens 6 jours 33 heures et 12 minutes

[code]Workbooks("fichier_client").Activate

Worksheets("Données brutes").Activate

Dim Max As Double, Min As Double, Nb As Integer

Max = Application.Max(Range("I:I"))

Min = Application.Min(Range("I:I"))

Nb = Application.CountIf(Range("A:A"), "announce")

Worksheets("Animation").Activate

Range("A20") = (Max - Min) / Nb

If Range("A20").Value * 1 <= 1 Then

Range("A20") = "0 jour(s) " & Left(Range("A20"), 2) & " heure(s) " & Mid(Range("A20"), 4, 2) & " minute(s)"

Else

Range("A20") = Int((Max - Min) / Nb) & " jour " & Mid(Range("A20"), 12, 2) & " heure " & Mid(Range("A20"), 15, 2) & " minute"

End If [code]

Ce n'est pas une erreur si ta première donnée (min) et ta dernière données (max) sont espacées d'environ 14 jours et 18h. Précision, la fréquence de ligne "announce" ne dépend pas de la plus ancienne et la plus récente de ces lignes uniquement, mais bien de l'ensemble des lignes.

En revanche, ton format est incorrecte, puisque chez moi 6 jours et 33h, ça fait plutôt 7 jours et 9h...

Je te propose donc une version révisée de ton code :

Sub Test()

    Dim Max As Double, Min As Double, Nb As Integer
    Dim Delai As String, J As Integer, H As Integer, M As Integer

    With Sheets("Données brutes")
        Max = Application.Max(.Range("I:I"))
        Min = Application.Min(.Range("I:I"))
        Nb = Application.CountIf(.Range("A:A"), "announce")
    End With
    Delai = Format((Max - Min) / Nb, "[h]:mm:ss")
    J = Int(CInt(Split(Delai, ":")(0)) / 24)
    H = CInt(Split(Delai, ":")(0)) - J * 24
    M = CInt(Split(Delai, ":")(1))
    Sheets("Animation").Range("A20") = J & "jour(s) " & H & " heure(s) " & M & " minute(s)"

End Sub

Ce n'est pas une erreur si ta première donnée (min) et ta dernière données (max) sont espacées d'environ 14 jours et 18h. Précision, la fréquence de ligne "announce" ne dépend pas de la plus ancienne et la plus récente de ces lignes uniquement, mais bien de l'ensemble des lignes.

En revanche, ton format est incorrecte, puisque chez moi 6 jours et 33h, ça fait plutôt 7 jours et 9h...

Je te propose donc une version révisée de ton code :

Sub Test()

    Dim Max As Double, Min As Double, Nb As Integer
    Dim Delai As String, J As Integer, H As Integer, M As Integer

    With Sheets("Données brutes")
        Max = Application.Max(.Range("I:I"))
        Min = Application.Min(.Range("I:I"))
        Nb = Application.CountIf(.Range("A:A"), "announce")
    End With
    Delai = Format((Max - Min) / Nb, "[h]:mm:ss")
    J = Int(CInt(Split(Delai, ":")(0)) / 24)
    H = CInt(Split(Delai, ":")(0)) - J * 24
    M = CInt(Split(Delai, ":")(1))
    Sheets("Animation").Range("A20") = J & "jour(s) " & H & " heure(s) " & M & " minute(s)"

End Sub

Bonjour j'ai une incompatibilité de type ici "J = Int(CInt(Split(Delai, ":")(0)) / 24)" comment faire?

Ce n'est pas une erreur si ta première donnée (min) et ta dernière données (max) sont espacées d'environ 14 jours et 18h. Précision, la fréquence de ligne "announce" ne dépend pas de la plus ancienne et la plus récente de ces lignes uniquement, mais bien de l'ensemble des lignes.

En revanche, ton format est incorrecte, puisque chez moi 6 jours et 33h, ça fait plutôt 7 jours et 9h...

Je te propose donc une version révisée de ton code :

Sub Test()

    Dim Max As Double, Min As Double, Nb As Integer
    Dim Delai As String, J As Integer, H As Integer, M As Integer

    With Sheets("Données brutes")
        Max = Application.Max(.Range("I:I"))
        Min = Application.Min(.Range("I:I"))
        Nb = Application.CountIf(.Range("A:A"), "announce")
    End With
    Delai = Format((Max - Min) / Nb, "[h]:mm:ss")
    J = Int(CInt(Split(Delai, ":")(0)) / 24)
    H = CInt(Split(Delai, ":")(0)) - J * 24
    M = CInt(Split(Delai, ":")(1))
    Sheets("Animation").Range("A20") = J & "jour(s) " & H & " heure(s) " & M & " minute(s)"

End Sub

Merci pour ton message mais j'ai une problème, l 'indice n'appartient pas à la sélection sur la ligne "J = Int(CInt(Split(Delai, ":")(0)) / 24)"

Nouvel essai :

Sub Test()

    Dim Max As Double, Min As Double, Nb As Integer
    Dim Delai As Double, J As Integer, H As Integer, M As Integer

    With Sheets("Données brutes")
        Max = Application.Max(.Range("I:I"))
        Min = Application.Min(.Range("I:I"))
        Nb = Application.CountIf(.Range("A:A"), "announce")
    End With
    Delai = (Max - Min) / Nb
    J = Int(Delai)
    H = Int((Delai - J) * 24)
    M = Int((Delai - J - H / 24) * 1440)
    Sheets("Animation").Range("A20") = J & " jour(s) " & H & " heure(s) " & M & " minute(s)"

End Sub

d'accord je vais essayer

Merci pour ton message c'est très gentil mais je suis obligé d'utiliser une macro....

Je serais curieux de savoir pour quel motif !

PS : je n'ai pas eu de réponse à cette partie

Nouvel essai :

Sub Test()

    Dim Max As Double, Min As Double, Nb As Integer
    Dim Delai As Double, J As Integer, H As Integer, M As Integer

    With Sheets("Données brutes")
        Max = Application.Max(.Range("I:I"))
        Min = Application.Min(.Range("I:I"))
        Nb = Application.CountIf(.Range("A:A"), "announce")
    End With
    Delai = (Max - Min) / Nb
    J = Int(Delai)
    H = Int((Delai - J) * 24)
    M = Int((Delai - J - H / 24) * 1440)
    Sheets("Animation").Range("A20") = J & " jour(s) " & H & " heure(s) " & M & " minute(s)"

End Sub

le format est correcte mais le résultat est faux, j'ai plus que 2 announce avec uniquement 5 jours de différence et il m'affiche 6 jours 20 heure et 44 minutes, alors que normalement je devrais avoir 2 jours et demi environ

je te remets le fichier si besoin (avec les modifications)

le format est correcte mais le résultat est faux, j'ai plus que 2 announce avec uniquement 5 jours de différence et il m'affiche 6 jours 20 heure et 44 minutes, alors que normalement je devrais avoir 2 jours et demi environ

J'ai bien précisé, le résultat ne dépend pas du nombre de jours séparant la plus ancienne ligne "announce" de la plus récente, mais bien de la plus ancienne ligne renseignée (quelle que soit son type) de la plus récente.

Si tu cherches bien à obtenir la fréquence moyenne de lignes "announce", ton raisonnement est incorrect.

Dans ton dernier fichier, les données couvrent une période totale de 13,7 jours, durant lesquels tu as eu 2 "announce". Tu as donc bien un "announce" tous les 6,9 jours (soit 6 jours, 20 heures et 44 minutes).

le format est correcte mais le résultat est faux, j'ai plus que 2 announce avec uniquement 5 jours de différence et il m'affiche 6 jours 20 heure et 44 minutes, alors que normalement je devrais avoir 2 jours et demi environ

J'ai bien précisé, le résultat ne dépend pas du nombre de jours séparant la plus ancienne ligne "announce" de la plus récente, mais bien de la plus ancienne ligne renseignée (quelle que soit son type) de la plus récente.

Si tu cherches bien à obtenir la fréquence moyenne de lignes "announce", ton raisonnement est incorrect.

Justement je cherche le nombre de jours qui sépare les announces, uniquement les announces et pas les autres types afin de déterminer la fréquence d'annonce.

mon objectif serait de pouvoir calculer combien y a t-il d'annonce par jours,heure,minute.

Justement je cherche le nombre de jours qui sépare les announces, uniquement les announces et pas les autres types afin de déterminer la fréquence d'annonce.

C'est exactement ce que je dis, et ce que calcule la macro.

Dans ton dernier fichier, les données couvrent une période totale de 13,7 jours, durant lesquels tu as eu 2 "announce". Tu as donc bien un "announce" tous les 6,9 jours (soit 6 jours, 20 heures et 44 minutes).

Rechercher des sujets similaires à "moyenne date"