Problème avec la méthode Range.Find

Bonjour les geeks,

Je bute sur un soucis de code avec la méthode Find.

En fait, dans mon projet je chercher à déterminer la ligne correspondante à une certaine date dans une plage donnée.

Mais lorsque j'exécute, il y a un probmème dans ce bout de code:

Set trouve = plage.Find(Valeur_Cherchee, LookAt:=xlWhole)
           MsgBox (trouve.Row)

En fait, la "Valeur_Cherchee " doit être déterminée lorsque les 2 listes déroulantes de dates du tableau de bord ont la même valeur:

Voici le bloc de code complet:

If Date1_TDB.Value = Date2_TDB.Value Then

        Valeur_Cherchee = Format(Date1_TDB.Value, "dd/mm/yyyy")

        Set plage = Sheets("BD").Range("B7:B" & lastLine)

        'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
        Set trouve = plage.Find(Valeur_Cherchee, LookAt:=xlWhole)
        MsgBox (trouve.Row)

        'Copier la date
        Sheets("TDB_usine").Range("E2") = Sheets("BD").Range("B" & trouve.Row).Value
        'Copier taux de qualité
        Sheets("TDB_usine").Range("F2") = Sheets("BD").Range("AK" & trouve.Row).Value
        'Copier taux performance
        Sheets("TDB_usine").Range("H2") = Sheets("BD").Range("AO" & trouve.Row).Value
        'Copier taux de disponibilté
        Sheets("TDB_usine").Range("J2") = Sheets("BD").Range("AS" & trouve.Row).Value
        'Copier TRG
        Sheets("TDB_usine").Range("L2") = Sheets("BD").Range("AW" & trouve.Row).Value
        'Copier défaillance
        Sheets("TDB_usine").Range("N2") = Sheets("BD").Range("BE" & trouve.Row).Value

        'vidage des variables
        Set plage = Nothing
        Set trouve = Nothing

        With Sheets("TDB_Usine").Shapes("DateUsine").TextFrame
            .Characters.Text = Date1_TDB.Value
            .HorizontalAlignment = xlHAlignCenter
            .VerticalAlignment = xlVAlignCenter
        End With

    Else
    ..........
    ..........

Ci joint le projet, si besoin est.

Merci d'avance pour votre précieuse aide.

17proj.xlsm (736.55 Ko)

Bonjour,

Laisse aux bons soins de VBA de choisir son format de date...

Remplace donc :

Valeur_Cherchee = Format(Date1_TDB.Value, "dd/mm/yyyy")

Par :

Valeur_Cherchee = Date1_TDB.Value

Bonjour Pikaju,

J'ai essayé mais pas de différence.

Bonjour,

Ta colonne B est au format "standard".

Passe la au format "Date" (dd/mm/yyyy)

Tu veux dire passer la colonne B au format "date" en cliquant sur format de cellule directement sur la feuille? ou le faire dans le code?

J'ai remis la colonne B au format date, mais toujours le même soucis.

L'exécution s'arrête à la ligne:

MsgBox (trouve.Row)

Curieux...

Sans rien modifier ni à ton code, ni au format de tes cellules, le seul fait de double cliquer sur une cellule contenant une date (Sheets("BD")) et de valider par Entrée débloque tout...

Je ne comprends donc pas...

Rechercher des sujets similaires à "probleme methode range find"