VBA : Incompatibilité Fonction Match - Variables Date

Bonjour,

A l’aide d’une macro telle que celle placée dans le fichier ci-joint, je voudrais trouver la position d’une heure donnée dans une colonne de références.

Option Explicit
Sub Essai()
Dim Position As Long, Heure As Date
Heure = Cells(1, 4)
Position = WorksheetFunction.Match(Heure, Range("A:A"), 1)
End Sub

En recherchant la valeur inscrite en D1, je voudrais obtenir le résultat 2 (position de la valeur immédiatement inférieure à celle recherchée).

Savez-vous pourquoi mon code ne fonctionne pas ?

Il est important pour moi de passer par l’intermédiaire d’une variable et je ne voudrais absolument pas travailler avec un format de variable autre que ‘Date’

A vous relire.

20essai-heures.zip (8.57 Ko)

Bonjour,

Ton code fonctionne très bien (avec match ou avec un vlookup) TANT que ta variable, n'est pas déclarée comme date pourtant ...

Et en passant par une variable intermédiaire ?

Tu gardes ta variable au format Date, mais cela te permet de faire ta recherche quand même :

Option Explicit

Sub Essai()
Dim Position As Long, Heure As Date, sRecherche As Double

Heure = Cells(1, 4)
sRecherche = Cells(1, 4).Value

Position = WorksheetFunction.Match(sRecherche, Range("A:A"), 1)

End Sub

Sans toucher au format, je ne vois pas trop sinon.

Salut Zirak et merci infiniment pour ton aide

Ta solution pourrait parfaitement me convenir, puisque pas si compliquée à mettre en place et fonctionnant excellemment.

Je laisse encore ce sujet ouvert si quelqu'un autre avait quand même une autre idée.

Amicalement.

Bonjour

Ma petite contribution

Moi aussi j'ai souvent des problèmes avec les dates/heures

J'utilise souvent la conversion de la date/heure

Option Explicit

Sub Essai()
Dim Position As Long, Heure As Date

Heure = Cells(1, 4)

Position = WorksheetFunction.Match(CSng(Heure), Range("A:A"), 1)

End Sub

A toute fin utile

Salut Banzai,

Effectivement qu'avec ta solution on gagne une étape, ce qui multiplié par quelques recherches dans mon code réel, est fort appréciable.

J'avais tenté d'utiliser CDate, mais comme je transformais une date en date, je n'étais guère plus avancé

Merci beaucoup pour ta solution génialissime.

A une prochaine.

Rechercher des sujets similaires à "vba incompatibilite fonction match variables date"