XL 2016 Compter le nombre d'appels simultanés sur une plage de temps

Romain972

XLDnaute Nouveau
Bonjour,

J'aimerais pouvoir récupérer des stats sur le nombre d'appels simultanés max par jours sur un mois . J'ai fouillé le forum , mais les exemples ne fonctionnent pas comme je le souhaite , dans le sens ou sur un mois de stats , cela va calculer le nombre d'appels max sur l'ensemble d'un jour. (donc l'addition de 4 lundi par mois par exemple...)

L'objectif serait d'avoir un graphique qui affiche le nombre d'appels simultanés max par jours , sur un mois.

lundi 01 janvier = appels max 6
mardi 02 janvier = appels max 2
etc...

Voici les données. Un export de CDR.

merci encore pour vos réponses,
 

Pièces jointes

  • Conso Janvier.xlsx
    420.1 KB · Affichages: 22
Solution
Bonjour,

finalement je fusionne début et fin en une colonne pour n'avoir qu'une seule boucle, plus simple à gérer.
1.9 s pour les 36000 lignes
Les résultats semblent plus cohérents :
Date
Max simultané
01/04/2021 15:39:32​
26​
02/04/2021 08:45:30​
19​
03/04/2021 08:43:05​
3​
04/04/2021 11:36:53​
1​
05/04/2021 09:52:34​
2​
06/04/2021 15:52:59​
26​
07/04/2021 09:20:11​
26​
08/04/2021...​

Romain972

XLDnaute Nouveau
Bonjour a tous ,
Merci pour vos réponses.
Mais l'objectif n'est pas de connaitre le nombre total d'appels par jour. Mais de connaitre le nombre d'appels simultanés.

Par exemple de savoir que le 01/01/2022 sur la période de 20:30 a 20:40 j'ai eu 2 appels simultanés.

Merci encore :)
 

Efgé

XLDnaute Barbatruc
Bonjour à tous
Je suis parti sur des tranches de 10 minutes.
144 lignes sur 31 colonnes, ça rame un peu...
Mais bon, c'est fait, je le poste.
Cordialement
 

Pièces jointes

  • Conso Janvier (3).zip
    864.9 KB · Affichages: 4

chris

XLDnaute Barbatruc
Bonjour à tous

Sur des appels qui durent pour certains moins de 10 secondes, calculer la simultanéité sur 10 minutes pose questions.

Demande pas très claire...

Si on raisonne en seconde on a 1 600 000 secondes...
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Bonjour,

une approche originale qui reporte la complexité sur un tri préalable et sur le fait qu'on peut désolidariser la fin d'un appel de son début.
Ca revient à faire 2 boucles simultanées mais non imbriquées ni synchronisées, et sans besoin de regarder seconde par seconde x appels.
Ce qui donne un code court et très rapide : 0.07 s pour les 16000 lignes.

En cas de début d'un appel simultané à la fin d'un autre, je considère qu'ils se chevauchent pour retenir un max le plus important (seulement +1 mais bon, il fallait faire un choix...)
Je tiens compte de tous les appels, à la seconde près. Si certains ne doivent pas être pris en compte il faudra les éliminer avant.
Je te laisse contrôler la justesse des résultats ;-) Je n'ai contrôlé que les 1 qui m'ont surpris...
Par exemple je ne trouve pas 2 en max le 01/01 (?)
Ton 2nd appel débute à 20:38:10 alors que le précédent s'est fini à 20:38:06, ils ne sont pas simultanés. Si tu veux arrondir à la minute, fais-le réellement, pas seulement à l'affichage par un format.
eric

PS : si besoin tu peux avoir l'heure du maxi en remplaçant la dernière ligne ici :

VB:
            ' maxi jour ?
            j = Int(datas(lig1, 1))
            If marche > result(j, 2) Then result(j, 1) = datas(lig1, 1): result(j, 2) = marche
 

Pièces jointes

  • Conso Janvier.xlsm
    430.7 KB · Affichages: 11
Dernière édition:

Romain972

XLDnaute Nouveau
Bonjour,

une approche originale qui reporte la complexité sur un tri préalable et sur le fait qu'on peut désolidariser la fin d'un appel de son début.
Ca revient à faire 2 boucles simultanées mais non imbriquées ni synchronisées, et sans besoin de regarder seconde par seconde x appels.
Ce qui donne un code court et très rapide : 0.07 s pour les 16000 lignes.

En cas de début d'un appel simultané à la fin d'un autre, je considère qu'ils se chevauchent pour retenir un max le plus important (seulement +1 mais bon, il fallait faire un choix...)
Je tiens compte de tous les appels, à la seconde près. Si certains ne doivent pas être pris en compte il faudra les éliminer avant.
Je te laisse contrôler la justesse des résultats ;-) Je n'ai contrôlé que les 1 qui m'ont surpris...
Par exemple je ne trouve pas 2 en max le 01/01 (?)
Ton 2nd appel débute à 20:38:10 alors que le précédent s'est fini à 20:38:06, ils ne sont pas simultanés. Si tu veux arrondir à la minute, fais-le réellement, pas seulement à l'affichage par un format.
eric

