Prblème Evaluate MATCH avec heure

Bonjour a tous

Je post mon premier post aprés avoir résolu la plupart de mes problèmes en lisant les posts de ce forum

il faut un début a tout

voila je dois réaliser un MATCH avec 2 critères.

Aprés plusieurs essais j'ai réussi a réaliser ce code. Mais malheureusement je bloque lorsque mon critère est une heure

Voici un petit code qui résume mon problème sur les critères horaire.

colonne A colonne B

21/01/2015 08:30:00

21/01/2015 08:30:00

21/01/2015 08:30:00

21/01/2015 08:45:00

21/01/2015 08:45:00

21/01/2015 08:45:00

Dim Valeur As Date

Dim NoLigne1 As Double
Dim NoLigne2 As Double

    Valeur = CDate("08:45:00")

    NoLigne1 = Application.Match(CDbl(Valeur), Range("Feuil1!B:B"), 0)

    NoLigne2 = Evaluate("MATCH(" & CDbl(Valeur) & ",Feuil1!B:B,0)")

MsgBox (NoLigne1 & " " & NoLigne2)

En réalisant ce code le Noligne1 fonctionne mais pas le NoLigne2 pourtant c'est la même chose.

je voudrait que NoLigne2 fonctionne car d'aprés mes recherches seul Evaluate("MATCH") me pemet de faire une recherche a 2 critères.

J'espère avoir etait clair mais j'ai voulu réduire mon problème au plus simple.

Merci d'avance pour votre aide

Salut et bienvenue sur le Forum,

Peut-être que ton idée n'est pas la bonne. Que recherches-tu à réaliser exactement avec tes deux critères ?

Un fichier exemple ne serait pas du luxe.

Cordialement.

Bonjour, bonjour !

Sur une vieille version (2003) c'est le même topo : seule la première évaluation fonctionne …

Mais Application.Match comme Evaluate("MATCH font référence à la même fonction de feuille de calculs ‼

C'est la fonction EQUIV dans la version française d'Excel et en consultant son aide, il n'y a qu'un seul critère de valeur recherchée !

Avec une fonction pouvant renvoyer une erreur, mieux vaut utiliser une variable de type Variant pour la contrôler via IsError :

Sub Demo()
              Const Valeur# = #8:45:00 AM#
                   NoLigne1 = Application.Match(Valeur, Range("Feuil1!B:B"), 0)
                   NoLigne2 = Evaluate("MATCH(" & Valeur & ",Feuil1!B:B,0)")
                         T$ = "NoLigne1 :  "
If IsError(NoLigne1) Then T = T & "erreur !" Else T = T & NoLigne1
                          T = T & vbLf & vbLf & "NoLigne2 :  "
If IsError(NoLigne2) Then T = T & "erreur !" Else T = T & NoLigne2
MsgBox T
End Sub

La formulation via Evaluate fonctionne en référençant une cellule pour la valeur recherchée :

NoLigne2 = Evaluate("MATCH(Feuil1!D1,Feuil1!B:B,0)")

Merci pour vos réponses

je suis d'accord sur le principe.

Hier j'ai réussi a finir ma macro qui fonctionne.

Pour faire plus simple voici le code qui résume l'utilisation

Valeur1 = CDate("21/01/2015")
    Valeur2 = CDate("08:45:00")

    Set Plage1 = Sheets("feuil1").Range("A:A")
    Set Plage2 = Sheets("feuil1").Range("B:B")

    Sheets("feuil1").Range("D1").Value = CDbl(Valeur2)

    NoLigne2 = Evaluate("MATCH(1,(" & CLng(Valeur1) & "=A:A)*(D1=B:B),0)")

MsgBox (NoLigne2)

Merci pour vos réponses

je suis d'accord sur le principe.

Hier j'ai réussi a finir ma macro qui fonctionne.

Pour faire plus simple voici le code qui résume l'utilisation

    Valeur1 = CDate("21/01/2015")   'premier critère recherhcé
    Valeur2 = CDate("08:45:00")        'deuxieme critere recherché

    Sheets("feuil1").Range("D1").Value = CDbl(Valeur2)

    NoLigne2 = Evaluate("MATCH(1,(" & CLng(Valeur1) & "=A:A)*(D1=B:B),0)")

MsgBox (NoLigne2)

Enfait je suis obligé d'écrire ma valeur dans une cellule pour que la comparaison marche.

Mais je trouve que mon code n'est pas optimisé.

Aprés plusieurs essais mon code ne fonctionne pas lorsque ma donné est une heure

puisque le code suivant fonctionne avec un integer ou un string

colenneA        ColonneB     ColonneC
21/01/2015    08:30:00                1
21/01/2015    08:30:00                2
21/01/2015    08:30:00                3
21/01/2015    08:45:00                4
21/01/2015    08:45:00                5

    Valeur1 = CDate("21/01/2015")   'premier critère recherhcé
    Valeur3 = 4     'deuxieme critere recherché

NoLigne2 = Evaluate("MATCH(1,(" & CLng(Valeur1) & "=A:A)*(" & Valeur3 & "=C:C),0)")

MsgBox (NoLigne2)

Sinon le plus simple est de regrouper dans la même colonne date & heure …

Oui Oui

j'avais pensé a cette solution mais le tableau de recherche est fixe puisque c'est une requete sql.

La macro marche bien mais je suis quand même chagriné que seules les heures ne fonctionnent pas.

Rechercher des sujets similaires à "prbleme evaluate match heure"