Rechercher une valeur dans une cellule et recupérer la ref cellule

Bonjour

J'aimerai pouvoir rechercher dans une colonne de ma feuille 2 (A3:A33) la date du jour, une fois que c'est trouvé stocké dans une variable la ref de la cellule de ma date.

J'ai écrit ça pour récupérer la date du jour dans une variable, lrsque j'exécute ma macro il me remonte bien la date du jour dans une message box mais il me met non trouver alors que dans mon tableau qui se trouve dans la feuille 2 de mon classeur, dans la première colonne la date du jour est bien présente.

Sub Test()

Dim date_a_trouver As String
Dim trouver As Boolean
Dim datej As String

datej = Date
MsgBox (datej)

date_a_trouver = datej
trouver = recherche_date(date_a_trouver)
If trouver = True Then
    MsgBox ("Trouver")
Else
    MsgBox ("Non trouver")
End If

End Sub
Function recherche_date(daterech As String)

Dim onglet As Worksheet
Dim derniere_ligne As Long
Dim date_en_cours As String

Set onglet = Worksheets(2)
recherche_date = False
For i = 3 To derniere_ligne
    date_en_cours = onglet.Cells(i, 1).Value

    If date_en_cours = daterech Then
        recherche_date = True
    End If
Next

End Function

Merci

Bonjour atalec
Avec un fichier joint, les réponses seraient plus faciles à trouver.
Essayez avec ceci tout simplement. En supposant que la date du jour est unique dans la colonne A

Sub Test()
Dim date_a_trouver As String
Dim trouver As Boolean
Dim datej As String
Dim RefCel As String
Dim derniere_ligne As Long
datej = Date
MsgBox (datej)

date_a_trouver = datej
With Feuil2
    derniere_ligne = .Range("A" & .Rows.Count).End(xlUp).Row
        For i = 3 To derniere_ligne
            If .Range("A" & i) = datej Then
                RefCel = .Range("A" & i).Address
                    MsgBox ("la cellule est : " & RefCel)
                    Exit Sub
            End If
        Next i
End With

End Sub

Cdt

Papy Henri

bonjour,

Autre solution... (en principe les dates ne sont pas des string mais des Long !) essaie comme ça :

Sub Test()
Dim date_a_trouver As Long
Dim trouver As String
date_a_trouver = Date
trouver = recherche_date(date_a_trouver)
If Not trouver = "" Then
    MsgBox trouver
Else
    MsgBox ("Non trouver")
End If
End Sub

Function recherche_date$(daterech&)
Dim onglet As Worksheet
Dim derniere_ligne As Long
Dim i%
Set onglet = Worksheets(2)
derniere_ligne = onglet.Range("A" & .Rows.Count).End(xlUp).Row
For i = 3 To 25
    If onglet.Cells(i, 1) = daterech Then
        recherche_date = onglet.Cells(i, 1).Address
        Exit Function
    End If
Next
End Function

A+

Bonjour à tous ,

Une autre solution sans boucle. Saisir une date en F1 puis cliquer sur le bouton.

Dans le classeur joint, le code dans module1 est commenté :

Sub Test()
Dim date_a_trouver As Date, celluleCible As Range, s As String
   date_a_trouver = [F1]
   Set celluleCible = recherche_date(date_a_trouver)
   s = "La date recherchée était : " & Format(date_a_trouver, "dd/mm/yyyy") & vbLf
   If celluleCible Is Nothing Then
      s = s & "Cette date n'a pas été trouvée."
      MsgBox s, vbExclamation
   Else
      s = s & "Cette date a été trouvée dans la cellule " & celluleCible.Address(0, 0)
      s = s & " de la feuille " & celluleCible.Parent.Name
      MsgBox s, vbInformation
   End If
End Sub

Function recherche_date(daterech As Date) As Range
Dim PlageRech As Range, lignePlageRech
   Set recherche_date = Nothing
   Set PlageRech = Worksheets(2).Range("a3:a33")
   lignePlageRech = Application.IfError(Application.Match(CLng(daterech), PlageRech.Value2, 0), 0)
   If lignePlageRech > 0 Then Set recherche_date = PlageRech.Cells(lignePlageRech, 1)
End Function

Merci

ça fonctionne nickel je vais pouvoir utiliser ça pour continuer.

Merci ca fonctionne ;-)

Rechercher des sujets similaires à "rechercher valeur recuperer ref"