Je récupère des dates dans un fichier Excel à partir d'un logiciel sur lequel je n'ai pas le main.
Mon problème est que le logiciel-source contient un bug ennuyeux:
- si le jour du mois est inférieur ou égal à 12, alors la donnée apparaît sous la format time et s'affiche: MM/DD/YYYY hh:mm
- Mais si le jour du mois est supérieur à 12, la donnée apparaît comme une chaine de caractères (format string) sous la forme: JJ/MM/AAAA hh:mm
Apparemment le développeur du logiciel a voulu franciser les dates en inversant jour et mois et s'est joliment planté.
Mon souci, c'est que je veux exploiter les dates recueillies, et pour cela j'aimerais uniformiser les données reçues: soit avoir tout au format time, soit avoir tout au format string.
Mes quelques essais à base de petites macros ou de formules échouent lamentablement (je débute totalement en VBA) et je me retrouve bien bloqué.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
DanielCo
Bonjour, xécute cette macro (prévue pour la colonne A, à adapter). Sub test2() Columns(1).NumberFormat = "dd/mm/yyyy hh:mm" For Each C In Range("A1", Cells(Rows.Count, 1).End(xlUp)) If Application.IsText(C.Value) Then C.Value = DateSerial(Mid(C.Value, 7, 4), Mid(C.Value, 4, 2), Left(C.Value, 2)) + _ TimeSerial(Mid(C.Value, 12, 2), Right(C.Value, 2), 0) End If Next C End Sub Daniel
Bonjour,
Je récupère des dates dans un fichier Excel à partir d'un logiciel sur lequel je n'ai pas le main.
Mon problème est que le logiciel-source contient un bug ennuyeux:
- si le jour du mois est inférieur ou égal à 12, alors la donnée apparaît sous la format time et s'affiche: MM/DD/YYYY hh:mm
- Mais si le jour du mois est supérieur à 12, la donnée apparaît comme une chaine de caractères (format string) sous la forme: JJ/MM/AAAA hh:mm
Apparemment le développeur du logiciel a voulu franciser les dates en inversant jour et mois et s'est joliment planté.
Mon souci, c'est que je veux exploiter les dates recueillies, et pour cela j'aimerais uniformiser les données reçues: soit avoir tout au format time, soit avoir tout au format string.
Mes quelques essais à base de petites macros ou de formules échouent lamentablement (je débute totalement en VBA) et je me retrouve bien bloqué.
Quelqu'un aurait-il une piste ?
Bonjour,
xécute cette macro (prévue pour la colonne A, à adapter).
Sub test2()
Columns(1).NumberFormat = "dd/mm/yyyy hh:mm"
For Each C In Range("A1", Cells(Rows.Count, 1).End(xlUp))
If Application.IsText(C.Value) Then
C.Value = DateSerial(Mid(C.Value, 7, 4), Mid(C.Value, 4,
2), Left(C.Value, 2)) + _
TimeSerial(Mid(C.Value, 12, 2), Right(C.Value, 2), 0)
End If
Next C
End Sub
Daniel
Bonjour,
Je récupère des dates dans un fichier Excel à partir d'un logiciel sur lequel
je n'ai pas le main.
Mon problème est que le logiciel-source contient un bug ennuyeux:
- si le jour du mois est inférieur ou égal à 12, alors la donnée apparaît
sous la format time et s'affiche: MM/DD/YYYY hh:mm
- Mais si le jour du mois est supérieur à 12, la donnée apparaît comme une
chaine de caractères (format string) sous la forme: JJ/MM/AAAA hh:mm
Apparemment le développeur du logiciel a voulu franciser les dates en
inversant jour et mois et s'est joliment planté.
Mon souci, c'est que je veux exploiter les dates recueillies, et pour cela
j'aimerais uniformiser les données reçues: soit avoir tout au format time,
soit avoir tout au format string.
Mes quelques essais à base de petites macros ou de formules échouent
lamentablement (je débute totalement en VBA) et je me retrouve bien bloqué.
Bonjour, xécute cette macro (prévue pour la colonne A, à adapter). Sub test2() Columns(1).NumberFormat = "dd/mm/yyyy hh:mm" For Each C In Range("A1", Cells(Rows.Count, 1).End(xlUp)) If Application.IsText(C.Value) Then C.Value = DateSerial(Mid(C.Value, 7, 4), Mid(C.Value, 4, 2), Left(C.Value, 2)) + _ TimeSerial(Mid(C.Value, 12, 2), Right(C.Value, 2), 0) End If Next C End Sub Daniel
Bonjour,
Je récupère des dates dans un fichier Excel à partir d'un logiciel sur lequel je n'ai pas le main.
Mon problème est que le logiciel-source contient un bug ennuyeux:
- si le jour du mois est inférieur ou égal à 12, alors la donnée apparaît sous la format time et s'affiche: MM/DD/YYYY hh:mm
- Mais si le jour du mois est supérieur à 12, la donnée apparaît comme une chaine de caractères (format string) sous la forme: JJ/MM/AAAA hh:mm
Apparemment le développeur du logiciel a voulu franciser les dates en inversant jour et mois et s'est joliment planté.
Mon souci, c'est que je veux exploiter les dates recueillies, et pour cela j'aimerais uniformiser les données reçues: soit avoir tout au format time, soit avoir tout au format string.
Mes quelques essais à base de petites macros ou de formules échouent lamentablement (je débute totalement en VBA) et je me retrouve bien bloqué.
Quelqu'un aurait-il une piste ?
evargalo
Le mercredi 21 Mai 2014 à 13:44 par Evargalo :
Bonjour,
Je récupère des dates dans un fichier Excel à partir d'un logiciel sur lequel je n'ai pas le main.
Mon problème est que le logiciel-source contient un bug ennuyeux:
- si le jour du mois est inférieur ou égal à 12, alors la donnée apparaît sous la format time et s'affiche: MM/DD/YYYY hh:mm
- Mais si le jour du mois est supérieur à 12, la donnée apparaît comme une chaine de caractères (format string) sous la forme: JJ/MM/AAAA hh:mm
Apparemment le développeur du logiciel a voulu franciser les dates en inversant jour et mois et s'est joliment planté.
Mon souci, c'est que je veux exploiter les dates recueillies, et pour cela j'aimerais uniformiser les données reçues: soit avoir tout au format time, soit avoir tout au format string.
Mes quelques essais à base de petites macros ou de formules échouent lamentablement (je débute totalement en VBA) et je me retrouve bien bloqué.
Quelqu'un aurait-il une piste ?
Formidable !
J'ai adapté un tout petit peu, entre autre parce que j'avais mal expliqué ma situation au début, mais tout ça tourne bien comme il faut.
Un grand merci, et bravo pour la rapidité de la réponse.
Ma macro finale:
Sub CorrigeDate() Columns(1).NumberFormat = "dd/mm/yyyy hh:mm" For Each C In Range(ActiveCell, Cells(Rows.Count, 1).End(xlUp)) If Left(C.Value, 2) < 13 Then C.Value = DateSerial(Mid(C.Value, 7, 4), Left(C.Value, 2), Mid(C.Value, 4, 2)) + TimeSerial(Mid(C.Value, 12, 2), Mid(C.Value, 15, 2), 0) End If Next C End Sub
Le mercredi 21 Mai 2014 à 13:44 par Evargalo :
Bonjour,
Je récupère des dates dans un fichier Excel à partir d'un
logiciel sur lequel je n'ai pas le main.
Mon problème est que le logiciel-source contient un bug ennuyeux:
- si le jour du mois est inférieur ou égal à 12, alors la
donnée apparaît sous la format time et s'affiche: MM/DD/YYYY
hh:mm
- Mais si le jour du mois est supérieur à 12, la donnée
apparaît comme une chaine de caractères (format string) sous la
forme: JJ/MM/AAAA hh:mm
Apparemment le développeur du logiciel a voulu franciser les dates en
inversant jour et mois et s'est joliment planté.
Mon souci, c'est que je veux exploiter les dates recueillies, et pour cela
j'aimerais uniformiser les données reçues: soit avoir tout au
format time, soit avoir tout au format string.
Mes quelques essais à base de petites macros ou de formules
échouent lamentablement (je débute totalement en VBA) et je me
retrouve bien bloqué.
Quelqu'un aurait-il une piste ?
Formidable !
J'ai adapté un tout petit peu, entre autre parce que j'avais mal expliqué ma situation au début, mais tout ça tourne bien comme il faut.
Un grand merci, et bravo pour la rapidité de la réponse.
Ma macro finale:
Sub CorrigeDate()
Columns(1).NumberFormat = "dd/mm/yyyy hh:mm"
For Each C In Range(ActiveCell, Cells(Rows.Count, 1).End(xlUp))
If Left(C.Value, 2) < 13 Then
C.Value = DateSerial(Mid(C.Value, 7, 4), Left(C.Value, 2), Mid(C.Value, 4, 2)) + TimeSerial(Mid(C.Value, 12, 2), Mid(C.Value, 15, 2), 0)
End If
Next C
End Sub
Je récupère des dates dans un fichier Excel à partir d'un logiciel sur lequel je n'ai pas le main.
Mon problème est que le logiciel-source contient un bug ennuyeux:
- si le jour du mois est inférieur ou égal à 12, alors la donnée apparaît sous la format time et s'affiche: MM/DD/YYYY hh:mm
- Mais si le jour du mois est supérieur à 12, la donnée apparaît comme une chaine de caractères (format string) sous la forme: JJ/MM/AAAA hh:mm
Apparemment le développeur du logiciel a voulu franciser les dates en inversant jour et mois et s'est joliment planté.
Mon souci, c'est que je veux exploiter les dates recueillies, et pour cela j'aimerais uniformiser les données reçues: soit avoir tout au format time, soit avoir tout au format string.
Mes quelques essais à base de petites macros ou de formules échouent lamentablement (je débute totalement en VBA) et je me retrouve bien bloqué.
Quelqu'un aurait-il une piste ?
Formidable !
J'ai adapté un tout petit peu, entre autre parce que j'avais mal expliqué ma situation au début, mais tout ça tourne bien comme il faut.
Un grand merci, et bravo pour la rapidité de la réponse.
Ma macro finale:
Sub CorrigeDate() Columns(1).NumberFormat = "dd/mm/yyyy hh:mm" For Each C In Range(ActiveCell, Cells(Rows.Count, 1).End(xlUp)) If Left(C.Value, 2) < 13 Then C.Value = DateSerial(Mid(C.Value, 7, 4), Left(C.Value, 2), Mid(C.Value, 4, 2)) + TimeSerial(Mid(C.Value, 12, 2), Mid(C.Value, 15, 2), 0) End If Next C End Sub
MichD
Bonjour,
Peux-tu nous donner des exemples de dates affichées dans ta feuille de calcul dans Excel. Quel est l'affichage en colonne A lorsque tu les reçois et quelle devrait être l'affichage d'après ton format date par défaut.
Bonjour,
Peux-tu nous donner des exemples de dates affichées dans ta feuille de
calcul dans Excel.
Quel est l'affichage en colonne A lorsque tu les reçois et quelle devrait
être l'affichage d'après ton format date par défaut.
Peux-tu nous donner des exemples de dates affichées dans ta feuille de calcul dans Excel. Quel est l'affichage en colonne A lorsque tu les reçois et quelle devrait être l'affichage d'après ton format date par défaut.
evargalo
Le mercredi 21 Mai 2014 à 16:23 par MichD :
Bonjour,
Peux-tu nous donner des exemples de dates affichées dans ta feuille de calcul dans Excel. Quel est l'affichage en colonne A lorsque tu les reçois et quelle devrait être l'affichage d'après ton format date par défaut.
Une date telle que le 10 avril à 16:46 s'affiche: 04/10/2014 16:46 alignée à droite, si je fais =estnum() de la cellule j'obtiens VRAI. Sa cellule est au format personnalisé: jj/mm/aaaa hh:mm
Une date telle que le 14 avril à 12:50 s'affiche: 14/04/2014 12:50 alignée à gauche, si je fais =estnum() de la cellule j'obtiens FAUX. Sa cellule est au format standard
J'ai finalement un souci avec ma procédure essayée plus haut grâce au code de Daniel et qui fonctionne très bien sur une colonne, mais pas sur une autre...
Le mercredi 21 Mai 2014 à 16:23 par MichD :
Bonjour,
Peux-tu nous donner des exemples de dates affichées dans ta feuille de
calcul dans Excel.
Quel est l'affichage en colonne A lorsque tu les reçois et quelle
devrait
être l'affichage d'après ton format date par défaut.
Une date telle que le 10 avril à 16:46 s'affiche:
04/10/2014 16:46
alignée à droite, si je fais =estnum() de la cellule j'obtiens VRAI.
Sa cellule est au format personnalisé: jj/mm/aaaa hh:mm
Une date telle que le 14 avril à 12:50 s'affiche:
14/04/2014 12:50
alignée à gauche, si je fais =estnum() de la cellule j'obtiens FAUX.
Sa cellule est au format standard
J'ai finalement un souci avec ma procédure essayée plus haut grâce au code de Daniel et qui fonctionne très bien sur une colonne, mais pas sur une autre...
Peux-tu nous donner des exemples de dates affichées dans ta feuille de calcul dans Excel. Quel est l'affichage en colonne A lorsque tu les reçois et quelle devrait être l'affichage d'après ton format date par défaut.
Une date telle que le 10 avril à 16:46 s'affiche: 04/10/2014 16:46 alignée à droite, si je fais =estnum() de la cellule j'obtiens VRAI. Sa cellule est au format personnalisé: jj/mm/aaaa hh:mm
Une date telle que le 14 avril à 12:50 s'affiche: 14/04/2014 12:50 alignée à gauche, si je fais =estnum() de la cellule j'obtiens FAUX. Sa cellule est au format standard
J'ai finalement un souci avec ma procédure essayée plus haut grâce au code de Daniel et qui fonctionne très bien sur une colonne, mais pas sur une autre...
MichD
As-tu essayé ceci :
Dans une cellule vide, tu saisis la valeur 1 Tu copies cette cellule dans le presse-papier Tu sélectionnes la plage de cellules où se retrouvent les dates Tu fais un collage spécial - Valeur et multiplication
Obtiens-tu le format date désiré?
As-tu essayé ceci :
Dans une cellule vide, tu saisis la valeur 1
Tu copies cette cellule dans le presse-papier
Tu sélectionnes la plage de cellules où se retrouvent les dates
Tu fais un collage spécial - Valeur et multiplication
Dans une cellule vide, tu saisis la valeur 1 Tu copies cette cellule dans le presse-papier Tu sélectionnes la plage de cellules où se retrouvent les dates Tu fais un collage spécial - Valeur et multiplication