PS : si besoin tu peux avoir l'heure du maxi en remplaçant la dernière ligne ici :

VB:
            ' maxi jour ?
            j = Int(datas(lig1, 1))
            If marche > result(j, 2) Then result(j, 1) = datas(lig1, 1): result(j, 2) = marche
J'aime bcp l'approche d"erric en VBA , car mes fichiers font 36K lignes... par mois... le calcul est bien plus efficace.

Par contre je n'y connais rien en VBA... j'ai testé mais les données ne sont pas bonnes,

170 appels simultanés le 03/01 c'est impossible dans la configuration que j'ai actuellement... (les appels de 0 secondes sont ils comptés ?)

Si tu as l'occasion de commenter ton code pour que je puisse le comprendre ça serait super cool =)

Merci encore
 

eriiic

XLDnaute Barbatruc
Bonjour,

tous les appels sont comptés.
Si tu veux en exclure il faut les supprimer en début de macro car dans l'algorithme une fin n'est pas liée à son début.
Si tu as 5 appels en cours et qu'une fin arrive, je passe à 4 et je me moque totalement de savoir si c'est le 1er ou le 4e qui s'est fini.

D'autre part, certains appels à 0 ne sont pas à 0. Ils apparaissent ainsi car tu n'affiches pas les secondes.
Celui en ligne 10 par exemple débute à 01/01/2022 07:40:09 pour finir à 01/01/2022 07:40:41
A vraiment 0 tu en as 743. Mais s'il s'agit de dimensionner un équipement, il a quand même occupé une place et empêché un autre appel d'aboutir si tu es à toc. Donc... ???
Précise à partir de combien de secondes tu considères comme valide un appel pour le comptabiliser, j'ajouterai.
Faut-il aussi les supprimer de la feuille ?

Commenter le code ne t'aidera pas beaucoup, je préfère t'expliquer le principe.
Il s'agit de parcourir tous les événements dans l'ordre chronologique, en sachant s'il s'agit d'un début ou d'une fin.
Une image :
Tu es au pied d'un escalier, un appel arrive, tu montes une marche (la variable), et tu mets le pointeur sur le début suivant.
Un appel se termine, tu descends une marche, et tu mets le pointeur sur la fin suivante.
A chaque fois que tu montes une marche tu regardes si tu as battu le record de la journée et tu enregistres si c'est le cas (et tu mets le pointeur sur le début suivant).
C'est simple et performant. Tu fais 2 fois x (nombre de comm) boucles seulement au lieu de voir l'état sur des millions de secondes.
Première fois que je fais ça. Si ça te plait je veux bien un + ;-)
eric
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Après avoir trier les données sur Start date et End date en ordre ascendant, j'ai utilisé la fonction médiane pour connaître les chevauchements de début et fin d'une ligne sur la précédente.
=--(MEDIANE($A2;$B2;$A3)=$A3)
retourne 1 si le début de la communication de la ligne 3 est compris dans la communication de la ligne 2
=--(MEDIANE($A2;$B2;$B3)=$B3)
idem pour la fin de la communication de la ligne 3
=SOMME(D3:E3)
indique si au moins début ou fin ou les deux sont compris (=1 ou = 2) ou non (=0) dans la ligne précédente

Valable uniquement si la troisième ou enième discussion suivante ne chevauche pas une enième précédente

Après .... à vous de voir .

Cordialement
 

Pièces jointes

  • Conso Janvier.xlsx
    776.9 KB · Affichages: 5
Dernière édition:

Romain972

XLDnaute Nouveau
Bonjour,

je viens de faire un tri avant d'envoyer les données dans le fichier de Eriic (supprimer les appels de 0 seconde ), mais les données sont quand même pas normales... 100 appels simultanées c'est impossible... voir meme 700 le 30/04 :D

Je ne vois pas ou peut être l'erreur.
 

Pièces jointes

  • Appels Sim.xlsm
    950.2 KB · Affichages: 3

eriiic

XLDnaute Barbatruc
Bonjour,

D'accord, je regarde.
Déjà je retombe bien à 0 (1 en fait mais pas grave) à chaque début de journée, ce qui est plutôt bon signe sur la logique de l'algorithme.
Par contre déboguer quand des centaines de lignes sont en cause est plutôt fastidieux et chronophage.
Et avec 2 jours à 40 de fièvre j'ai un peu de fatigue... ;-)
A+
eric
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 318
Membres
103 176
dernier inscrit
jean.yvesjean.yves