Je récupère des données via une exportation depuis un logiciel.
Les dates se présentent comme ceci : 06.04.2022, forcément Excel n'aime pas trop !
Donc, je boucle sur la colonne en faisant ca :
Range("F" & i) = DateSerial(Right(Range("F" & i), 4), Mid(Range("F" & i), 4, 2), Left(Range("F" & i), 2))
Est-il possible de faire ça d'un coup ? Quelque chose du genre :
Set Rg2 = Range("F3:F" & .Range("F" & .Rows.Count).End(xlUp).Row), ca c'est OK !
Mais si je fais :
Rg2 = DateSerial(Right(Rg2, 4), Mid(Rg2, 4, 2), Left(Rg2, 2))
ça plante (sinon je ne serais pas lÍ !!!).
Merci d'avance Í tout généreux contributeur (Denis, au hasard !!!)
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
MichD
Le 06/04/22 Í 05:02, ThierryP a écrit :
Bonjour le forum et Denis ! Je récupère des données via une exportation depuis un logiciel. Les dates se présentent comme ceci : 06.04.2022, forcément Excel n'aime pas trop ! Donc, je boucle sur la colonne en faisant ca : Range("F" & i) = DateSerial(Right(Range("F" & i), 4), Mid(Range("F" & i), 4, 2), Left(Range("F" & i), 2)) Est-il possible de faire ça d'un coup ? Quelque chose du genre : Set Rg2 = Range("F3:F" & .Range("F" & .Rows.Count).End(xlUp).Row), ca c'est OK ! Mais si je fais : Rg2 = DateSerial(Right(Rg2, 4), Mid(Rg2, 4, 2), Left(Rg2, 2)) ça plante (sinon je ne serais pas lÍ !!!). Merci d'avance Í tout généreux contributeur (Denis, au hasard !!!) ThierryP
Bonjour, Essaie comme ceci: '-------------------------------- Sub test() With Worksheets("Feuil1") With .Range("F3:F" & .Range("F" & .Rows.Count).End(xlUp).Row) .NumberFormat = "DD-MM-YYYY" .Replace What:=".", replacement:="-", LookAt:=xlPart End With End With End Sub '-------------------------------- MichD
Le 06/04/22 Í 05:02, ThierryP a écrit :
Bonjour le forum et Denis !
Je récupère des données via une exportation depuis un logiciel.
Les dates se présentent comme ceci : 06.04.2022, forcément Excel n'aime pas trop !
Donc, je boucle sur la colonne en faisant ca :
Range("F" & i) = DateSerial(Right(Range("F" & i), 4), Mid(Range("F" & i), 4, 2), Left(Range("F" & i), 2))
Est-il possible de faire ça d'un coup ? Quelque chose du genre :
Set Rg2 = Range("F3:F" & .Range("F" & .Rows.Count).End(xlUp).Row), ca c'est OK !
Mais si je fais :
Rg2 = DateSerial(Right(Rg2, 4), Mid(Rg2, 4, 2), Left(Rg2, 2))
ça plante (sinon je ne serais pas lÍ !!!).
Merci d'avance Í tout généreux contributeur (Denis, au hasard !!!)
ThierryP
Bonjour,
Essaie comme ceci:
'--------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("F3:F" & .Range("F" & .Rows.Count).End(xlUp).Row)
.NumberFormat = "DD-MM-YYYY"
.Replace What:=".", replacement:="-", LookAt:=xlPart
End With
End With
End Sub
'--------------------------------
Bonjour le forum et Denis ! Je récupère des données via une exportation depuis un logiciel. Les dates se présentent comme ceci : 06.04.2022, forcément Excel n'aime pas trop ! Donc, je boucle sur la colonne en faisant ca : Range("F" & i) = DateSerial(Right(Range("F" & i), 4), Mid(Range("F" & i), 4, 2), Left(Range("F" & i), 2)) Est-il possible de faire ça d'un coup ? Quelque chose du genre : Set Rg2 = Range("F3:F" & .Range("F" & .Rows.Count).End(xlUp).Row), ca c'est OK ! Mais si je fais : Rg2 = DateSerial(Right(Rg2, 4), Mid(Rg2, 4, 2), Left(Rg2, 2)) ça plante (sinon je ne serais pas lÍ !!!). Merci d'avance Í tout généreux contributeur (Denis, au hasard !!!) ThierryP
Bonjour, Essaie comme ceci: '-------------------------------- Sub test() With Worksheets("Feuil1") With .Range("F3:F" & .Range("F" & .Rows.Count).End(xlUp).Row) .NumberFormat = "DD-MM-YYYY" .Replace What:=".", replacement:="-", LookAt:=xlPart End With End With End Sub '-------------------------------- MichD
ThierryP
Parfait, comme d'habitude :-):-) Un tout grand merci, ThierryP
Parfait, comme d'habitude :-):-) Un tout grand merci, ThierryP
ThierryP
Juste un petiit souci de conversion..... Ta macro me renvoyait des dates au format américain, donc j'ai modifié le format en MM-DD-YYYY mais du coup certaines dates restent au format "texte", d'autres sont reconnues comme dates. Ex : 13.08.2020 devient 13/08/2020 et si je passe en format standard, c'est 13/08/2020 qui est écrit dans la cellule 10.12.2020 deveint 10/12/2020 et si je passe en format standard, c'est bien 44116 (N° de série) qui est écrit dans la cellule. Et comme j'ai besoin de trier sur cette colonne, forcément j'ai des problèmes ! C'est d'ailleurs pour ça que je passais par DateSerial en bouclant pour écrire mes dates. Mais je suis sÍ»r que ce n'est pas un vrai problème pour toi ! ThierryP
Juste un petiit souci de conversion.....
Ta macro me renvoyait des dates au format américain, donc j'ai modifié le format en MM-DD-YYYY mais du coup certaines dates restent au format "texte", d'autres sont reconnues comme dates. Ex :
13.08.2020 devient 13/08/2020 et si je passe en format standard, c'est 13/08/2020 qui est écrit dans la cellule
10.12.2020 deveint 10/12/2020 et si je passe en format standard, c'est bien 44116 (N° de série) qui est écrit dans la cellule.
Et comme j'ai besoin de trier sur cette colonne, forcément j'ai des problèmes ! C'est d'ailleurs pour ça que je passais par DateSerial en bouclant pour écrire mes dates.
Mais je suis sÍ»r que ce n'est pas un vrai problème pour toi !
Juste un petiit souci de conversion..... Ta macro me renvoyait des dates au format américain, donc j'ai modifié le format en MM-DD-YYYY mais du coup certaines dates restent au format "texte", d'autres sont reconnues comme dates. Ex : 13.08.2020 devient 13/08/2020 et si je passe en format standard, c'est 13/08/2020 qui est écrit dans la cellule 10.12.2020 deveint 10/12/2020 et si je passe en format standard, c'est bien 44116 (N° de série) qui est écrit dans la cellule. Et comme j'ai besoin de trier sur cette colonne, forcément j'ai des problèmes ! C'est d'ailleurs pour ça que je passais par DateSerial en bouclant pour écrire mes dates. Mais je suis sÍ»r que ce n'est pas un vrai problème pour toi ! ThierryP
MichD
Le 06/04/22 Í 10:29, ThierryP a écrit :
Juste un petiit souci de conversion..... Ta macro me renvoyait des dates au format américain, donc j'ai modifié le format en MM-DD-YYYY mais du coup certaines dates restent au format "texte", d'autres sont reconnues comme dates. Ex : 13.08.2020 devient 13/08/2020 et si je passe en format standard, c'est 13/08/2020 qui est écrit dans la cellule 10.12.2020 deveint 10/12/2020 et si je passe en format standard, c'est bien 44116 (N° de série) qui est écrit dans la cellule. Et comme j'ai besoin de trier sur cette colonne, forcément j'ai des problèmes ! C'est d'ailleurs pour ça que je passais par DateSerial en bouclant pour écrire mes dates. Mais je suis sÍ»r que ce n'est pas un vrai problème pour toi ! ThierryP
On va changer d'approche '------------------------------------ Sub test() Dim T As Variant, A As Long, B As Long Application.ScreenUpdating = False Application.EnableEvents = False With Worksheets("Feuil1") With With .Range("F3:F" & .Range("F" & .Rows.Count).End(xlUp).Row) T = .Value For A = 1 To UBound(T, 1) For B = 1 To UBound(T, 2) T(A, B) = Replace(T(A, B), ".", "/") .Item(A) = CDate(T(A, B)) Next Next End With End With Application.ScreenUpdating = False Application.EnableEvents = False End Sub '------------------------------------ MichD
Le 06/04/22 Í 10:29, ThierryP a écrit :
Juste un petiit souci de conversion.....
Ta macro me renvoyait des dates au format américain, donc j'ai modifié le format en MM-DD-YYYY mais du coup certaines dates restent au format "texte", d'autres sont reconnues comme dates. Ex :
13.08.2020 devient 13/08/2020 et si je passe en format standard, c'est 13/08/2020 qui est écrit dans la cellule
10.12.2020 deveint 10/12/2020 et si je passe en format standard, c'est bien 44116 (N° de série) qui est écrit dans la cellule.
Et comme j'ai besoin de trier sur cette colonne, forcément j'ai des problèmes ! C'est d'ailleurs pour ça que je passais par DateSerial en bouclant pour écrire mes dates.
Mais je suis sÍ»r que ce n'est pas un vrai problème pour toi !
ThierryP
On va changer d'approche
'------------------------------------
Sub test()
Dim T As Variant, A As Long, B As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1")
With With .Range("F3:F" & .Range("F" & .Rows.Count).End(xlUp).Row)
T = .Value
For A = 1 To UBound(T, 1)
For B = 1 To UBound(T, 2)
T(A, B) = Replace(T(A, B), ".", "/")
.Item(A) = CDate(T(A, B))
Next
Next
End With
End With
Application.ScreenUpdating = False
Application.EnableEvents = False
Juste un petiit souci de conversion..... Ta macro me renvoyait des dates au format américain, donc j'ai modifié le format en MM-DD-YYYY mais du coup certaines dates restent au format "texte", d'autres sont reconnues comme dates. Ex : 13.08.2020 devient 13/08/2020 et si je passe en format standard, c'est 13/08/2020 qui est écrit dans la cellule 10.12.2020 deveint 10/12/2020 et si je passe en format standard, c'est bien 44116 (N° de série) qui est écrit dans la cellule. Et comme j'ai besoin de trier sur cette colonne, forcément j'ai des problèmes ! C'est d'ailleurs pour ça que je passais par DateSerial en bouclant pour écrire mes dates. Mais je suis sÍ»r que ce n'est pas un vrai problème pour toi ! ThierryP
On va changer d'approche '------------------------------------ Sub test() Dim T As Variant, A As Long, B As Long Application.ScreenUpdating = False Application.EnableEvents = False With Worksheets("Feuil1") With With .Range("F3:F" & .Range("F" & .Rows.Count).End(xlUp).Row) T = .Value For A = 1 To UBound(T, 1) For B = 1 To UBound(T, 2) T(A, B) = Replace(T(A, B), ".", "/") .Item(A) = CDate(T(A, B)) Next Next End With End With Application.ScreenUpdating = False Application.EnableEvents = False End Sub '------------------------------------ MichD
MichD
Le 06/04/22 Í 10:29, ThierryP a écrit :
Juste un petiit souci de conversion..... Ta macro me renvoyait des dates au format américain, donc j'ai modifié le format en MM-DD-YYYY mais du coup certaines dates restent au format "texte", d'autres sont reconnues comme dates. Ex : 13.08.2020 devient 13/08/2020 et si je passe en format standard, c'est 13/08/2020 qui est écrit dans la cellule 10.12.2020 deveint 10/12/2020 et si je passe en format standard, c'est bien 44116 (N° de série) qui est écrit dans la cellule. Et comme j'ai besoin de trier sur cette colonne, forcément j'ai des problèmes ! C'est d'ailleurs pour ça que je passais par DateSerial en bouclant pour écrire mes dates. Mais je suis sÍ»r que ce n'est pas un vrai problème pour toi ! ThierryP
Par l'interface de calcul, il y a une méthode facile et rapide : Onglet : accueil du menu À l'extrême droite : "Rechercher et sélectionner" dans le sous-menu, choisir la commande :"Remplacer" Dans le textbox Rechercher : . Remplacer : / Appuie sur le bouton "remplacer tout" Il faut se rappeler que l'interface de calcul utilise les paramètres régionaux définis dans le panneau de configuration de Windows tandis qu'en VBA, c'est par défaut les paramètres américains. Le format date américain par défaut est Mois/jour/année. Lorsque la date contenue dans une cellule ne peut pas s'adapter au format américain comme 16.12.2022 parce que 16 ne peut être un "mois" (seulement 12 mois par année), il adopte le format défini dans les paramètres régionaux de Windows. MichD
Le 06/04/22 Í 10:29, ThierryP a écrit :
Juste un petiit souci de conversion.....
Ta macro me renvoyait des dates au format américain, donc j'ai modifié le format en MM-DD-YYYY mais du coup certaines dates restent au format "texte", d'autres sont reconnues comme dates. Ex :
13.08.2020 devient 13/08/2020 et si je passe en format standard, c'est 13/08/2020 qui est écrit dans la cellule
10.12.2020 deveint 10/12/2020 et si je passe en format standard, c'est bien 44116 (N° de série) qui est écrit dans la cellule.
Et comme j'ai besoin de trier sur cette colonne, forcément j'ai des problèmes ! C'est d'ailleurs pour ça que je passais par DateSerial en bouclant pour écrire mes dates.
Mais je suis sÍ»r que ce n'est pas un vrai problème pour toi !
ThierryP
Par l'interface de calcul, il y a une méthode facile et rapide :
Onglet : accueil du menu
À l'extrême droite : "Rechercher et sélectionner"
dans le sous-menu, choisir la commande :"Remplacer"
Dans le textbox
Rechercher : .
Remplacer : /
Appuie sur le bouton "remplacer tout"
Il faut se rappeler que l'interface de calcul utilise les paramètres
régionaux définis dans le panneau de configuration de Windows tandis
qu'en VBA, c'est par défaut les paramètres américains. Le format date
américain par défaut est Mois/jour/année. Lorsque la date contenue dans
une cellule ne peut pas s'adapter au format américain comme 16.12.2022
parce que 16 ne peut être un "mois" (seulement 12 mois par année), il
adopte le format défini dans les paramètres régionaux de Windows.
Juste un petiit souci de conversion..... Ta macro me renvoyait des dates au format américain, donc j'ai modifié le format en MM-DD-YYYY mais du coup certaines dates restent au format "texte", d'autres sont reconnues comme dates. Ex : 13.08.2020 devient 13/08/2020 et si je passe en format standard, c'est 13/08/2020 qui est écrit dans la cellule 10.12.2020 deveint 10/12/2020 et si je passe en format standard, c'est bien 44116 (N° de série) qui est écrit dans la cellule. Et comme j'ai besoin de trier sur cette colonne, forcément j'ai des problèmes ! C'est d'ailleurs pour ça que je passais par DateSerial en bouclant pour écrire mes dates. Mais je suis sÍ»r que ce n'est pas un vrai problème pour toi ! ThierryP
Par l'interface de calcul, il y a une méthode facile et rapide : Onglet : accueil du menu À l'extrême droite : "Rechercher et sélectionner" dans le sous-menu, choisir la commande :"Remplacer" Dans le textbox Rechercher : . Remplacer : / Appuie sur le bouton "remplacer tout" Il faut se rappeler que l'interface de calcul utilise les paramètres régionaux définis dans le panneau de configuration de Windows tandis qu'en VBA, c'est par défaut les paramètres américains. Le format date américain par défaut est Mois/jour/année. Lorsque la date contenue dans une cellule ne peut pas s'adapter au format américain comme 16.12.2022 parce que 16 ne peut être un "mois" (seulement 12 mois par année), il adopte le format défini dans les paramètres régionaux de Windows. MichD
ThierryP
Le jeudi 7 avril 2022 Í 12:54:47 UTC+2, MichD a écrit :
Le 06/04/22 Í 10:29, ThierryP a écrit :
Juste un petiit souci de conversion..... Ta macro me renvoyait des dates au format américain, donc j'ai modifié le format en MM-DD-YYYY mais du coup certaines dates restent au format "texte", d'autres sont reconnues comme dates. Ex : 13.08.2020 devient 13/08/2020 et si je passe en format standard, c'est 13/08/2020 qui est écrit dans la cellule 10.12.2020 deveint 10/12/2020 et si je passe en format standard, c'est bien 44116 (N° de série) qui est écrit dans la cellule. Et comme j'ai besoin de trier sur cette colonne, forcément j'ai des problèmes ! C'est d'ailleurs pour ça que je passais par DateSerial en bouclant pour écrire mes dates. Mais je suis sÍ»r que ce n'est pas un vrai problème pour toi ! ThierryP
Par l'interface de calcul, il y a une méthode facile et rapide : Onglet : accueil du menu À l'extrême droite : "Rechercher et sélectionner" dans le sous-menu, choisir la commande :"Remplacer" Dans le textbox Rechercher : . Remplacer : / Appuie sur le bouton "remplacer tout" Il faut se rappeler que l'interface de calcul utilise les paramètres régionaux définis dans le panneau de configuration de Windows tandis qu'en VBA, c'est par défaut les paramètres américains. Le format date américain par défaut est Mois/jour/année. Lorsque la date contenue dans une cellule ne peut pas s'adapter au format américain comme 16.12.2022 parce que 16 ne peut être un "mois" (seulement 12 mois par année), il adopte le format défini dans les paramètres régionaux de Windows. MichD
Merci Denis pour les explications complémentaires ! Mais comme je fais un tas de traitement sur les données reçues, je veux éviter les manipulations "manuelles" par des utilisateurs qui ne connaissnt pas trop Excel ! Le nouvelle variante fonctionne parfaitement, c'est impeccable ! Merci, ThierryP
Le jeudi 7 avril 2022 Í 12:54:47 UTC+2, MichD a écrit :
Le 06/04/22 Í 10:29, ThierryP a écrit :
> Juste un petiit souci de conversion.....
> Ta macro me renvoyait des dates au format américain, donc j'ai modifié le format en MM-DD-YYYY mais du coup certaines dates restent au format "texte", d'autres sont reconnues comme dates. Ex :
> 13.08.2020 devient 13/08/2020 et si je passe en format standard, c'est 13/08/2020 qui est écrit dans la cellule
> 10.12.2020 deveint 10/12/2020 et si je passe en format standard, c'est bien 44116 (N° de série) qui est écrit dans la cellule.
>
> Et comme j'ai besoin de trier sur cette colonne, forcément j'ai des problèmes ! C'est d'ailleurs pour ça que je passais par DateSerial en bouclant pour écrire mes dates.
>
> Mais je suis sÍ»r que ce n'est pas un vrai problème pour toi !
>
> ThierryP
Par l'interface de calcul, il y a une méthode facile et rapide :
Onglet : accueil du menu
À l'extrême droite : "Rechercher et sélectionner"
dans le sous-menu, choisir la commande :"Remplacer"
Dans le textbox
Rechercher : .
Remplacer : /
Appuie sur le bouton "remplacer tout"
Il faut se rappeler que l'interface de calcul utilise les paramètres
régionaux définis dans le panneau de configuration de Windows tandis
qu'en VBA, c'est par défaut les paramètres américains. Le format date
américain par défaut est Mois/jour/année. Lorsque la date contenue dans
une cellule ne peut pas s'adapter au format américain comme 16.12.2022
parce que 16 ne peut être un "mois" (seulement 12 mois par année), il
adopte le format défini dans les paramètres régionaux de Windows.
MichD
Merci Denis pour les explications complémentaires !
Mais comme je fais un tas de traitement sur les données reçues, je veux éviter les manipulations "manuelles" par des utilisateurs qui ne connaissnt pas trop Excel !
Le nouvelle variante fonctionne parfaitement, c'est impeccable !
Le jeudi 7 avril 2022 Í 12:54:47 UTC+2, MichD a écrit :
Le 06/04/22 Í 10:29, ThierryP a écrit :
Juste un petiit souci de conversion..... Ta macro me renvoyait des dates au format américain, donc j'ai modifié le format en MM-DD-YYYY mais du coup certaines dates restent au format "texte", d'autres sont reconnues comme dates. Ex : 13.08.2020 devient 13/08/2020 et si je passe en format standard, c'est 13/08/2020 qui est écrit dans la cellule 10.12.2020 deveint 10/12/2020 et si je passe en format standard, c'est bien 44116 (N° de série) qui est écrit dans la cellule. Et comme j'ai besoin de trier sur cette colonne, forcément j'ai des problèmes ! C'est d'ailleurs pour ça que je passais par DateSerial en bouclant pour écrire mes dates. Mais je suis sÍ»r que ce n'est pas un vrai problème pour toi ! ThierryP
Par l'interface de calcul, il y a une méthode facile et rapide : Onglet : accueil du menu À l'extrême droite : "Rechercher et sélectionner" dans le sous-menu, choisir la commande :"Remplacer" Dans le textbox Rechercher : . Remplacer : / Appuie sur le bouton "remplacer tout" Il faut se rappeler que l'interface de calcul utilise les paramètres régionaux définis dans le panneau de configuration de Windows tandis qu'en VBA, c'est par défaut les paramètres américains. Le format date américain par défaut est Mois/jour/année. Lorsque la date contenue dans une cellule ne peut pas s'adapter au format américain comme 16.12.2022 parce que 16 ne peut être un "mois" (seulement 12 mois par année), il adopte le format défini dans les paramètres régionaux de Windows. MichD
Merci Denis pour les explications complémentaires ! Mais comme je fais un tas de traitement sur les données reçues, je veux éviter les manipulations "manuelles" par des utilisateurs qui ne connaissnt pas trop Excel ! Le nouvelle variante fonctionne parfaitement, c'est impeccable ! Merci, ThierryP