Aide pour fonction vba sur recherche date [Résolu/Fermé]

Signaler
-
 Anecdote -
Bonjour,
Je souhaiterai trouver une date dans un tableau.
Voici la fonction vba excel que j'ai commencé mais ça ne marche pas.

Function Recherchedate(Jour As Date, Nom as String)
Dim vTableau As Range
Worksheets(Nom).Activate
Set vTableau = Range("B3:C50")
If vTableau.Find(Jour).Select = True Then
Active.Cell.Value = 1
Else: Active.Cell.Value = 0
End If
End Function

Si quelqu'un pouvait m'aider à finaliser cette fonction, ce serait génial. Merci d'avance.
Anecdote

3 réponses

Messages postés
23396
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
13 mai 2020
6 157
Bonjour,

lorsque tu fais une fonction le résultat est retourné quand tu affectes une valeur à ton nom de fonction.
le .select de vTableau.Find(Jour).Select est superflu à mon avis...

Sans regarder si le reste ça serait donc :
Function Recherchedate(Jour As Date, Nom as String)
Dim vTableau As Range
Worksheets(Nom).Activate
Set vTableau = Range("B3:C50")
If vTableau.Find(Jour) = True Then
Recherchedate = 1
Else: Recherchedate = 0
End If
End Function

ou bien si tu veux retourner VRAI ou FAUX :
Function Recherchedate(Jour As Date, Nom as String) as boolean
Dim vTableau As Range
Worksheets(Nom).Activate
Set vTableau = Range("B3:C50")
Recherchedate = vTableau.Find(Jour)
End Function

en plus tu fais une activation de feuille pour rien, tu peux tester en plus :
Function Recherchedate(Jour As Date, Nom as String) as boolean
Dim vTableau As Range
Set vTableau = Worksheets(Nom).Range("B3:C50")
Recherchedate = vTableau.Find(Jour)
End Function

et tant qu'on y est le .select de vTableau.Find(Jour).Select est superflu à mon avis...
eric
Messages postés
16188
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
13 mai 2020
2 951
Bonjour,
Eric ( bonjour) a répondu ce matin au moment où il y avait des problèmes sur le forum...

Je me permets donc de prendre le témoin.
Je te conseille vivement de lire ce topo si tu te lances dans les fonctions:
http://xcell05.free.fr/pages/prog/udf.htm
rédigé par Laurent Longre, un des meilleurs exceliens de la planète
je cite:
"Dans VBA, le nom de la fonction sert à la fois à l'identifier et à stocker la valeur de retour." ...

"Parmi les instructions inutilisables, les plus courantes sont les méthode .Find et .SpecialCells de l'objet Range, ainsi que les propriétés CurrentRegion et CurrentArray. "


ci dessous un petit exemple à modifier poour plusieurs pages:

Function recherchedate(jour_cherche As Date, plage As Range)
Dim cellule As Range
For Each cellule In plage
    If cellule = jour_cherche Then
        recherchedate = 1
        Exit Function
    End If
Next
recherchedate = 0
End Function
Bonsoir,

Merci Eric pour ton aide.
Michel, merci ça marche. Le problème avec Excel et les macros, c'est qu'en tant que débutante, je sais que je peux y arriver, mais je n'ai pas encore le niveau.
En tout cas, merci pour votre aide.
Anne