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:

C@thy

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

Voilà, je vous joins un petit bout de mon classeur,
j'aimerais bien savoir pourquoi les dates choisies dans la listbox sont récupérées en anglais et en texte,
et pourquoi malgré tout le find fonctionne...
c'est un vieux fichier, créé sans doute il y a plus de 20 ans, mais qui sert toujours

Merci à vous, bibises et bonne journée

C@thy
 

Pièces jointes

  • placemtest.ZIP
    745.4 KB · Affichages: 61

Bebere

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

bonjour C@thy,le forum
dans liste colonnes A et B ce ne sont pas des dates(cellules format standard)
find est paramétré sur LookAt:=xlPart
exemple,recherche mar 03/01/2012 ,find trouve une correspondance avec 03/01/2012(si existe)
 

david84

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

Bonjour,
tests effectués sur les 37 formats de nombres répertoriés dans le classeur test avec Find en reprenant l'un des codes proposés par Michel :
- en passant par
Code:
LookIn:=xlFormulas , LookAt:=xlWhole
le format général et les formats utilisant les dates +heures ne fonctionnent pas.

- en passant par
Code:
LookIn:=xlFormulas , LookAt:=xlPart
seul le format général ne fonctionne pas.
J'ai placé un petit code couleur dans le code pour mieux visualiser le résultat.
Code:
Sub TestDateFind()
    Dim x, d As Range, L As Long, C As Range, Li As Long
    Application.ScreenUpdating = False

    x = InputBox("entrer une date entre le 21/01/2012 et le 30/03/2013")
    If x = "" Then Exit Sub
    Range("rapport!A2:E100").Clear
    Set d = [PlageDates2]
    Range("rapport!E2") = CDate(x)

    For L = 2 To Range("test_format_date!C65536").End(xlUp).Row    'les formats
        d.NumberFormat = Range("test_format_date!C" & L).NumberFormat
        On Error Resume Next
        '** içi pour tester avec find
        
        'avec LookAt:=xlWhole
        With Worksheets("RechercheFeuil")
            Set C = .Cells.Find(What:=CDate(x), After:=.Range("A1"), LookIn:=xlFormulas _
            , LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
        End With
        
        'avec LookAt:=xlPart
        'With Worksheets("RechercheFeuil")
        '    Set C = .Cells.Find(What:=CDate(x), After:=.Range("A1"), LookIn:=xlFormulas _
        '    , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
        'End With
        
        '**
        On Error GoTo 0
        If Not C Is Nothing Then
            Li = Range("rapport!A65536").End(xlUp).Row + 1
            Range("rapport!A" & Li) = Range("test_format_date!C" & L).NumberFormat
            Range("rapport!B" & Li) = d.Cells(C.Row, 1)
            Range("rapport!B" & Li).NumberFormat = Range("test_format_date!C" & L).NumberFormat
            Range("rapport!C" & Li) = d.Cells(C.Row, C.Column)
            Range("rapport!C" & Li).NumberFormat = "dd/mm/yyyy"
            If Range("rapport!C" & Li).Value <> Range("DateE").Value Then Range("rapport!C" & Li).Interior.ColorIndex = 4
            Range("rapport!D" & Li) = "L:" & C.Row & ",C:" & C.Column
        Else
            Li = Range("rapport!A65536").End(xlUp).Row + 1
            Range("rapport!A" & Li) = Range("test_format_date!C" & L).NumberFormat
            Range("rapport!B" & Li) = CDate(x)
            Range("rapport!B" & Li).NumberFormat = Range("test_format_date!C" & L).NumberFormat
            Range("rapport!C" & Li) = "pas trouvé"
            Range("rapport!C" & Li).Interior.ColorIndex = 4
        End If
    
    Next L
    Worksheets("rapport").Activate
    Application.ScreenUpdating = True
End Sub
J'ai épuré le classeur en ne gardant que les 2 tests sur les plages multicolonne.
Si vous avez d'autres codes qui fonctionnent suite aux tests, vous pouvez les rajouter.
A+

Edit :
Bonjour,

Comme je n'ai pas lu tout le fil, excusez-moi si je suis hors sujet....

Pour ma part, lorsque je recherche une date, ben, je recherche un nombre....

Style (en prenant en référence le fichier de Bebere ):
Bonjour Hubert. Désolé d'avoir zappé ton message. Je pense que nous sommes d'accord sur le principe.
 

Pièces jointes

  • TrouveDateVBA_XLDV2.xls
    199.5 KB · Affichages: 62
  • TrouveDateVBA_XLDV2.xls
    199.5 KB · Affichages: 61
  • TrouveDateVBA_XLDV2.xls
    199.5 KB · Affichages: 63
Dernière édition:

MJ13

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

Bonjour à tous

Alors, la David, tu m'as scotché, ton fichier, aux petits oignons, il est super. Un must sur XLD :eek:.

Je n'aurai qu'un mot Merci :).
 
Dernière édition:

david84

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

Bonsoir,
Bonjour à tous

Alors, la David, tu m'as scotché, ton fichier, aux petits oignons, il est super. Un must sur XLD .

Je n'aurai qu'un mot Merci .
Content que cela te plaise mais c'est plutôt Bebere qu'il faut remercier car c'est lui qui a conçu le fichier à la base.
Je n'ai fait que rajouter des formats plus une ou deux choses et faire des tests.
A+
 

david84

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

Bonjour,
Le même test sur une formule
Code:
=RechercheFeuil!A2
à la place d'une date (cf.fichier) :
Find semble fonctionner sur tous les formats, que ce soit avec
Code:
LookIn:=xlFormulas, LookAt:=xlWhole
ou
Code:
]LookIn:=xlFormulas, LookAt:=xlPart
(idem pour Match bien sûr).
Reste à tester d'autres formules au cas où...
A+
 

Pièces jointes

  • TrouveDateVBA_XLDV2.xls
    230 KB · Affichages: 88
  • TrouveDateVBA_XLDV2.xls
    230 KB · Affichages: 91
  • TrouveDateVBA_XLDV2.xls
    230 KB · Affichages: 88

Staple1600

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

Bonjour à tous


Une question me taraude depuis le début de ce fil.
Pour en avoir le coeur net, je viens d'ouvrir la PJ de Cathy de son message #15
(By the way pourquoi n'était-il pas dans le #1...)
C@thy
Pourquoi passer par VBA, quand le filtre automatique ou élaboré saura trouver la date désirée ?
 

MJ13

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

Bonjour Jean-Marie


Pourquoi passer par VBA, quand le filtre automatique ou élaboré saura trouver la date désirée ?

Le problème ce n'est pas Cathy :eek:, c'est de trouver des dates dans une feuille ou autre mais plutôt par VBA :).

On dira que c'est pour la recherche fondamentale ;).

PS: Merci David. Je regarderai ton dernier fichier plus tard. :).
 

Staple1600

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

Re, Bonjour MJ13


Je posais la question à C@thy, simplement pour comprendre pourquoi elle semblait réticente à utiliser des fonctions natives d'Excel dans le cas présent.
Excel ce n'est pas que le VBA, non ?

Mais effectivement, le fil est riche de solutions diverses et variées et peuplés d’aficionados talentueux de la Sub.

L'emploi des filtres en est une de plus. ;)

PS: MJ13: Où as-tu lu dans mon message que j'assimilais C@thy à un problème ??????
 
Dernière édition:

Discussions similaires