Rechercher une date précise dans une liste

C@thy

XLDnaute Barbatruc
Bonjour le forum, ;)

je voudrais rechercher 31 décembre 2012 dans une colonne
comportant des dates au format jj/mm/aa
par macro afin de récupérer des données de la ligne et les copier
j'utilise Datevalue pour la transformer en date
la date 31/12/2012 se trouve bien dans ma colonne car c'est un jour ouvré
mais la recherche est infructueuse

En réalité c'est un peu + complexe, je recherche dans une liste
le dernier jour travaillé de l'année en cours (de lundi à vendredi)

Auriez-vous rencontré cd problème et trouvé une solution???

Un immense MERCI pour votre aide

Bises

C@thy
 
Dernière édition:

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+
 

Pièces jointes

  • Rechercher(4).xls
    79.5 KB · Affichages: 99
  • Rechercher(4).xls
    79.5 KB · Affichages: 101
  • Rechercher(4).xls
    79.5 KB · Affichages: 103

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+
 

Pièces jointes

  • Rechercher(5).xls
    82 KB · Affichages: 102

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+
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 900
Membres
101 834
dernier inscrit
Jeremy06510