Rechercher date +heures +/-1h + valeurs correspondantes issues de 2 tables

Bonjour à tous,

Peut-être qu'une personne à déjà eu ce cas de figure.

Je récupère sur 2 tableaux distincts des résultats d'analyses de laboratoire avec une date et une heure pour chaque valeur.

Je cherche à afficher dans une 3e table la liste des jours communs dont l'heure est à +/-1h près la même et afficher alors les valeurs correspondantes issues de la table 1 et de la table 2 pour cette date identique mais heure approchée.

Remarque: il y a peut être pour une même journée plusieurs

Le but est au final avec ces deux valeurs pour une date d'établir le rapport PaO2/FiO2

Dans le fichier joint 1er onglet "FJ" il y a un exemple.

Je ne m'en sors pas

Merci par avance à ceux qui proposeront des pistes d'outils à utiliser.

Bien à vous

Sesium

10covid19.xlsx (72.54 Ko)

Bonjour,

Un première réponse de ce que l'on peut comprendre et interpréter !...

Réalisée avec Power Query.

A te relire.

Cdlt.

18covid19.xlsx (90.94 Ko)

Bonsoir Jean-Eric

Merci pour votre réactivité.

votre proposition correspond à ce qui est attendu à un facteur 100 près.

Cela ressemble pour moi à un tour de magie car je ne connais pas Power query.

Est-il possible via les formules Excel d'obtenir le même résultat ?

Ne connaissant pas Power Query je ne suis pas en mesure de comprendre la technique qui a été utilisée pour être autonome.

Afin de contextualiser la démarche et pour donner du sens à votre coup de main donné :

Ce rapport PaO2 (pression O2 en mmHG) / FIO2 (fraction O2 inspirée) est un index de sévérité d'une hypoxie lors de troubles du rapport ventilation/perfusion au niveau pulmonaire donnant lieu à un effet shunt.

La valeur normale est de 95mmHg / 21% = 452.

Une valeur inférieure à 300 traduit une altération sévère des échanges gazeux au sein des poumons.

Une valeur inférieure à 200 traduit une altération très sévère des échanges gazeux comme à l'occasion d'un Syndrôme de Détresse Respiratoire Aigüe.

Ce rapport est un indicateur important de la gestion du patient de réanimation. Selon sa valeur et pour faciliter la respiration le patient est positionné sur le ventre (décubitus ventral= DV) ou sur le dos (décubitus dorsal= DD).

Merci encore pour votre aide.

Bien cordialement.

Bonjour,

J'ai revu ma copie.

3covid19-fj.xlsx (46.21 Ko)

Une solution avec formules est compliquée.

Je persiste donc avec Power Query et cette solution n'est pas difficile à mettre en place. Elle ne demande par de compétences particulières.

Le principe est simple :

Nous avons 2 tables structurées (dynamiques), T_Ventilation et T_Gazométrie.

Je décompose la date et l'heure. Je crée un intervalle pour l'heure (début et fin).

Pour 08:30, l'intervalle est 08:00-09:00

Ceci pour les 2 tableaux.

Je combine (fusionne) ensuite les 2 tables avec comme critère une date et un intervalle communs.

Si les résultats ce nouveau fichier sont ceux attendus, je propose de faire un petit tutoriel pour expliquer comment reproduire la chose.

Cordialement.

Bonjour Jean-Eric,

Décidément vous êtes super réactif.

Merci pour la reprise du tableau ainsi que de l'explication.

Je vais essayer de m’entrainer dès que je vais avoir du temps avec d'autres relevés. Sur le principe je vais ainsi pouvoir combiner plusieurs critères selon le principe des tranches horaires. Je n'avais pas du tout pensé à cette astuce.

Cela m'ouvre de nouvelles perspectives de travail.

Si j'ai compris on crée 2 requêtes avec en commun l'ensemble des plages horaires ce qui permet ensuite de fusionner les deux tables pour regroupe les 2 critère sur chaque plage horaire.

Si vous vous proposez pour la réalisation d'un petit tuto en plus je dis "Bravo" !!!.

Merci beaucoup Jean-Eric pour votre sérieux coup de main.

Très bonne fin de journée.

Sesium

Bonjour,

Tu trouveras ci-joint le tutoriel proposé précédemment.

Le tuto est en format texte (utiliser le bloc notes Windows) pour pouvoir être visualisé sans souci dans Excel et dans Power Query.

Comme dans Excel, il y a un ruban, des onglets et des groupes de données.

Tu vas certainement perdre beaucoup de temps à trouver les commandes.

