Rechercher : dans
Par :

Aide pour fonction vba sur recherche date

Dernière réponse le 14 jun 2009 à 20:27:25 Anecdote, le 13 jun 2009 à 21:47:04 
 Signaler ce message aux modérateurs

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

Configuration: Windows Vista Internet Explorer 7.0

Meilleures réponses pour « Aide pour fonction vba sur recherche date » dans :
[VBA] RechercheV Polyvalente VoirRECHERCHE POLYVALENTE Pour les accros et les inconditionnels des fonctions d'Excel, avant de crier au scandale, lisez les quelques lignes suivantes. La RechercheV d'origine a beaucoup de limites: La colonne de la donnée doit être avec un offset...
[VBA] Recherche Find avec retour multiple VoirUne simple recherche Find vous retourne la première coordonnée trouvée. Dans certaines circonstances il est nécessaire de connaître toutes les coordonnées des occurrences trouvées. C'est ce que fait cette petite fonction. Dans un module...
Google - Fonction calculatrice VoirGoogle dispose d'une calculatrice intégrée. Pour l'utiliser, il suffit simplement d'entrer une expression dans le champ de saisie et de lancer la recherche ! Cette fonction est aussi accessible à partir de la barre Google ou des navigateurs...
VBScript - Les fonctions de date et de temps VoirLes fonctions de date et de temps Fonction Description Date Retourne la date du système DateAdd(interval, number, date) Ajoute un intervalle de temps (interval) à une...
VBScript - Les fonctions et les procédures VoirLa notion de procédure On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction (ou procédure)...

1

eriiic, le 14 jun 2009 à 10:54:50

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

Répondre à eriiic

2

michel_m, le 14 jun 2009 à 19:22:50

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
Cordialement, Michel

Répondre à michel_m

3

 Anecdote, le 14 jun 2009 à 20:27:25

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

Répondre à Anecdote