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:

Misange

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

Comment veux tu récupérer la date et comment veux tu indiquer à excel où il doit chercher ?
Je suis comme David assez perplexe sur les cas sur lesquels tu rencontres des problèmes.
 

david84

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

Re
Bon, comme tu veux faire une recherche sur une plage multicolonne, Match ne convient effectivement pas. A priori, tu n'as pas le choix : tu dois donc utiliser Find.
Par contre, je ne vois pas trop en quoi c'est gênant de ne pas définir ta plage de recherche même si je crois comprendre la problématique.
Ceci-dit, peux-tu nous indiquer quels sont les formats que tu as essayés avec les codes que tu as proposés et qui bloquent, cela nous permettrait de chercher une solution de notre côté.
A+
 

C@thy

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

Misange, j'ai testé ton code, et je n'ai rencontré aucun problème pour l'instant, mais je vais essayer d'autres cas tordus (genre je récupère la date à partir d'un userform car j'ai des soucis avec ça),
mais dis-moi, c'est quoi Short Date??

Merci

C@thy
 

MJ13

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

Bonjour Cathy

Tu peux tester ce fichier :).
 

Pièces jointes

  • USF_Textbox_Date.xls
    53 KB · Affichages: 56
  • USF_Textbox_Date.xls
    53 KB · Affichages: 60
  • USF_Textbox_Date.xls
    53 KB · Affichages: 58

Bebere

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

bonjour Mj13,David,Misange,Cathy
je teste aussi, si j'arrive à quelque chose d'intéressant je le mettrais
strdate = Format("10/janv./2012", "Short Date"),résultat="10/01/2012"
un problème, date 6/01/12 après format donne 12/01/06,recherche ok avec le code de David
 
Dernière édition:

MJ13

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

Bonjour Bébère

Merci de te joindre à la joyeuse troupe et de faire des tests (on en a besoin :)).

Bon sinon, un code intéressant à tester avec mon fichier en Post 82:

Modifier ainsi le code la feuille1:

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
UserForm1.Show
End Sub

et le code du Userform:

Code:
Private Sub CommandButton1_Click()
ActiveCell = TextBox1
ActiveCell.Offset(1, 0) = TextBox1.Value
ActiveCell.Offset(2, 0) = TextBox1.Text
ActiveCell.Offset(3, 0) = CDate(TextBox1)
Unload Me
End Sub

Puis double-cliquez sur la feuille1 et entrer une fois 5/4 puis 4/5. Ensuite, observez :).
 

Misange

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

La macro que j'ai indiquée au post #72 fonctionne parfaitement pour rechercher une date dans plusieurs colonnes.
J'ai essayé tous les formats de dates auxquels je pouvais penser et je n'en n'ai trouvé aucun qui la plante.
Je ne comprends pas ce qui te bloque Michel
 

MJ13

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

Bonjour Misange

La macro que j'ai indiquée au post #72 fonctionne parfaitement pour rechercher une date dans plusieurs colonnes.
J'ai essayé tous les formats de dates auxquels je pouvais penser et je n'en n'ai trouvé aucun qui la plante.
Je ne comprends pas ce qui te bloque Michel

Attention, il y a la de ta part et de la part de David, une ambiguïté.

Je n'ai jamais dit que vos codes ne fonctionnaient pas. Mais, J'aime bien comprendre la logique d'Excel.

Alors, je fais souvent des plannings et je n'arrive jamais à avoir un code universel pour la recherche des dates sur une feuille en valeurs ( pour les formules, nous y viendrons après). Ensuite j'utilise toujours l'enregistreur de macro qui permet de gagner beaucoup de temps. Mais cette recherche de date n'est qu'une partie du développement et je galère toujours.

Donc, dans les fichier que j'ai mis en post #71, il y a un texte sur la feuille aide qui a toute son importance puis 3 feuilles à tester. Mais le plus important est la feuille1. Pour voir le code, il suffit de faire Alt+F11 ou click droit sur les boutons et choisir affecter une macro puis modifier.

Mon but n'est pas de trouvé le code improbable mais le code le plus simple :).

Après il y a l'histoire des formules. Je considère que c'est une erreur de mettre une formule en date sur un planning. C'est un peu comme une cellule fusionnée sur une base de données qui peut entraîner des galères.

Voila, Le sujet est clos pour moi.

Bon Week-End à tous :).
 

david84

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

Bonjour Michel et aux autres,
Alors, je fais souvent des plannings et je n'arrive jamais à avoir un code universel pour la recherche des dates sur une feuille en valeurs ( pour les formules, nous y viendrons après). Ensuite j'utilise toujours l'enregistreur de macro qui permet de gagner beaucoup de temps. Mais cette recherche de date n'est qu'une partie du développement et je galère toujours.
L'ambiguïté à mon avis vient de la manière dont le sujet est posé et de l'exemple fourni et non sur le fait de savoir si tel code est ou non fonctionnel.

Personnellement, ce n'est qu'à partir de ton message #78 que j'ai compris (enfin je pense) la problématique posée : tu veux pouvoir rechercher une date quelle que soit son format et sa position dans la feuille de calcul sans être obligé de définir une plage de recherche. Et dans ce cas effectivement on ne peut passer par Match qui est une solution efficace lorsque la recherche porte sur une seule colonne.