Donc, avant tout, il serait judicieux que tu consultes ce lien pour te familiariser avec l'éditeur Power Query :

https://support.microsoft.com/fr-fr/office/pr%C3%A9sentation-de-l-%C3%A9diteur-de-requ%C3%AAte-power-query-1d6cdb63-bf70-4ae8-a7d5-6ae9547004d9

Pour résumer la chose, toutes les opérations sont effectuées à partir du ruban, et il suffit de reproduire le tuto précisement.

Si tu as un ou des soucis, je te propose de me contacter par MP (message privé) pour envisager une aide différente.

A te relire.

Cordialement.

Nota : Il faut envisager un modèle de document pour un fichier unique par patient (si je ne me trompe pas !)

Bonjour Jean-Eric,

Merci encore pour votre aide précieuse.

Le tutoriel est parfait ! j'ai pu m'entrainer sur les autres tableaux.

Dans cet exemple la finalité est d'obtenir le ratio PaO2/FIO2 et à le mettre face à la position du malade.

C'est une autre table sur le même principe avec évidemment des heures et dates différentes.

Il y a env 5 ou 6 variables différentes pour les positions mais seules 2 m’intéressent (décubitus dorsal = sur le dos) et décubitus ventral (sur le ventre).

Je vous explique la finalité/contexte :

Le syndrome de détresse respiratoire aigu de l’adulte est un œdème pulmonaire de perméabilité survenant à la suite d’une agression directe ou indirecte de la membrane alvéolo-capillaire + une inflammation pulmonaire intense et une hypoxémie sévère. La mortalité est de 40à 50%. La mortalité du syndrome de détresse respiratoire aiguë (SDRA) reste élevée et peu de thérapeutiques spécifiques validées sont actuellement disponibles. Le SDRA est le syndrome notamment des patients admis en réanimation avec le COVID19.

Le recours précoce et systématique au DV (décubitus ventral) permet d' améliorer la survie des patients atteints de SDRA sévères.

le ratio PaO2/FIO2 est l'indicateur de l'intensité de la détresse respiratoire :

PaO2/FIO2 < 100 => SDRA sévère (NB: avec 1 pression expiratoire positive (PEP) réglée sur le respirateur à au moins 5 cm H2O)

100 < PaO2/FIO2 < 200 = SDRA modéré (NB: avec 1 pression expiratoire positive (PEP) réglée sur le respirateur à au moins 5 cm H2O)

Vous comprenez ainsi pourquoi on suit très régulièrement ce ration PaO2/FiO2 car en fonction on pourra mettre le patient en décubitus ventral pour améliorer sa situation respiratoire et donc diminuer sa mortalité.

Si je reviens à l'outil Power Query => 2 remarques

Finalement ici j'ai 3 tableaux à lier / à l h'eure

Or la liaison peut se faire qu'entre 2 tableaux. Ensuite il faut à nouveau recommencer une opération de fusion avec la fusion intermédiaire et le dernier tableau.

1-Existe t-il une technique pour fusionner les tables à partir de la colonne commune (date/heure)?

2- je me suis aperçu que la création des intervalles n'est pas toujours idéale => pour 8:30 c'est top car on aura comme intervalle 8:00 à 9:00

mais dans le cas ou la mesure a été faite à 6:57 alors l’intervalle devient 6:00 à 7:00 alors qu'en réalité j’accepterais un intervalle sur 6:00 à 8:00. (autrement dit 30 min ou 1 h avant et après le résultat de FiO2).

Quoi qu'il e soit je suis ravi d'avoir grâce à vous découvert ces fonctionnalités.

Bonne journée du souvenir.

Sesium44

Bonjour,

J'ai revu le calcul d'intervalle.

A Vérifier, !...

Sinon, on peut ajouter une colonne avec une notation (SDRA sévère, SDRA modéré, etc.)

Mais avec les seuls valeurs <100, <200 avec une normalité à 452, c'est limité. D'autres valeurs significatives ?

Pour l'histoire du tableau 3, je ne comprends pas tout.

Peux-tu joindre un fichier comportant 3 tables et reformuler la chose ?

Cordialement.

Bonjour Eric,

Oui cette nouvelle version permet en un coup d'oeil de vérifier l'écart entre les heures des 2 varialbles ainsi relier. C'est bien aussi.

Je te joins le travail que j'ai fait avec la 3e table "mobilisation" que je relie à la fusion des 2 autres tables.

Dans l'onglet JF j'explique la finalité et dans l'onglet "FJ" et je mets le résultat après fusion des 3 tables dans l'onget "FJ final".

Bonne soirée

A bientôt

sesium.

Bonjour,

Une mise à jour avec mon interprétation.

