Comparaison de Date avec décimales des heures
Bonjour,
Travaillant dans un Hôpital je travail à calculer la présence de patients à 09h00 dans un service et qui seraient dans leurs lits depuis + 24h. Pour cela je dispose:
dates d'entrée
heures d'entrée
dates de sorties
heures de sorties
D'ordinaire je m'en sors pas trop mal avec une fonction countif, mais dans ce cas je ne dois pas seulement compter des patients présents donc filtrer sur les colonnes entrée et sortie mais je dois aussi les comparer, or si je ne me trompe les countif ne permettent pas çà, c'est du genre :
columns(1), filtre1 ,_
columns (2), filtre2, ....
mais pas du genre :
columns(1)-columns(2), ">24:00"
Sub test()
Dim X As Byte
Dim DTARGET As Long
Dim HEURE As Date
HEURE = TimeValue("09:00:00")
DTARGET = CLng(DateValue(9 & "/" & 2 & "/" & 2014))
With Sheets("Feuil1")
X = Application.CountIfs( _
.Columns(4), DTARGET, _
.Columns(2), "<" & DTARGET)
End With
MsgBox X
End SubJe vous ai fais un piti fichier en pièce-jointe, où je suis sensé trouvé 5 patients le 09/02/2014 (date prise au hasard), soit donc des patients rentrés au plus tard le 08/02/2014 à 09:00 (pour avoir mon minimum de 24h de présence dans le lit).
Alors j'arrive à compter le nombre de patients si je rajoute en effet une colonne, bon moi çà me dérange toujours de rajouter une colonne pour chaque nouvelle formule qui m'est demandé, on finit par avoir un fichier deux plus gros qu'au départ et je trouve çà sale.
Je me demandais s'il n'était pas possible de faire ce calcul directement sur vba ?
Sachant que j'ai déjà essayé les fonctions de comparaison de date mais elles ne semblent pas prendre en compte les décimales représentant les heures.
J'utilise Datedif ("n", "09/02/2014 09:00:00", "08/02/2014 09:00:00)
Mais çà ne me donne pas exactement l'heure, on voit bien que les dates sont tronquées, sans prise en compte des décimales. Mais même dans ce cas là je ne vois pas comment rentrer çà dans un countif. En gros je tourne en rond.
Si quelqu'un peut m'aider... J'ai un peu honte de vous demander encore de l'aide
Pershonne ne m'aide
Bon je vais faire plus simple et moins exigeant !
Je renvoie le fichier avec une ligne par passage de patient dans un service
J'ai les entrées et sorties en heures et date
Est-il possible dans le tableau figurant à droite de la base de données d'avoir pour chaque date de l'année, d'avoir le nombre de patient qui chaque jour à 09h00 sont présents depuis au moins 24h ?
Je n'y arrive pas et çà fait 2 jours que je suis dessus.
Merci d'avance pour ceux qui y passeront de leur temps.
Bonjour,
Si ça peut te dépanner, avec la date en F2 :
=SOMMEPROD((D2:D8836=F2)*((D2:D8836+C2:C8836-B2:B8836-A2:A8836)>1)*(C2:C8836>--"9:00"))Mais je ferais plutôt un une colonne de plus et un TCD
eric
J'essaie et te dis çà ^^ Merci déjà !
EDIT
Ha oui mais non ce n'est pas çà, je suis tombé dans le piège aussi, le problème c'est quand on compare les dates dans une matrice ce sont les dates de la BD soit date de sortie - date de fin, or un patient peut etre présent +24h sur son temps de passage mais pas forcément au moment interrogé exemple :
DBT 01/01/2014 à 12h00
FIN 03/01/2014 à 16h00
Si on fait la matrice comparant ces deux dates en effets il est resté un peu plus de deux jours
or le 02/02/2014 à 9h00 cela ne fait pas encore +24h.
Pour çà que c'est difficile, à moins de rajouter une colonne pour chaque date interrogée, une colonne qui mettrais la date interrogée comme date de fin.
Cette colonne supplémentaire pour ne s'afficher que si certains critères sont remplis pour gagner du temps, sachant que ma base risque de dépasser les 100.000 lignes...
Eric, merci tu m'as permis de réussir le calcul !
En fait, 7 est bien le bon nombre de patients en date du 09/02.
Pour ceux que cela intéresse je met le calcul en pièce-jointe légèrement modifié, la formule se trouvant en colonne A du second onglet.
Merci beaucoup Eric !
EDIT
la formule en PJ est un peu à reprendre mais rien de compliquer
Il faut faire une formule qui filtre sur les séjours > 09/02/2014
et une seconde formule qui filtre sur les séjours = 09/02/2014 dont l'heure de sortie soit >= 09:00:00
Voilà ^^
C'est vrai qu'il faut tenir compte des sorties postérieures à la date de critère.
Autre formule plus simple (plus que 2 additions et 2 tests, dans un gros sommeprod ça compte) avec cette date en F2 mise sous la forme 01/01/14 9:00 :
=SOMMEPROD((($B$2:$B$9000+$A$2:$A$9000)<=(F2-1))*(($D$2:$D$9000+$C$2:$C$9000)>=F2))
eric