Equivalent formule en VBA

Bonjour à tous,

j'ai besoin de convertir une formule excel en vba

=NB.SI.ENS(Projects[End_Date];">"&AUJOURDHUI();Projects[End_Date];"<="&MOIS.DECALER(AUJOURDHUI();Admin!C17))

j'ai commencé à regarder

Set MyEndDate = MyTable.ListColumns("End_Date").DataBodyRange
Sheets("DashBoard").Range("BF5") = Application.WorksheetFunction.Countifs(MyEndDate;>Date; MyEnDate;)

mais je suis bloqué sur la dernière partie de la formule...

Une petite aide serait appréciée,

merci par avance,

@+

Bonjour,

Un essai :

Sheets("DashBoard").Range("BF5") = Application.Countifs(Range("Projects[End_Date]"),">"&Date,Range("Projects[End_Date]"),"<="&DateAdd("m",Sheets("Admin").Range("C17"),Date))

merci la syntaxe ne génère pas d'erreur mais par contre le résultat me donne 0 alors que dans mon cas doit me retourner 2

merci la syntaxe ne génère pas d'erreur mais par contre le résultat me donne 0 alors que dans mon cas doit me retourner 2

Un fichier type à transmettre pour pouvoir tester tout ça ?

--> Les dates sont-elles des dates valides dans le fichier ?

--> Est ce que la fonction Excel donne le bon résultat ?

Vous pouvez aussi contrôler le code pas à pas, en évaluant par exemple un sous ensemble dans une variable ou une msgbox :

MsgBox "La date de fin est : " & DateAdd("m",Sheets("Admin").Range("C17"),Date)
MsgBox "La date de fin est : " & DateAdd("m", Sheets("Admin").Range("C17"), Date)

me renvoit bien la date du jour + 6 mois dans mon cas soit le 12/10/2021

Les dates sont-elles des dates valides dans le fichier ? OUI

--> Est ce que la fonction Excel donne le bon résultat ? OUI

Un fichier type à transmettre pour pouvoir tester tout ça ? NON désolé car contenu dans un base de donnée globale non communicable en l'état

Autre essai :

Sheets("DashBoard").Range("BF5") = Application.Countifs(Range("Projects[End_Date]"),">"&CLng(Date),Range("Projects[End_Date]"),"<="&CLng(DateAdd("m",Sheets("Admin").Range("C17"),Date)))

Si ça ne fonctionne toujours pas, je ne pourrais pas t'aider davantage sans fichier.

fonctionne tres bien merci !!

fonctionne tres bien merci !!

Ok, pour l'explication :

Une date valide est convertible en nombre. Dans une formule NB.SI.ENS, les conditions s'écrivent sous forme de texte, et du coup les écritures suivantes sont équivalentes : ">44298" et ">12/04/2021"

Néanmoins, VBA fonctionne avec les écritures anglaises, où les dates ne s'écrivent pas au format JJ/MM/AAAA, je suspecte donc un défaut de reconnaissance de la date écrite ainsi sous forme de texte. CLng() permet de la convertir en nombre entier, et donc de s'affranchir du format d'écriture de la date.

merci pour cette explication!

Rechercher des sujets similaires à "equivalent formule vba"