Association de lignes pour calcul de temps

Bonjour,

Je cherche à extraire des données d'un export mais j'ai quelques soucis à le faire, d'où ma sollicitation aujourd'hui.

Une machine répertorie des messages lorsqu'un événement se produit (capteur détectant une anomalie ou juste une action à effectuer etc...). On a pour chaque ligne de l'export:

  1. l'heure à laquelle l'action se produit
  2. le lieu
  3. le type de message (DEF, EVT, CMD)
  4. l'état de l'action (APP = apparition, DIS = disparition)
  5. le code du message
  6. le détail du message (texte d'explication)

Mon objectif est d'associer les lignes par paire (La ligne d'apparition APP et de disparition DIS du message) pour en déduire le temps que dure l'action. Je me suis focalisé sur les défauts DEF car c'est ce qui me pose le plus de problème dans mon projet.

A noter que pour trouver la paire, le code numérique doit correspondre mais aussi le lieu et le type de message entre les deux lignes.

Ma grande difficulté est que plusieurs lignes peuvent s'écouler avant de trouver la paire.

L'idée d'une boucle d'algo m'est venue naturellement (détail ci-dessous) malheureusement je suis très mauvais en VBA et rien de correct n'en sort...

Je pense que l'idée est correcte mais l'exécution n'est pas bonne et il existe peut-être une solution sans macro plus optimisée.

Je suis ouvert à toute autre proposition pour résoudre mon problème.

Vous trouverez ci-joint un document exemple récapitulant mon problème avec un essai de macro qui résume l'idée de l'algorithme pour associer les lignes.

7fichier-essai.xlsm (78.61 Ko)

En vous remerciant de l'attention portée à mon problème,

Nightnoob

Bonjour,

Une proposition Power Query.
Cdlt.

5fichier-essai.xlsx (86.05 Ko)
capture d ecran 2021 08 01 232119

Bonjour Jean-Eric,

Tout d'abord merci pour votre aide.

En essayant de compiler mes datas avec votre modèle, j'ai le message d'erreur suivant :

" [Expression.Error] Il y a trop d'éléments dans l'énumération pour terminer l'opération "

J'ai compilé environ 3000 lignes, l'équivalent d'une journée de datas.

Le problème vient-il du fait qu'il y a en effet trop de lignes ou bien qu'un même défaut peut se présenter plusieurs fois dans l'export et que l'association est alors plus compliquée à gérer ?

Cordialement,

Nightnoob

Bonjour,

Joins un nouveau fichier représentatif !...
Cdlt.

Bonjour Jean-Eric,

Ci-joint un fichier représentatif.

Cordialement,

Nightnoob

Bonjour,

Autre proposition par formule, juste pour s'amuser car la proposition de Jean-Eric(que je salue) avec Power Query est imbattable et dans l'air du temps.

Formule matricielle en H2 (à valider avec CTRL + SHIFT + ENTREE),

=SIERREUR(SI(ET($E2="<APP";
EQUIV(1;($C2:$C$3000=$C2)*($E3:$E$3000="<DIS")*($G3:$G3000=$G2);0)>0);
(INDEX($A3:$B$3000;EQUIV(1;($C3:$C$3000=$C2)*($E3:$E$3000="<DIS")*($G3:$G$3000=$G2);0);1)+
INDEX($A3:$B$3000;EQUIV(1;($C3:$C$3000=$C2)*($E3:$E$3000="<DIS")*($G3:$G$3000=$G2);0);2))-
($A2+$B2);"");"")

petite remarque, je n'ai pas opté d'utiliser les plages du tableau structuré parce qu'il faut que la dernière ligne de la plage sélectionnée soit supérieure à la dernière ligne du tableau structuré, dans le cas présent la dernière ligne est 2720, j'ai donc saisi la valeur 3000.

le fichier

Cdlt

Bonjour,

Une mise à jour.
Vérifier les résultats et porter attention à la donnée filtrée qui pose souci !...
Cdlt.

Bonjour Arturo83,

Merci beaucoup pour votre aide. Le fichier fonctionne avec mes données et je vais pouvoir entamer la phase d'analyse avec cela.

Passez une agréable journée,

Nightnoob

Bonjour Jean-Eric,

Merci pour votre aide et votre réactivité pour m'aider sur cette problématique, j'ai maintenant tous les outils pour avancer sur le sujet !

Je vous souhaite une bonne continuation.

Bien cordialement,

Nightnoob

Re,

Là, il est intéressant de savoir quelle est l'option que tu vas retenir ?
Dans hypothèse, évidemment que ma proposition soit fonctionnelle.
Une telle matricielle sur 3000 lignes, voire +, consomme des ressources conséquentes.
Cdlt.

Bonjour,

En filtrant mieux mes données, j'ai réussi à faire tourner votre version qui, effectivement, me prend beaucoup moins de temps à faire tourner. Je vais donc utiliser votre version.

Cordialement,

Nightnoob

Rechercher des sujets similaires à "association lignes calcul temps"