Macro - Tri - BUG transformation format date
Résolu/Fermé
demandes
-
8 juil. 2009 à 09:41
Le Pingou Messages postés 12242 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 16 mars 2025 - 15 juil. 2009 à 13:54
Le Pingou Messages postés 12242 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 16 mars 2025 - 15 juil. 2009 à 13:54
A voir également:
- Macro - Tri - BUG transformation format date
- Format epub - Guide
- Telecharger format factory - Télécharger - Conversion & Codecs
- Format apfs - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Trier par date excel - Guide
15 réponses
Le Pingou
Messages postés
12242
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
16 mars 2025
1 458
13 juil. 2009 à 13:05
13 juil. 2009 à 13:05
Bonjour,
J’ai enfin découvert le problème. La date/heure est un nombre dont la partie entière est l’année, mois et jour et la partie décimale représente l’heur, minute et seconde par exemple (40007.53125 correspond au 13 juillet 2009 à 12 :45).
Voici la procédure qui est correcte :
Sub Extrait_Trier_DateFormdate()
Dim c As Integer, nbli As Integer
' Supprimer les 2 colonnes de gauche
Columns("A:B").Delete Shift:=xlToLeft
nbli = WorksheetFunction.CountA(Columns("B:B"))
For c = 2 To nbli
Cells(c, 3).Value = CDate(Left(Cells(c, 2), 11)) + CDate(Right(Cells(c, 2), 8))
Next c
' Supprimer la plage date à traiter et déplacer à gauche les éléments traités
Range("B2:B" & nbli).Delete Shift:=xlToLeft
' trier ascendant sur la date
Range("A1:B" & nbli).Sort Key1:=Range("B1"), Order1:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
J’ai enfin découvert le problème. La date/heure est un nombre dont la partie entière est l’année, mois et jour et la partie décimale représente l’heur, minute et seconde par exemple (40007.53125 correspond au 13 juillet 2009 à 12 :45).
Voici la procédure qui est correcte :
Sub Extrait_Trier_DateFormdate()
Dim c As Integer, nbli As Integer
' Supprimer les 2 colonnes de gauche
Columns("A:B").Delete Shift:=xlToLeft
nbli = WorksheetFunction.CountA(Columns("B:B"))
For c = 2 To nbli
Cells(c, 3).Value = CDate(Left(Cells(c, 2), 11)) + CDate(Right(Cells(c, 2), 8))
Next c
' Supprimer la plage date à traiter et déplacer à gauche les éléments traités
Range("B2:B" & nbli).Delete Shift:=xlToLeft
' trier ascendant sur la date
Range("A1:B" & nbli).Sort Key1:=Range("B1"), Order1:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
8 juil. 2009 à 10:52
8 juil. 2009 à 10:52
Bonjour,
Et bien comme ça c'est pas possible de déterminer comment sont enrégistrées tes dates ?.
Tu peu mettre un exemple de ton classeur sur Cjoint.com ?
Ce serais plus constructif.
A+
Et bien comme ça c'est pas possible de déterminer comment sont enrégistrées tes dates ?.
Tu peu mettre un exemple de ton classeur sur Cjoint.com ?
Ce serais plus constructif.
A+
Bonsoir lermite222,
Voici le lien vers le fichier http://cjoint.com/data/hisKxOKkDX.htm Il n’y a qu’à exécuter la macro pour voir directement le problème.
MERCI
Voici le lien vers le fichier http://cjoint.com/data/hisKxOKkDX.htm Il n’y a qu’à exécuter la macro pour voir directement le problème.
MERCI
Le Pingou
Messages postés
12242
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
16 mars 2025
1 458
8 juil. 2009 à 22:09
8 juil. 2009 à 22:09
Bonjour,
Il semble que le problème est au niveau de la fonction [Replace]. Essayez la procédure suivante:
Sub Archives_des_offensives_victorieuses()
'
' Archives_des_offensives_victorieuses Macro
' Macro enregistrée le 8/07/2009 par Potelberg Stéphane
'
Columns("A:B").Delete Shift:=xlToLeft
With Columns("B:B")
.Replace What:="/", Replacement:="."
.Replace What:="à", Replacement:=""
End With
Columns("B:B").EntireColumn.AutoFit
Range("A1:B1").Select
Selection.AutoFilter
Range("A1:B41").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Il semble que le problème est au niveau de la fonction [Replace]. Essayez la procédure suivante:
Sub Archives_des_offensives_victorieuses()
'
' Archives_des_offensives_victorieuses Macro
' Macro enregistrée le 8/07/2009 par Potelberg Stéphane
'
Columns("A:B").Delete Shift:=xlToLeft
With Columns("B:B")
.Replace What:="/", Replacement:="."
.Replace What:="à", Replacement:=""
End With
Columns("B:B").EntireColumn.AutoFit
Range("A1:B1").Select
Selection.AutoFilter
Range("A1:B41").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
9 juil. 2009 à 09:21
9 juil. 2009 à 09:21
Le problème est bien sû au niveau du Replace, pour y remédier j'ai ajouter 2 colonnes, si ces deux colonnes gène tu peu toujours les cacher.
Ton classeur
A+
Ton classeur
A+
Bonjour Le Pingou,
Je te remercie pour tes conseils, la macro fonctionne mais j'aimerais arriver à réaliser cette opération sans remplacer les "/" par ".", car je copie le résultat dans un autre tableau plus grand et le format date est du type: jj/mm/aaaa hh:mm:ss
De plus, je n'ai pas compris pourquoi la ligne Joueur/Date se retrouve en dessous après avoir exécuté la macro avec d'autres données.
Bonjour lermite222,
Je te remercie pour tes conseils, la macro fonctionne, mais comme le nombre de lignes à traiter varie. Donc, il faut soit que je supprime des lignes de tes formules en E et F pour ne pas avoir de blanc ou soit que je tire tes formules en E et F quand le nombre de lignes est plus important.
Conclusion
Je voulais surtout comprendre pourquoi il inversait le jour et le mois dans ma macro alors que quand je le fais manuellement je n'ai pas de problème.
Y a-t-il un moyen de réaliser la macro sans modifier les "/" en "." et sans ajouter des colonnes?
Je sais je suis exigent (rire).
Bonne journée…
Je te remercie pour tes conseils, la macro fonctionne mais j'aimerais arriver à réaliser cette opération sans remplacer les "/" par ".", car je copie le résultat dans un autre tableau plus grand et le format date est du type: jj/mm/aaaa hh:mm:ss
De plus, je n'ai pas compris pourquoi la ligne Joueur/Date se retrouve en dessous après avoir exécuté la macro avec d'autres données.
Bonjour lermite222,
Je te remercie pour tes conseils, la macro fonctionne, mais comme le nombre de lignes à traiter varie. Donc, il faut soit que je supprime des lignes de tes formules en E et F pour ne pas avoir de blanc ou soit que je tire tes formules en E et F quand le nombre de lignes est plus important.
Conclusion
Je voulais surtout comprendre pourquoi il inversait le jour et le mois dans ma macro alors que quand je le fais manuellement je n'ai pas de problème.
Y a-t-il un moyen de réaliser la macro sans modifier les "/" en "." et sans ajouter des colonnes?
Je sais je suis exigent (rire).
Bonne journée…
Le Pingou
Messages postés
12242
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
16 mars 2025
1 458
10 juil. 2009 à 15:10
10 juil. 2009 à 15:10
Bonjour,
J'ai une question : avant intervention de la macro la colonne date est en format texte [07/07/2009 à 02:50:15]
est après la macro que voulez-vous format date/heure ou texte ?
J'ai une question : avant intervention de la macro la colonne date est en format texte [07/07/2009 à 02:50:15]
est après la macro que voulez-vous format date/heure ou texte ?
Bonjour Le Pingou,
Je pense qu'avant la manipulation, les données sont au format Standard (copier/coller du Web).
Après, j'aimerais un format jj/mm/aaaa hh:mm:ss (date et heure). Normalement, le format se règle automatiquement en j/mm/aaaa h:mm après avoir supprimés les "à ". Donc, c'est bon.
MERCI
Je pense qu'avant la manipulation, les données sont au format Standard (copier/coller du Web).
Après, j'aimerais un format jj/mm/aaaa hh:mm:ss (date et heure). Normalement, le format se règle automatiquement en j/mm/aaaa h:mm après avoir supprimés les "à ". Donc, c'est bon.
MERCI
Le Pingou
Messages postés
12242
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
16 mars 2025
1 458
10 juil. 2009 à 17:57
10 juil. 2009 à 17:57
Bonjour,
Merci pour l'information.
Oui le format se règle automatiquement mais il interverti jour et mois ...!
Merci pour l'information.
Oui le format se règle automatiquement mais il interverti jour et mois ...!
Le Pingou
Messages postés
12242
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
16 mars 2025
1 458
10 juil. 2009 à 20:32
10 juil. 2009 à 20:32
Bonjour,
Quetion: lorsque le "à" de la colonne date est supprimer, avez-vous l'affichage suivant [07/07/2009 à 02:50:15] ou [07.07.2009 02:50:15] ?
Merci de la réponse.
Quetion: lorsque le "à" de la colonne date est supprimer, avez-vous l'affichage suivant [07/07/2009 à 02:50:15] ou [07.07.2009 02:50:15] ?
Merci de la réponse.
Le Pingou
Messages postés
12242
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
16 mars 2025
1 458
11 juil. 2009 à 17:16
11 juil. 2009 à 17:16
Bonjour,
Je vous propose la procédure suivante :
Sub Extrait_Trier()
Dim c As Integer, nbli As Integer
' Supprimer les 2 colonnes de gauche
Columns("A:B").Delete Shift:=xlToLeft
nbli = WorksheetFunction.CountA(Columns("B:B"))
Columns("C:C").NumberFormat = "@"
For c = 2 To nbli
Cells(c, 3).Value = Left(Cells(c, 2), 11) & " " & Right(Cells(c, 2), 8)
Next c
' Supprimer la plage date à traiter et déplacer à gauche les éléments traités
Range("B2:B" & nbli).Delete Shift:=xlToLeft
' trier ascendant sur la date
Range("A1:B" & nbli).Sort Key1:=Range("B1"), Order1:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Bon week-end
Je vous propose la procédure suivante :
Sub Extrait_Trier()
Dim c As Integer, nbli As Integer
' Supprimer les 2 colonnes de gauche
Columns("A:B").Delete Shift:=xlToLeft
nbli = WorksheetFunction.CountA(Columns("B:B"))
Columns("C:C").NumberFormat = "@"
For c = 2 To nbli
Cells(c, 3).Value = Left(Cells(c, 2), 11) & " " & Right(Cells(c, 2), 8)
Next c
' Supprimer la plage date à traiter et déplacer à gauche les éléments traités
Range("B2:B" & nbli).Delete Shift:=xlToLeft
' trier ascendant sur la date
Range("A1:B" & nbli).Sort Key1:=Range("B1"), Order1:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Bon week-end
Bonjour Le Pingou,
Je te remercie pour tes conseils.
Désolé pour le retard, je n'étais pas là ce week-end.
Pour répondre à tes questions:
Il intervertit le jour et le mois uniquement quand j'exécute la macro. En réalisant chaque opération manuellement, le système n'intervit pas le jour et le mois.
Pour l'affichage de la date après avoir supprimer le "à ", le format est j/mm/aaaa h:mm, donc 7/07/2009 2:50:15.
Résultat de ta macro:
Elle fonctionne parfaitement. Par contre, quand je copie le résultat dans ma base de données, pour la colonne où il y a les dates, l'appui se fait à gauche au lieu de droite. Pourtant, le format reste le même (Personnalisée jj/mm/aaaa hh:mm:ss). Cela doit être dû au fait qu'après avoir utilisé ta macro dans le classeur transformation, le format est Texte. Donc, en copiant le résultat dans ma base de données Excel 2003, considère peut-être toujours cela comme du texte et non des dates, même si le format est Personnalisée jj/mm/aaaa hh:mm:ss.
Je te remercie pour tes conseils.
Désolé pour le retard, je n'étais pas là ce week-end.
Pour répondre à tes questions:
Il intervertit le jour et le mois uniquement quand j'exécute la macro. En réalisant chaque opération manuellement, le système n'intervit pas le jour et le mois.
Pour l'affichage de la date après avoir supprimer le "à ", le format est j/mm/aaaa h:mm, donc 7/07/2009 2:50:15.
Résultat de ta macro:
Elle fonctionne parfaitement. Par contre, quand je copie le résultat dans ma base de données, pour la colonne où il y a les dates, l'appui se fait à gauche au lieu de droite. Pourtant, le format reste le même (Personnalisée jj/mm/aaaa hh:mm:ss). Cela doit être dû au fait qu'après avoir utilisé ta macro dans le classeur transformation, le format est Texte. Donc, en copiant le résultat dans ma base de données Excel 2003, considère peut-être toujours cela comme du texte et non des dates, même si le format est Personnalisée jj/mm/aaaa hh:mm:ss.
Bonjour Le Pingou,
Après des vérifications, j'ai trouvé la cause du problème appui gauche au lieu d'appui droite, c'était à cause d'un espace en trop entre la date et l'heure: "11/07/2009 01:43:45" "devient "11/07/2009 01:43:45". Il faudra que je trouve comment intégrer cela à la macro pour éviter de devoir l'effectuer manuellement. Je chercherai prochainement.
Je te remercie pour ton aide.
Après des vérifications, j'ai trouvé la cause du problème appui gauche au lieu d'appui droite, c'était à cause d'un espace en trop entre la date et l'heure: "11/07/2009 01:43:45" "devient "11/07/2009 01:43:45". Il faudra que je trouve comment intégrer cela à la macro pour éviter de devoir l'effectuer manuellement. Je chercherai prochainement.
Je te remercie pour ton aide.
Bonjour Le Pingou,
La macro fonctionne parfaitement, je te remercie pour tes recherches, ton aide et tes conseils.
Je vais essayer de mettre le sujet en mode résolu mais comme je ne suis pas inscrit, je ne sais pas si j'y arriverai.
Donc, si le sujet n'était pas en mode résolu, un modérateur pourrait-il réaliser cette opération.
MERCI
La macro fonctionne parfaitement, je te remercie pour tes recherches, ton aide et tes conseils.
Je vais essayer de mettre le sujet en mode résolu mais comme je ne suis pas inscrit, je ne sais pas si j'y arriverai.
Donc, si le sujet n'était pas en mode résolu, un modérateur pourrait-il réaliser cette opération.
MERCI
Le Pingou
Messages postés
12242
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
16 mars 2025
1 458
15 juil. 2009 à 13:54
15 juil. 2009 à 13:54
Merci.