Mais je trouve que le fichier du message #71 n'est pas adapté à la problématique posée puisque la recherche ne porte que sur une seule colonne, d'où l'ambiguïté soulevée.

Il faudrait que l'exemple puisse comporter des dates placées sur différentes colonnes de la feuille de calcul (en valeur uniquement dans un 1er temps puis en mélangeant ensuite valeur et formule si on le veut).
Chacun pourrait alors tester de son côté sur les mêmes bases en faisant varier les formats testé (pratique ton raccourci clavier !).

Mais il faudrait également que ceux qui testent communiquent :
- les formats testés
- ceux qui ne posent pas problème
- ceux qui posent problème
d'où ma proposition de fichier récapitulatif du message #77 (qui n'est d'ailleurs pas adapté à la problématique puisque fait avant).

Ceci permettrait :
- de cerner les formats récalcitrants
- de rechercher éventuellement un code plus adapté
- de confronter nos tests en fonction de la version d'Excel utilisée car peut-être que les résultats divergeront en fonction de la version comme c'est le cas entre 2003 et 2007 concernant les dates reversées dans la feuille de calcul après traitement dans un Array.

Or, d'après le profil de chacun, nous avons des versions différentes : tu es sous 2007, Bébère est sous 2003, je suis sous 2010 v64 bits et Misange est sous 2010 v32 bits (à moins qu'elle n'utilise déjà la version 2013).

En résumé, je trouve le sujet intéressant mais il faudrait nous accorder sur le fichier exemple et le mode opératoire pour pouvoir être plus efficace.

Qu'en pense-tu ?
Qu'en pensez-vous ?
A+
 

MJ13

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

Bonjour David

Personnellement, ce n'est qu'à partir de ton message #78 que j'ai compris (enfin je pense) la problématique posée : tu veux pouvoir rechercher une date quelle que soit son format et sa position dans la feuille de calcul sans être obligé de définir une plage de recherche. Et dans ce cas effectivement on ne peut passer par Match qui est une solution efficace lorsque la recherche porte sur une seule colonne.

Mais je trouve que le fichier du message #71 n'est pas adapté à la problématique posée puisque la recherche ne porte que sur une seule colonne, d'où l'ambiguïté soulevée.

Et bien, tu as tout compris :).

Pour le fichier sur le Post #71, tu déplaces le 17/01 puis tu fais une recherche en rentrant 17/1 pour vérifier si cela fonctionne :eek:.

Merci, maintenant, je passe à autre chose.

Bon Week-End :).
 

Bebere

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

bonjour aux dames et au messieurs
résultat de test avec match, grand gagnant
2 boutons pour match(une colonne,plusieurs colonnes)
1 bouton pour find
tout dans le fichier
 

Pièces jointes

  • TrouveDateVBA_XLDV1.xls
    860 KB · Affichages: 75

Cousinhub

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

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

Code:
Sub trouve_date()
Dim LaDate As Long
Dim Lig As Long
LaDate = CDate(InputBox("Entrez une date entre le 01/01/2012 et le 21/10/2016"))
Lig = Application.Match(LaDate, Columns(1), 0)
End Sub

Mais je suis peut-être hors sujet...:cool:

Bonne soirée, et bon W-E à tous
 

david84

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

Bonsoir,
merci Bebere pour ce fichier test comme je les aime et que l'on pourra si nécessaire faire évoluer.
Ci-joint ton fichier en retour agrémenté de 23 nouveaux formats :
3/1
4/1/11
05/01/11
6-janv.
7-janv.-11
8-janv.
janv.-11
janvier-11
11 janvier 2011
12/1/11 12:00 AM
13/1/11 0:00
j
j-11
1/16/2011
17-janv.-2011
19-janv-11
20-janv
janv-11
22/01/2011 00:00
23 janvier 2011
24/1/11 12:00 AM
25/1/11 0:00
janv-2011
Les formats sont :
d/m;@
d/m/yy;@
dd/mm/yy;@
[$-40C]d-mmm;@
[$-40C]d-mmm-yy;@
[$-40C]d-mmm;@
[$-40C]mmm-yy;@
[$-40C]mmmm-yy;@
[$-40C]d mmmm yyyy;@
[$-409]d/m/yy h:mm AM/PM;@
d/m/yy h:mm;@
[$-40C]mmmmm;@
[$-40C]mmmmm-yy;@
m/d/yyyy;@
[$-40C]d-mmm-yyyy;@
d-mmm-yy
d-mmm
mmm-yy
m/d/yyyy h:mm
[$-40C]d mmmm yyyy;@
[$-409]d/m/yy h:mm AM/PM;@
d/m/yy h:mm;@
mmm-yyyy
Attention ! Quelque fois, le code avec Find ramène une date mais pas la bonne (date inversée).
Je n'ai pas regardé les codes dans le détail ni testé les codes proposés par Michel pour l'instant.
A+
 

Pièces jointes

  • TrouveDateVBA_XLDV2.xls
    214.5 KB · Affichages: 62
  • TrouveDateVBA_XLDV2.xls
    214.5 KB · Affichages: 64
  • TrouveDateVBA_XLDV2.xls
    214.5 KB · Affichages: 66

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla