Rechercher une date précise dans une liste

  • Initiateur de la discussion Initiateur de la discussion C@thy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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

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)
 
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

Dernière édition:
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 😱.

Je n'aurai qu'un mot Merci 🙂.
 
Dernière édition:
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+
 
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

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 ?
 
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 😱, 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. 🙂.
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
1 K
Réponses
22
Affichages
3 K
Retour