Microsoft 365 Moyenne de jours entre chaque commande

raf26

XLDnaute Occasionnel
Bonjour à tous,

J'améliore mon fichier suivi client et cette fois ci j'aimerais qu'Excel me calcule le nombre de jours moyens entre chaque commande client.

J'ai essayé en me basant sur la formule de Job75 qui m'a aidée hier soir (merci Job75) mais je plante...

Je vous joins mon fichier test.

Merci et belle journée à vous
 

Pièces jointes

  • Classeur2.xlsx
    10.6 KB · Affichages: 3
Solution
Bonjour raf26, Cousinhub,

Voyez le fihier joint et cette fonction VBA placée dans un module standard :
VB:
Function Nb_Jours_Moyen(nomref As String, Noms As Range, Dates As Range)
Dim i&, a(), n&, b()
For i = 1 To Noms.Count
    If Noms(i) = nomref Then
        ReDim Preserve a(n) 'base 0
        a(n) = Dates(i)
        n = n + 1
    End If
Next i
If n = 0 Then Nb_Jours_Moyen = "": Exit Function
If n = 1 Then Nb_Jours_Moyen = 1 + Date - a(0): Exit Function
tri a, 0, n - 1
ReDim b(1 To n - 1) 'base 1
For i = 1 To n - 1
    b(i) = a(i) - a(i - 1)
Next i
Nb_Jours_Moyen = 1 + Application.Average(b)
End Function

Sub tri(a, gauc, droi) ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While...

Cousinhub

XLDnaute Barbatruc
Bonjour,
Dans le fichier joint, j'utilise Power Query, en natif dans ta version Excel.
Dans le tableau résultat, j'ai mis le nom, le nombre de commandes, la date la plus ancienne, la date la plus récente, et si le nombre de commandes est supérieur à 1, la moyenne (datemax - datemin)/(nbr cde -1)
S'il n'y a qu'une commande, le nombre de jours entre la commande et aujourd'hui.
Pour mettre à jour, clic droit dans la requête, "Actualiser", ou Ruban Données, "Actualiser tout"
Bonne journée
 

Pièces jointes

  • PQ_Moyenne entre commandes.xlsx
    19.9 KB · Affichages: 4

raf26

XLDnaute Occasionnel
Bonjour Cousinhub,

Merci pour ton retour, exactement ce qu'il me fallait

Mais je n'ai jamais (encore) utilisé Power Query et je patauge complètement ...

J'essaye de créer une table dans mon "vrai" fichier avec Power Querymais j'ai le message suivant :
Capture d’écran 2023-05-26 à 20.03.35.png

Une idée de la source du problème ?

Sinon existe t il une possibilité par formule ou macro ?

Cordialement
 

Cousinhub

XLDnaute Barbatruc
Re-,
Lorsque tu es dans l'éditeur Power Query (clic droit dans la requête, "Table/Modifier la requête"), tu cliques sur "Fichier", puis sur "Options et paramètres", "Options de requête"

1685125001561.png


Tu sélectionnes "Confidentialité", et tu sélectionnes "Toujours ignorer......" (option non nécessaire)

1685124960118.png
 

job75

XLDnaute Barbatruc
Bonjour raf26, Cousinhub,

Voyez le fihier joint et cette fonction VBA placée dans un module standard :
VB:
Function Nb_Jours_Moyen(nomref As String, Noms As Range, Dates As Range)
Dim i&, a(), n&, b()
For i = 1 To Noms.Count
    If Noms(i) = nomref Then
        ReDim Preserve a(n) 'base 0
        a(n) = Dates(i)
        n = n + 1
    End If
Next i
If n = 0 Then Nb_Jours_Moyen = "": Exit Function
If n = 1 Then Nb_Jours_Moyen = 1 + Date - a(0): Exit Function
tri a, 0, n - 1
ReDim b(1 To n - 1) 'base 1
For i = 1 To n - 1
    b(i) = a(i) - a(i - 1)
Next i
Nb_Jours_Moyen = 1 + Application.Average(b)
End Function

Sub tri(a, gauc, droi) ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
Formule en G20 =Nb_Jours_Moyen(F20;B$2:B$14;A$2:A$14)

A+
 

Pièces jointes

  • Nb_Jours_Moyen(1).xlsm
    19 KB · Affichages: 3

Discussions similaires

Réponses
4
Affichages
371