[Excel VBA] Transformation texte en date
Résolu
Gorion87
Messages postés
55
Date d'inscription
Statut
Membre
Dernière intervention
-
Gorion87 Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
Gorion87 Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je sais pas si ma demande est réalisable, j'ai deux colonnes A et B où les personnes ont rentré des dates de départ et de fin de la manière suivante :
Ex : pour le 20 février 2009 ils ont écris 20090220 ou 10 janvier 1998 ils ont écris 19980110
Bon je sais c'est pas très sensé mais jai ca sur des milliers de colonnes :-(
et je dois travailler avec ces dates là !!!
Donc si vous avez une solution avec une macro je suis preneur :-)
Merci d'avance.
Je sais pas si ma demande est réalisable, j'ai deux colonnes A et B où les personnes ont rentré des dates de départ et de fin de la manière suivante :
Ex : pour le 20 février 2009 ils ont écris 20090220 ou 10 janvier 1998 ils ont écris 19980110
Bon je sais c'est pas très sensé mais jai ca sur des milliers de colonnes :-(
et je dois travailler avec ces dates là !!!
Donc si vous avez une solution avec une macro je suis preneur :-)
Merci d'avance.
A voir également:
- [Excel VBA] Transformation texte en date
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Transcription audio en texte word gratuit - Guide
- Déplacer colonne excel - Guide
12 réponses
Bonjour,
Il faut que tu sélectionnes la colonne correspondante (cliquer sur "A" par exemple) et faire un clique droit "Format de Cellule" et choisi la catégorie "Date".
Voila j'espère que cela marchera en tout cas moi cela marche sous Excel 2007 ;) mais j'utilisais le 2003 avant ;)
a+
Il faut que tu sélectionnes la colonne correspondante (cliquer sur "A" par exemple) et faire un clique droit "Format de Cellule" et choisi la catégorie "Date".
Voila j'espère que cela marchera en tout cas moi cela marche sous Excel 2007 ;) mais j'utilisais le 2003 avant ;)
a+
Si c'était aussi simple t'inquiètes que je n'aurais pas posé cette question :-)
Même en changeant le format et en le passant en Date ca me marque ############ dans la cellule. Il ne la reconnait pas !!! Il me faudrait une solution pour passer de 20090220 à 20/02/2009.
Mais merci quand meme pour la rapidité de ta reponse ;-)
Même en changeant le format et en le passant en Date ca me marque ############ dans la cellule. Il ne la reconnait pas !!! Il me faudrait une solution pour passer de 20090220 à 20/02/2009.
Mais merci quand meme pour la rapidité de ta reponse ;-)
ha :s en effet ^^ et bien à vrai dire je n'est pas d'autres solutions à te proposées ^^
quelqu'un d'autre sur le forum à une idée ???
quelqu'un d'autre sur le forum à une idée ???
Bonjour,
Si ça marque la date te marque ############, je crois que c'est parce que ta colonne est trop petite, agrandis la pour voir.
Boz
Si ça marque la date te marque ############, je crois que c'est parce que ta colonne est trop petite, agrandis la pour voir.
Boz
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Je suppose que tu dois ensuite traiter ces dates et qu'elles doivent absolument avoir un format 'date' .
Je suppose que tu dois ensuite traiter ces dates et qu'elles doivent absolument avoir un format 'date' .
Si valeur à traiter en A1, créer nouvelle cellule avec format date :
=CNUM(CONCATENER(DROITE(A1;2)&"/"&STXT(A1;5;2)&"/"&GAUCHE(A1;4)))
à condition que la structure de la valeur à traiter soit toujours la même : aaaammjj
=CNUM(CONCATENER(DROITE(A1;2)&"/"&STXT(A1;5;2)&"/"&GAUCHE(A1;4)))
à condition que la structure de la valeur à traiter soit toujours la même : aaaammjj
Salut Gorion 87
Ta demande m'a intéressé, alors j'ai cherché et sans doute trouvé. Alors accroche-toi. Je suis sur Office 2007.
Par exemple la date entrée est 20090223 pour la date d'aujourd'hui.
1) sélectionne la colonne concernée (par expl, clique gauche sur C)
2) ouvre l'onglet "Données" (en haut)
3) dans le pavé "outils de données", clique sur "Convertir"
4) la fenêtre "assistant conversion" s'ouvre. Dans le cadre "Type de données d'origine", coche le bouton "Délimité"
5) tu fais "Suivant" en bas. Une nouvelle fenêtre s'ouvre.
6) dans le cadre "séparateurs", tu ne laisses cochés que "Espace" et à côté :"Interpréter les séparateurs identiques etc..."
7) Suivant, donc nouvelle fenêtre.
8) dans le cadre "format des données en colonnes" tu sélectionnes "Date" puis tu fais dérouler le menu qui est lié à "Date". Dedans, tu sélectionnes "AMJ" (pour Année, Mois, Jour) à la place de JMA qui est sélectionné par défaut.
9) Terminer (en bas)
Ouf ! Tu dois obtenir, dans ta colonne C : 23/02/2009. C'est déjà plus lisible
Pour obtenir l'affichage suivant : 23-fev-2009, fais ce qui suit.
1) reviens sur l'onglet "Accueil" et dans le pavé "Nombre" ouvre le menu déroulant (à coté de "standard")
2) tout en bas du menu déroulé, choisis "autres formats numériques"
3) dans "catégorie", sélectionne "Date"
4) dans "Type", choisis la dernière ligne : 14-mars-2001 (ou une autre qui te conviendra mieux)
5) OK
et voilà !!!
Ta demande m'a intéressé, alors j'ai cherché et sans doute trouvé. Alors accroche-toi. Je suis sur Office 2007.
Par exemple la date entrée est 20090223 pour la date d'aujourd'hui.
1) sélectionne la colonne concernée (par expl, clique gauche sur C)
2) ouvre l'onglet "Données" (en haut)
3) dans le pavé "outils de données", clique sur "Convertir"
4) la fenêtre "assistant conversion" s'ouvre. Dans le cadre "Type de données d'origine", coche le bouton "Délimité"
5) tu fais "Suivant" en bas. Une nouvelle fenêtre s'ouvre.
6) dans le cadre "séparateurs", tu ne laisses cochés que "Espace" et à côté :"Interpréter les séparateurs identiques etc..."
7) Suivant, donc nouvelle fenêtre.
8) dans le cadre "format des données en colonnes" tu sélectionnes "Date" puis tu fais dérouler le menu qui est lié à "Date". Dedans, tu sélectionnes "AMJ" (pour Année, Mois, Jour) à la place de JMA qui est sélectionné par défaut.
9) Terminer (en bas)
Ouf ! Tu dois obtenir, dans ta colonne C : 23/02/2009. C'est déjà plus lisible
Pour obtenir l'affichage suivant : 23-fev-2009, fais ce qui suit.
1) reviens sur l'onglet "Accueil" et dans le pavé "Nombre" ouvre le menu déroulant (à coté de "standard")
2) tout en bas du menu déroulé, choisis "autres formats numériques"
3) dans "catégorie", sélectionne "Date"
4) dans "Type", choisis la dernière ligne : 14-mars-2001 (ou une autre qui te conviendra mieux)
5) OK
et voilà !!!
bonjour everybody
regarde si cette macro te convient
départ en ligne 1, date en colonne A et colonne B
si tu commences à une autre lig X
cells(lig+X,1)= Cdate(etc....
regarde si cette macro te convient
départ en ligne 1, date en colonne A et colonne B
Sub lettreendate() Dim derlig As Long, lig As Long Dim tablo() derlig = Range("A65536").End(xlUp).Row tablo = Range("A1:B" & Range("B65536").End(xlUp).Row) Application.ScreenUpdating = False For lig = 1 To UBound(tablo) Cells(lig, 1) = CDate(Right(tablo(lig, 1), 2) & "/" & Mid(tablo(lig, 1), 5, 2) & "/" & Left(tablo(lig, 1), 4)) Cells(lig, 2) = CDate(Right(tablo(lig, 2), 2) & "/" & Mid(tablo(lig, 2), 5, 2) & "/" & Left(tablo(lig, 2), 4)) Next End Sub
si tu commences à une autre lig X
cells(lig+X,1)= Cdate(etc....
Re,
Suite...
si le départ n'est pas en ligne 1
n'oublie pas de modifier l'instruction de définition du tableau:
tablo = Range("AX:B" & Range("B65536").End(xlUp).Row)
et cells(lig+X,1) serait plutôt
cells(lig+X-1)
dans ton 1° message tu parlais: "jai ca sur des milliers de colonnes" j'ai traduit par "milliers de lignes" mais... (des milliers de colonnes m^me sur 2007 ?)
Suite...
si le départ n'est pas en ligne 1
n'oublie pas de modifier l'instruction de définition du tableau:
tablo = Range("AX:B" & Range("B65536").End(xlUp).Row)
et cells(lig+X,1) serait plutôt
cells(lig+X-1)
dans ton 1° message tu parlais: "jai ca sur des milliers de colonnes" j'ai traduit par "milliers de lignes" mais... (des milliers de colonnes m^me sur 2007 ?)
Merci à tous pour votre aide !!!
Le metayer, ta solution marche impec hormis pour quelques données mais on va pas chipoter :-)
michel_m ta macro bug jai un message erreur d'execution 13 au niveau de la ligne souligné
Dim derlig As Long, lig As Long
Dim tablo()
derlig = Range("A65536").End(xlUp).Row
tablo = Range("A1:B" & Range("B65536").End(xlUp).Row)
Application.ScreenUpdating = False
For lig = 1 To UBound(tablo)
Cells(lig, 1) = CDate(Right(tablo(lig, 1), 2) & "/" & Mid(tablo(lig, 1), 5, 2) & "/" & Left(tablo(lig, 1), 4))
Cells(lig, 2) = CDate(Right(tablo(lig, 2), 2) & "/" & Mid(tablo(lig, 2), 5, 2) & "/" & Left(tablo(lig, 2), 4))
Next
End Sub
Le metayer, ta solution marche impec hormis pour quelques données mais on va pas chipoter :-)
michel_m ta macro bug jai un message erreur d'execution 13 au niveau de la ligne souligné
Dim derlig As Long, lig As Long
Dim tablo()
derlig = Range("A65536").End(xlUp).Row
tablo = Range("A1:B" & Range("B65536").End(xlUp).Row)
Application.ScreenUpdating = False
For lig = 1 To UBound(tablo)
Cells(lig, 1) = CDate(Right(tablo(lig, 1), 2) & "/" & Mid(tablo(lig, 1), 5, 2) & "/" & Left(tablo(lig, 1), 4))
Cells(lig, 2) = CDate(Right(tablo(lig, 2), 2) & "/" & Mid(tablo(lig, 2), 5, 2) & "/" & Left(tablo(lig, 2), 4))
Next
End Sub
Bonjour,
J'ai réessayé, ca marche chez moi.... XL2003
l'erreur 13 se produit si la donnée (ta date) n'est pas de la forme "aaaammjj" comme tu l'as indiqué dans ta demande, par exemple si tu as indiqué l'étiquette de la colonne (date arrivée, machin...) ou date de la forme aammjj...
ci dessous procédure modifiée pour tenir compte de la ligne des premières date (dep)
fais un coiper-coller
J'ai réessayé, ca marche chez moi.... XL2003
l'erreur 13 se produit si la donnée (ta date) n'est pas de la forme "aaaammjj" comme tu l'as indiqué dans ta demande, par exemple si tu as indiqué l'étiquette de la colonne (date arrivée, machin...) ou date de la forme aammjj...
ci dessous procédure modifiée pour tenir compte de la ligne des premières date (dep)
fais un coiper-coller
Option Explicit Const dep As Long = 3 ' ligne haute du tableau Sub ccm() Dim derlig As Long, lig As Long Dim tablo() derlig = Range("A65536").End(xlUp).Row 'ligne basse du tableau tablo = Range(Cells(dep, 1), Cells(derlig, 2)) Application.ScreenUpdating = False For lig = 1 To UBound(tablo) Cells(dep + lig - 1, 1) = CDate(Right(tablo(lig, 1), 2) & "/" & Mid(tablo(lig, 1), 5, 2) & "/" & Left(tablo(lig, 1), 4)) Cells(dep + lig - 1, 2) = CDate(Right(tablo(lig, 2), 2) & "/" & Mid(tablo(lig, 2), 5, 2) & "/" & Left(tablo(lig, 2), 4)) Next End Sub