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 -
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 =)
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 =)
A voir également:
- Vba convertir date en texte
- Convertir audio en texte word - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Convertir epub en kindle - Guide
- Excel cellule couleur si condition texte - Guide
- Convertir youtube en mp3 avec audacity - Guide
2 réponses
Bonjour,
Peut être en passant par Format :
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
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 ...
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 ...
NHenry
Messages postés
15221
Date d'inscription
Statut
Modérateur
Dernière intervention
366
Peux-tu montrer le contenu de ces 2 chaines ?
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
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 ...
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 ...
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 ...