Bonjour à tous,
J'espère que vous allez bien
BsAlv, ton code est "diaboliquement" efficace.
Tu es un génie.
Tu ne te rend pas compte des centaines des lignes que tu m'as fait économisé (donc tu m'évites de perdre du temps, et par la même occasion m'empêche d'alourdir mon code).
Tu as fusionné le code Excel de DAN avec du VBA.
Chapeau
Pour ceux qui pourront être intéressé, voici le code final.
Bien de chose à vous et bon dimanche
Sub M_Past007()
Dim c, c0, D1 As Long, D2 As Long, Sexe, Designation
Set c = Range("Past007") 'la plage pour ces formules
For Each c0 In c.Cells
Designation = c0.Offset(, c.Column - 1 - c0.Column).Value 'quel designation
Sexe = c0.Offset(c.Row - 1 - c0.Row).Value 'quel sexe
Select Case LCase(c0.Offset(c.Row - 2 - c0.Row).Value) 'dépendant de l'age demandé, les dates de début et fin
'si nécessaire, on peut calculer les 2 dates au lieu de ces 2 dates fixes
Case "0-11 mois": D1 = DateSerial(2025, 1, 1): D2 = DateSerial(2025, 12, 31)
Case "1-4 ans": D1 = DateSerial(2021, 1, 1): D2 = DateSerial(2024, 12, 31)
Case "5-14 ans": D1 = DateSerial(2011, 1, 1): D2 = DateSerial(2020, 12, 31)
Case "15-49 ans": D1 = DateSerial(1975, 1, 1): D2 = DateSerial(2010, 12, 31)
Case ">=50 ans": D1 = DateSerial(1900, 1, 1): D2 = DateSerial(1974, 12, 31)
End Select
s = Replace(Replace(Replace(Replace("COUNTIFS(BaseRH[pathologie],""CAS CONSULTÉS"",BaseRH[CHOIX],@1,BaseRH[SEXE],@2,BaseRH[DATE DE NAISSANCE],"">=@3"",BaseRH[DATE DE NAISSANCE],""<=@4"")", "@1", Chr(34) & Designation & Chr(34)), "@2", Chr(34) & Sexe & Chr(34)), "@3", D1), "@4", D2)
'on choisit une des 2 lignes suivantes
c0.FormulaR1C1 = "=" & s 'oubien on utilise la formule
'c0.Value = Evaluate(s) 'oubien seulement le résultat
Next
Sheets("BILAN JOURNALIER").Select
Range("a2").Select 'Bascule sur la cellule "A2"
End Sub