Rechercher une date précise dans une liste

job75

XLDnaute Barbatruc
Re : Rechercher une date précise dans une liste

Bonjour le fil, le forum,

L'idée de départ était bonne mais j'ai compliqué inutilement.

Il suffit de convertir nombres et dates ou heures par CDbl :

Code:
Sub Rechercher()
Dim x As Variant, i As Variant
x = InputBox("Entrez la valeur texte, nombre, date, heure :", "Rechercher")
If x = "" Then Exit Sub
If IsNumeric(x) Then x = CDbl(x) Else _
  If IsDate(x) Then x = CDbl(CDate(x))
i = Application.Match(x, [B:B], 0)
If IsNumeric(i) Then Cells(i, 2).Select 'valeur trouvée
End Sub
Plus aucun problème.

Fichier (4).

A+
 

Fichiers joints

C@thy

XLDnaute Barbatruc
Re : Rechercher une date précise dans une liste

Ah ouais! Joli! Cro fort ! (Comme Cindy)

Bravo maestro!
 

job75

XLDnaute Barbatruc
Re : Rechercher une date précise dans une liste

Re,

Pour la recherche des nombres décimaux, ceci fonctionne quel que soit le séparateur décimal utilisé :

Code:
Sub Rechercher()
Dim x As Variant, i As Variant
x = InputBox("Entrez la valeur texte, nombre, date, heure :", "Rechercher")
If x = "" Then Exit Sub
i = Replace(x, ".", Mid(1.1, 2, 1)) 'séparateur décimal de l'ordi
If IsNumeric(i) Then x = CDbl(i) Else If IsDate(x) Then x = CDbl(CDate(x))
i = Application.Match(x, [B:B], 0)
If IsNumeric(i) Then Cells(i, 2).Select 'valeur trouvée
End Sub
Fichier (5).

A+
 

Fichiers joints

job75

XLDnaute Barbatruc
Re : Rechercher une date précise dans une liste

Re Jean-Marcel,

1.1 est une valeur nombre qui s'écrit en dur avec un point dans VBA.

Mais quand on l'utilise en texte, VBA convertit ce nombre en lui appliquant le séparateur décimal de l'ordi.

Donc la virgule chez moi, récupérée par Mid(1.1, 2, 1).

Pour que IsNumeric renvoie True il faut que le nombre (texte) soit écrit avec le séparateur décimal de l'ordi.

A+
 

Haut Bas