Bonjour

J'ai écrit le code suivant dans un module VBA :

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Function NumColSemaine(strSheet As String, strPlage As String, Optional dDate As Date)
 
' Fonction NumColSemaine
' Renvoie le numéro de la colonne de la semaine passée. Par défaut, semaine 
' courante (on fait référence à une plage de cellules, en l'occurrence 
' "M2:ASJ2", contenant uniquement les dates des lundis : 
' ...2 nov 2009, 9 nov 2009, 16 nov 2009, ...)
' Arguments :
' 1.*Feuille où se trouve la plage de dates
' 2. Plage de dates
' 3.(facultatif) Date dont on cherche la colonne correspondante – Par défaut : aujourd'hui
'
 
Dim c As Object
Dim iCol As Integer
 
' Par défaut, date du jour : recherche colonne semaine actuelle
If dDate = 0 Then
    dDate = Date
End If
 
' Les colonnes contiennent des dates de lundi, d'où soustraction de Weekday
Set c = Sheets(strSheet).Range(strPlage).Find(dDate - Weekday(dDate, vbMonday) + 1)
 
    If c Is Nothing Then
        iCol = 0
    Else
        iCol = c.Column
    End If
    Set c = Nothing
 
    NumColSemaine = iCol
 
End Function
Problème :
Quand j'appelle la fonction depuis la fenêtre exécution, tout fonctionne à merveille et l'objet c est rempli des données correspondant à la cellule trouvée.

En revanche, quand j'appelle la fonction depuis une feuille de calcul, c reste égal à Nothing et la fonction ne renvoie pas la valeur attendue.

Une idée, quelqu'un?