Instruction Find

Salut,

Je galère chaque fois que j'utilise cette fonction mais en tatonnant j'arrive à la faire tourner correctement. Mais là je sèche.

J'importe une page internet dans une feuille Excel pour y récupérer quelques données. Je procède en 2 étapes :

Set ListeCours = Sheets("Temp").Columns(1).Find("Historique 5 jours", LookIn:=xlValues)

Pour chercher l'emplacement des données que je veux récupérer (ce n'est pas fixe). Ca fonctionne, la chaine de caractères "Historique 5 jours" est bien identifiée.

Ensuite je cherche une donnée en particulier (celle du jour) avec :

Set ColonneCours = Sheets("Temp").Rows(ListeCours.Row + 1).Find(DateAReporter, LookIn:=xlValues)

Cours = Sheets("Temp").Cells(ListeCours.Row + 2, ColonneCours.Column)

Et là la fonction Find me renvoie un Nothing, alors que la variable DateAReporter est bien dans la ligne ListeCours.Row + 1.

Aussi bien la variable DateAReporter que la valeur que je cherche sont des dates (Format Variant/Date dans l'espion).

Je mets un extrait du fichier en copie si quelqu'un se penche sur la question.

Merci d'avance.

Manu

5exemple.xlsm (15.03 Ko)

Bonsoir Manu31,

Je te propose une alternative à l'utilisation de Find

Sub test()
Dim DateAReporter As Date
Dim Cours As String
Dim vLigLC As Variant
Dim vColDAR As Variant

   With Sheets("Temp")
      DateAReporter = DateSerial(2023, 7, 28)
      'Recherche du tableau de l'historique à 5 jours
      vLigLC = Application.Match("Historique 5 jours", Sheets("Temp").Columns(1), 0)
      If IsError(vLigLC) = False Then
         'Recherche du cours du jour
         vColDAR = Application.Match(CLng(DateAReporter), Sheets("Temp").Rows(vLigLC + 1), 0)
         If IsError(vColDAR) = False Then
            Cours = Sheets("Temp").Cells(vLigLC + 2, vColDAR)
         Else
            MsgBox "...."
         End If
      Else
         MsgBox "...."
      End If
   End With

End Sub

Cdlt,

Cylfo

Bonjour,
Une autre proposition.
Cdlt.

Sub test_2()
Dim rw As Variant, dLastValue As Double
    With Worksheets("Temp")
        rw = Application.Match("Historique 5 jours ", .Columns(1), 0)
        If IsError(rw) Then
            MsgBox "Oups !...", 64, "Information"
        Else
            dLastValue = .Cells(rw, 1).Offset(2, 5).Value
            MsgBox "Der. : " & dLastValue
        End If
    End With
End Sub
Rechercher des sujets similaires à "instruction find"