Aide pour fonction vba sur recherche date
Résolu/Fermé
A voir également:
- Aide pour fonction vba sur recherche date
- Fonction si et - Guide
- Recherche musique - Guide
- Google recherche par image - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche adresse - Guide
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
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
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
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
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:
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