Aide pour fonction vba sur recherche date

Résolu
Anecdote -  
 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
Configuration: Windows Vista Internet Explorer 7.0

3 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  3. Anecdote
     
    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