Recherche une date dans une colonne (format de date incompatible)

Résolu
cs_Sp00ky Messages postés 112 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 20 novembre 2006 - 4 août 2005 à 10:47
cs_Sp00ky Messages postés 112 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 20 novembre 2006 - 4 août 2005 à 12:24
Bonjour,

Je souhaite effectuer une recherche de date dans une des colonnes de mon classeur (dans laquelle sont entrés toutes les dates de l'année).

Cependant, il doit y avoir un probleme de compatibilité de date, car il ne trouve pas la date d'aujourd'hui ... Mon but étant de chercher la date d'aujourd'hui et de renvoyer sa position dans une variable.

J'ai essayé avec ce code :

Dim Date_Now As Date
Dim Adresse As String
Dim Max As Integer
Date_Now = Date
With Worksheets("Feuil1").Range("H1:H500") ' Mes dates sont dans la colonne H
Set c = .Find(Date_Now, LookIn:=xlValues) ' Je cherche la date actuelle
If Not c Is Nothing Then
MsgBox "Date trouvée"
Else
MsgBox "Date non trouvée"
End
End If
' J'effectue ensuite des opérations entre la cellule de la date actuelle et les 50 suivantes.
Worksheets("Feuil1").Select
Fin = "Q" & Max
MsgBox Fin
Set r = Range(Adresse, Fin)
For n = 1 To r.Rows.Count
If (r.Cells(n, 1) = vide) And (r.Cells(n, 1).Interior.Pattern <> 14) Then
MsgBox "Cellule vide en " & r.Cells(n, 1).Row
End If
Next n
End With

Le format de date est, dans ma colonne H : jj-mmm
Lorsque je mets en affichage standart, ca me sort un nombre (38568) par exemple pour aujourd'hui.

Comment faire pour que les dates soient compatibles entre elles (entre la fonction DATE et celles de mon classeur) ?

Merci d'avance !



<HR>

$p00ky
______________________________________________
.:: KoC-FR ::. Alliance Francophone Kings of Chaos
Venez jouer au meilleur MMORPG gratuit et facile !</FON< body>

4 réponses

cs_Sp00ky Messages postés 112 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 20 novembre 2006 1
4 août 2005 à 12:24
Merci pour ta proposition Molenn, mais je viens de trouver plus simple.

Voici la description de la fonction FIND(), parametre LookIn :
LookIn précise dans quoi rechercher l'élément, xlFormulas, xlValues ou xlComments. A noter que si vous recherchez une date et que celle-ci est contenue dans une variable Date, vous devez choisir xlFormulas.

Il me suffit donc de définir la date comme une Date, et de chercher dans les xlFormulas.

Aucune reconversion n'est alors nécessaire, et ca marche parfaitement ;)

Merci pour votre aide !

PS : J'ai trouvé ici : http://www.cathyastuce.com/vba/obj_xl_cel_meth1.php



<HR>

$p00ky
______________________________________________
.:: KoC-FR ::. Alliance Francophone Kings of Chaos
Venez jouer au meilleur MMORPG gratuit et facile !</FON< body>
3
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
4 août 2005 à 10:56
Il ne trouve pas la date d'aujourd'hui, plus qu'un problème de compatibilité, ce ne serait pas un problème sur ta variable ?

Date_Now = Date

Ca te remonte quoi ? Tu as essayé d'afficher le contenu de ta variable ?
parce que pour moi, cette fonction ne te remonte rien.

En VB ou VBA, pour enregistrer la date du jour dans la variable, il faudrait faire :
Date_Now = Now

Molenn
0
cs_Sp00ky Messages postés 112 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 20 novembre 2006 1
4 août 2005 à 11:15
Oui, j'ai essayé, le problème n'est pas là, il me ressort la date sans l'heure, alors que NOW me ressort la date, avec l'heure actuelle (c'est vraiment NOW quoi lol, alors que DATE c'est tout aujourd'hui)

J'ai préféré utilisé DATE que NOW car je n'ai pas les heures dans ma colonne des dates, mais uniquement les dates.

Au fait, si je fais simplement :
Date_Now = Date
MsgBox Date_Now

Ca me renvoit la date sous ce format : xx/xx/xxxx

Le problème c'est de l'utiliser pour retrouver ma date sous ce format : jj mmm (sans tiret, je m'étais trompé) dans ma colonne H.



<HR>

$p00ky
______________________________________________
.:: KoC-FR ::. Alliance Francophone Kings of Chaos
Venez jouer au meilleur MMORPG gratuit et facile !</FON< body>
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
4 août 2005 à 11:38
Le mode d'affichage jj mmm n'existe pas en vba, ce qui pose un problème. Au mieux, on peut faire un Format(Date_Now,"dd mmm"), mais qui te ressort le jour, un espace et le mois entier.

On peut remplacer l'espace par un tiret.
On sait que dans Excel, ta date aura toujours au minimum 6 caractères (et au max 7) : 01-fév, 31-déc, 15-août

Tu pourrais donc récupérer les 6 premiers caractères de la date et les comparer au 6 premiers du texte affiché dans tes cellules.
Par contre, ça t'obligerait sûrement à créer une boucle pour faire la recherche au lieu d'utiliser le Find, à moins de pouvoir faire des recherches partielles par cette méthode ?

Ce qui te donnerait un truc de ce genre pour obtenir la variable à comparer

Déclarer Date_Now comme une chaîne de caractère:
Dim Date_Now as String

Date_Now = Date
Date_Now = Format(Date_Now, "dd mmm") 'Affiche le jour, un espace et le mois entier
Date_Now = Replace(Date_Now, " ", "-") 'Remplace l'espace par un tiret
Date_Now = left(Date_Now,6) 'Récupère les 6 premiers caractères


Ce n'est qu'une piste, je ne suis pas sûre que ce soit la solution.

Molenn
0
Rejoignez-nous