Bonjour,
je reviens encore une fois, après différentes discussions sur le forum j'ai eu des débuts de réponse à ce que je recherchais.
Je travaille en hôpital et plus précisément sur les actes médicaux qu'il y a eu en 2020.
Le but est de retrouver des unités de soins sur ma feuille "Base". Enfaite, ma feuille "base" comporte les dates (avec heure) des actes médicaux en fonction des numéros de séjours.
Sur la feuille "base séjour", ce sont les séjours passés en 2020 avec les intervalles de date pour une unité de soins en question. Par exemple, je possède le numéro de séjour 11278908 et du 02/02/2020 00:00 au 04/02/2020 00:00, j'étais dans l'unité médicale MEH puis du 04/02/2020 00:01 au 06/02/2020 00:00 en MGH.
Pour chaque intervalle, j'ai peut être reçu un ou plusieurs actes médicaux. De ce fait, dans ma "Base", mes actes ayant eu lien dans l'intervalle où j'étais en MEH doivent me renvoyer l'unité de soins MEH et de même pour MGH.
J'ai eu un super début de réponse en VBA mais j'ai du mal à le transposer à ma base de 400 000 actes, je mets donc le code ici si quelqu'un arrive à me le modifier.
Option Explicit
Sub CommandButton1_Click()
Dim tabloS, tabloB, tabloR(), dico
Dim b&, s&, flag&
Set dico = CreateObject("Scripting.Dictionary")
tabloS = Sheets("Base séjour 2020").Range("A1").CurrentRegion
tabloB = Sheets("toutes les lignes d'activité CC").Range("B1").CurrentRegion
ReDim tabloR(1 To UBound(tabloB, 3), 1 To 1)
For b = 2 To UBound(tabloB, 2)
dico(tabloB(b, 2)) = tabloB(b, 5)
Next b
For b = 2 To UBound(tabloB, 2)
flag = 0
For s = 2 To UBound(tabloS, 1)
If tabloS(s, 1) = tabloB(b, 2) And dico(tabloB(b, 5)) >= tabloS(s, 2) And dico(tabloB(b, 5)) <= tabloS(s, 3) Then
tabloR(b - 1, 1) = tabloS(s, 4)
flag = 1
End If
Next s
If flag = 0 Then tabloR(b - 1, 1) = ""
Next b
Range("C2").Resize(UBound(tabloR, 1), 1) = tabloR
End Sub
De plus, je vous indique à quoi font référence les variables :
tabloS : Variable tableau qui représente toutes les valuers du tableau de la feuille ‘’Base de séjour’’
tabloB : Variable tableau qui représente toutes les vaeurs du tableau de la feuille ‘’Base’’
tabloR : Variable tableau qui représente toutes les valeurs du résultat qu’on mettra dans la colonne C de la feuille ‘’Base’’
dico : dictionnaire des valeurs des numéros de la colonnne 1 du tableau de la colonne A de la feuille ‘’Base ‘’
b : variable de ligne du tabloB
s : variable de ligne du tabloS
flag : variable qui permet de savoir si on a trouvé une unité de soin pour la ligne b du tabloB
Si quelqu'un a une solution avec une formule Excel (j'en avais une qui marchait mais bizarrement elle me décale d'une cellule la bonne unité de soins ce que je ne comprends pas) je suis preneur.
Merci d'avance