Convertir une date en chaîne de caractère

Résolu
lilou -  
liloutte5 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je voudrai produire sur VBA une macro qui permet de comparer deux dates, le problème est que d'un côté j'ai une date sous forme de chaîne de caractère qui ne peut pas être transformée en format date lorsque je change le format de nombre sur Excel (la date reste telle qu'elle : "Mercredi 2 Janvier 2013", quoi que je sélectionne comme format), et de l'autre une date en format 02/01/2013. Je voudrais donc changer "02/01/2013" en une chaîne de caractère afin de la comparer avec la première.

Est-ce que quelqu'un a une idée svp ? Merci =)

2 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Peut être en passant par Format :
Sub test()
Dim maDate As Date, strDate As String
maDate = CDate("02/01/2013") 'Ici on a bien une date au format date
MsgBox maDate
strDate = Format(maDate, "dddd dd mmmm yyyy") 'Ici on obtient un String
MsgBox strDate
End Sub

0
lilou
 
Merci, ca marche ! La date est bien transformée en chaîne de caractère, mais je dois avoir un autre problème car quand je compare les deux chaînes de caractères, la fonction StrComp par exemple qui compare les deux chaînes me renvoie qu'elle ne sont pas identiques ... je voulais donc essayer en supprimant la casse, en enlevant les espaces, etc. tout ce qui pourrait faire en sorte que les deux chaînes sont différentes ... au niveau de la mise en forme aussi. Mais je ne trouve pas de fonction qui permettrait de mettre les deux cases au même format ...
0
lilou
 
J'ai essayé avec lcase() pour tout mettre en minuscule, mais ca ne marche pas quand même, il me faudrait un outil qui permet de tout mettre au même format ...
0
NHenry Messages postés 15221 Date d'inscription   Statut Modérateur Dernière intervention   366
 
Peux-tu montrer le contenu de ces 2 chaines ?
0
liloutte5 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
La première image est la feuille 1 de mon tableur Excel, avec les dates sur l'année (sans dimanches et jours feriés) et la feuille 2 reprend tous les jours confondus. Je veux donc tester si chaque ligne de la feuille 1 correspond aux lignes de la feuille 2, et si c'est le cas, réaliser une certaine condition, si ca n'est pas le cas, en réaliser une autre. Mais la transformation des dates de la feuille 2 avec la fonction Format (changer la forme 02/01/2013 en mercredi 2 janvier 2013) ne me permet pas de la comparer avec les cases de la feuille 1 qui sont elles déjà en chaîne de caractère mercredi 2 janvier 2013
0
liloutte5 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Voila les images


0
liloutte5 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Sub test()

Dim maDate As Date, strDate, stock, compare As String

maDate = CDate(Worksheets("Feuil2").Cells(3, 1))

strDate = Format(maDate, "dddd d mmmm yyyy")
stock = LCase(Worksheets("Feuil1").Cells(2, 1))

Worksheets("Feuil1").Cells(1, 4) = strDate
Worksheets("Feuil1").Cells(1, 5) = stock


End Sub


J'ai écris cette macro grâce aux conseils de pijaku, j'ai donc mis les deux chaînes à comparer dans la cellule(1,4) et la cellule(1,5), ca me donne bien le format "mercredi 2 janvier 2013" pour les deux, mais impossible de les comparer ...
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Ben, en fait, crois tu vraiment que vendredi 2 Janvier 2013 soit égale à vendredi 02 Janvier 2013?
0
liloutte5 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
non, d'ailleurs c'est bien pour ca que j'ai tout transformé pour que ce soit "2" et non pas "02"

après plusieurs manipulations je vois que la chaîne de caractère dans ma feuille 1 n'en est en fait pas une, puisqu'en utilisant la fonction replace pour remplacer les espaces par "", la fonction marche pour les dates de la feuille 2 mais pas pour la feuille 1 ...

C'est à dire que quand je fais :

Worksheets("Feuil1").Cells(1, 6) = Replace(Worksheets("Feuil1").Cells(1, 4), " ", "")
Worksheets("Feuil1").Cells(1, 7) = Replace(Worksheets("Feuil1").Cells(1, 5), " ", "")

Avec cells(1,4) contenant le résultat de la fonction format (donc reporte les dates de la feuille 2 en toute lettre)
cells(1,5) contenant la soit disant chaîne de caractère de la feuille 1
cells(1,6) m'affiche alors mercredi2janvier2013
cells(1,7) m'affiche mercredi 2 janvier 2013

la fonction replace n'a donc pas marché avec la cellule qui reprend les dates de la feuille 1 ... comme si excel ne voulait pas comprendre que c'est bien une chaîne de caractère ...
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > liloutte5 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Maintenant, sans le classeur concerné il va être impossible d'aller plus loin.
Utilise http://cjoint pour nous le transmettre ici.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
0