cs_Sp00ky
Messages postés112Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention20 novembre 2006
-
4 août 2005 à 10:47
cs_Sp00ky
Messages postés112Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention20 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) ?
cs_Sp00ky
Messages postés112Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention20 novembre 20061 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 ;)
cs_Sp00ky
Messages postés112Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention20 novembre 20061 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.
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 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.