Bonjour,
je reviens vers vous aujourd'hui car j'ai un petit soucis avec un SOMMEPROD utilisant une fonction perso.
J'ai récupéré sur le web, merci les contributeurs, une fonction pour trouver le numéro de semaine ISO :Cela fonctionne très bien. Mais je devais utiliser cela sur toute une plage de dates pour intégrer dans le SOMMEPROD. J'ai donc adapté le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Public Function NumSemISO(ByVal d As Date) Dim wd As Long wd = Weekday(d, vbMonday) NumSemISO = Int((d - DateSerial(Year(d - wd + 4), 1, 1) - wd + 11) / 7) End FunctionSi j'utilise une formule du type MAX(NumSemISOm(ListeDates)), aucun soucis, j'obtiens 52, et MIN, j'obtiens 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Public Function NumSemISOm(ByVal RnDates As Range) Dim wd As Long Dim dat As Date Dim TabDates() As Integer Dim i As Integer ReDim TabDates(RnDates.Rows.Count) For i = 0 To UBound(TabDates) d = RnDates(i + 1) wd = Weekday(d, vbMonday) TabDates(i) = Int((d - DateSerial(Year(d - wd + 4), 1, 1) - wd + 11) / 7) Next i NumSemISOm = TabDates End Function
Je travaille sur deux années, c'est donc d'une logique implacable
Mais si j'essaie de l'utiliser dans un SOMMEPROD avec par exemple *NumSemISOm(ListeDates)=3*, c'est comme si je n'avais rien mis ...
Donc ma question, ce code vous paraît-il correct pour ce que je veux en faire ?
Merci d'avance.
Edit : En fait la fonction marche parfaitement bien. J'ai essayé avec un SOMMEPROD plus basique, tous les résultats sont logiques. Le problème est que j'essaie d'appliquer un critère année et ensuite un critère numéro de semaine sur la même plage de cellules ... ce qui ne fonctionne pas.
J'ai modifié le titre de la discussion, si quelqu'un cherche une fonction telle que celle-ci, il trouvera plus facilement.
Et un si un modo passe par là pour déplacer dans la partie VBA
Par contre, je sens que je vais ouvrir un nouveau sujet avec mon problème de sommeprod avec critère sur une même colonne avant la fin de la journée
Fred
Partager