Bonjour
J'ai écrit le code suivant dans un module VBA :
Problème :
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
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?
Partager