Un tableau final par jour, positions différentes et pa02 mmHg / FIO correspondants.

A te relire.

Cdlt.

Nota: les doublons sont supprimés !?

Bonjour Jean-Eric , sesium44

Je prends le train en marche et n'en suis qu'au début de la discussion.

Il y a du texte dans certaines cellules, des valeurs d'erreur et des divisions par zéro

Pas trop pigé la définition de vos intervalles.

Pour ma part, j'ai ajouté et soustrait une heure à vos relevés de ventilation et gazométrie pour composer les intervalles.

Sinon, j'ai rassemblé vos mesures comme ceci : restitution dans une feuille nouvellement créée.

Option Explicit
Sub test()
    Dim a, b, c(), i As Long, ii As Long, n As Long
    With Sheets("FJ")
        a = .Cells(1).CurrentRegion.Value2
        b = .Cells(7).CurrentRegion.Value2
    End With
    ReDim c(1 To (UBound(a, 1) - 1) * (UBound(b, 1) - 1) + 1, 1 To 7)
    n = 1
    c(n, 1) = "Date ventilation": c(n, 2) = "Heure ventilation"
    c(n, 3) = "Heure gazométrie": c(n, 4) = "Date gazométrie"
    c(n, 5) = "Valeur PaO2 mmHg": c(n, 6) = "Valeur FiO2"
    c(n, 7) = "Valeur PaO2 mmHg /FIO2"
    For i = 2 To UBound(a, 1)
        For ii = 2 To UBound(b, 1)
            If ((a(i, 1) - (1 / 24) >= b(ii, 1) - (1 / 24) And a(i, 1) - (1 / 24) <= b(ii, 1) + (1 / 24)) Or _
                (a(i, 1) + (1 / 24) >= b(ii, 1) - (1 / 24) And a(i, 1) + (1 / 24) <= b(ii, 1) + (1 / 24))) Then
                n = n + 1
                c(n, 1) = a(i, 2): c(n, 2) = a(i, 3)
                c(n, 3) = b(ii, 3): c(n, 4) = b(ii, 2)
                c(n, 5) = b(ii, 5): c(n, 6) = a(i, 5)
                If IsNumeric(c(n, 6)) And c(n, 6) <> 0 And IsNumeric(c(n, 5)) Then
                    c(n, 7) = c(n, 5) / c(n, 6)
                End If
            End If
        Next
    Next
    With Sheets.Add.Cells(1).Resize(n, UBound(c, 2))
        .Value = c
        .Columns(1).NumberFormat = "m/d/yyyy"
        .Columns(4).NumberFormat = "m/d/yyyy"
        .Columns(2).NumberFormat = "h:mm;@"
        .Columns(3).NumberFormat = "h:mm;@"
        .Columns(7).NumberFormat = "0.00"
        .VerticalAlignment = xlCenter
        .BorderAround Weight:=xlThin
        .Borders(xlInsideVertical).Weight = xlThin
        With .Rows(1)
            .Font.Size = 11
            .Interior.Color = 9359529
            .BorderAround Weight:=xlThin
            .HorizontalAlignment = xlCenter
        End With
        .Columns.AutoFit
    End With
End Sub

Je continue à suivre la discussion.

klin89

Bonjour Jean-Eric,

Bravo ! c'est une bonne mise en forme pour la finalité. C'est exactement cela. Il faut juste avoir l'heure affichée en plus de la date car une journée hospitalière présentement c'est de 8h à 8h et non pas de 00h à 00h comme on pourrait le penser. Exemple du 16 mai 8h au 17h mai 8h on considère que c'est la journée du 16 mai (correspond au roulement des équipes).

Avec l'heure dans le tableau en plus de la date final je sais de suite dans quelle journée je suis. C'est une petite particularité

Merci pour cet échange et cette nouvelle proposition, Jean Eric.

Bonne journée

Sesium

Bonsoir Klin89

Merci pour ton intervention.

Pour ma part je ne maîtrise pas le Excel VBA

Jean Eric ma proposé d'utiliser Power Query afin de relier 3 variables dont le point commun est date/heure.

Bonne soirée

sesium

Bonjour,

Je reviens après quelques jours d'inactivité.

Ta dernière question est-elle toujours d'actualité ?

Faut-il simplement ajouter l'heure ?

Cdlt.

Bonjour Jean-Eric,

C'est exact; Merci pour votre retour. Tout est ok sauf ma remarque concernant l'heure (message du 16 mai).

Bonne journée.

Sesium44

Rechercher des sujets similaires à "rechercher date heures valeurs correspondantes issues tables"