Aide pour fonction vba sur recherche date

Résolu/Fermé
Anecdote - 13 juin 2009 à 21:47
 Anecdote - 14 juin 2009 à 20:27
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
A voir également:

3 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
14 juin 2009 à 10:54
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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
14 juin 2009 à 19:22
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
0
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
0