J'ai ancré une date et une valeur dans la feuille 1 et je souhaite rechercher cette date dans la colonne A de la feuille 2 et coller la valeur de la feuille 1 dans la colonne E.

Dans la feuille 1, j'ai le nom d'aujourd'hui comme REP_DATE, et la date que je veux rechercher est la date d'hier, qui est REP_DATE - 1 et j'ai eu cette formule dans la feuille1 E5, et la valeur est dans F5.

Voici le code que j'ai en ligne et j'ai fait quelques ajustements:

Sub CopyData()
Dim myDate As Date
Dim myValue As Variant
myDate = ThisWorkbook.Sheets("Sheet1").Range("E6").Value
myValue = ThisWorkbook.Sheets("Sheet1").Range("F6").Value


ThisWorkbook.Sheets("Sheet2").Range("A:A").Find(myDate).Offset(0, 4).Value = myValue

End Sub

Cependant, j'obtiens toujours une erreur "Erreur d'exécution '91': variable d'objet ou avec la variable de bloc non définie", le débogage fait référence à cette ligne de code ThisWorkbook.Sheets("Sheet2").Range("A:A").Find(myDate).Offset(0, 4).Value = myValue

Cela me déroute vraiment et je me demande comment résoudre ce problème.

Merci.

0
LouisaFox 27 oct. 2020 à 10:09

2 réponses

Meilleure réponse

Vous avez décrit que vous avez votre date / valeur à la ligne 5 (e5, f5) tandis que dans votre code, vous recherchez la date par ligne 6 (e6, f6).

L'erreur s'affiche car la date est introuvable.

Il y aura la même erreur si votre date n'existe pas dans Sheet2.

Vous pouvez mettre à jour les adresses des cellules dans votre code. De plus, vous pouvez ajouter une gestion des erreurs pour informer l'utilisateur pourquoi le code ne fonctionne pas correctement si la date n'est pas trouvée;

Option Explicit

Sub CopyData()
Dim myDate As Date
Dim myValue As Variant
myDate = ThisWorkbook.Sheets("Sheet1").Range("E5").Value
myValue = ThisWorkbook.Sheets("Sheet1").Range("F5").Value

On Error GoTo nodate
ThisWorkbook.Sheets("Sheet2").Range("A:A").Find(myDate).Offset(0, 4).Value = myValue
On Error GoTo 0

Exit Sub

nodate:
    MsgBox ("Date is not found")
End Sub
0
Salamander Krajza 27 oct. 2020 à 07:49

Grâce à @Salamander Krajza, je partagerai mon code le plus à jour ici, je dois changer la date sur la feuille2 de formule en valeur pour que la fonction de recherche puisse fonctionner sa magie:

Sub CopyData()
Dim myDate As Date
Dim myValue As Variant
myDate = ThisWorkbook.Sheets("Sheet1").Range("E5").Value
myValue = ThisWorkbook.Sheets("Sheet1").Range("F5").Value


On Error GoTo nodate
ThisWorkbook.Sheets("Sheet2").Range("A:A").Find(what:=myDate, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 4) = myValue
On Error GoTo 0

Exit Sub

nodate:
    MsgBox ("Date is not found")
End Sub
0
LouisaFox 27 oct. 2020 à 23:04