Je récupère un fichier .slk que j'ouvre dans Excel et qui contient des
cellules datées du style,
21-Sep
13-Aoû
28-Jul
11-Jul
Quand je convertis dans une macro ces cellules en date, de cette manière,
Cells(NumLig, NumCol).NumberFormat = "dd/mm/yy",
Le 28-Jul est converti en 28/07/12 mais
Le 11-Jul est converti en 07/11/12
le mois et le jour sont inversés..... (idem pour les autres mois...)
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
isabelle
bonjour AI,
il faudrait remplacer tous les "Jul" par "juil" en début de macro ainsi que les "Jun" par "juin"
isabelle
Le 2013-01-05 09:11, Al a écrit :
Bonjour à tous,
Je récupère un fichier .slk que j'ouvre dans Excel et qui contient des cellules datées du style, 21-Sep 13-Aoû 28-Jul 11-Jul Quand je convertis dans une macro ces cellules en date, de cette manière, Cells(NumLig, NumCol).NumberFormat = "dd/mm/yy", Le 28-Jul est converti en 28/07/12 mais Le 11-Jul est converti en 07/11/12 le mois et le jour sont inversés..... (idem pour les autres mois...)
Comment faire pour résoudre ce problème ?
Merci pour vos réponses à tous... Al
bonjour AI,
il faudrait remplacer tous les "Jul" par "juil" en début de macro
ainsi que les "Jun" par "juin"
isabelle
Le 2013-01-05 09:11, Al a écrit :
Bonjour à tous,
Je récupère un fichier .slk que j'ouvre dans Excel et qui contient des
cellules datées du style,
21-Sep
13-Aoû
28-Jul
11-Jul
Quand je convertis dans une macro ces cellules en date, de cette
manière, Cells(NumLig, NumCol).NumberFormat = "dd/mm/yy",
Le 28-Jul est converti en 28/07/12 mais
Le 11-Jul est converti en 07/11/12
le mois et le jour sont inversés..... (idem pour les autres mois...)
il faudrait remplacer tous les "Jul" par "juil" en début de macro ainsi que les "Jun" par "juin"
isabelle
Le 2013-01-05 09:11, Al a écrit :
Bonjour à tous,
Je récupère un fichier .slk que j'ouvre dans Excel et qui contient des cellules datées du style, 21-Sep 13-Aoû 28-Jul 11-Jul Quand je convertis dans une macro ces cellules en date, de cette manière, Cells(NumLig, NumCol).NumberFormat = "dd/mm/yy", Le 28-Jul est converti en 28/07/12 mais Le 11-Jul est converti en 07/11/12 le mois et le jour sont inversés..... (idem pour les autres mois...)
Comment faire pour résoudre ce problème ?
Merci pour vos réponses à tous... Al
MichD
Bonjour,
Excel interprète la colonne de ces dates comme étant du texte et non comme des dates reconnues par Excel.
Lorsque tu récupères ces dates dans un environnement VBA, Excel interprète des données (par automatisme) comme des dates, mais au format américain (mois/jour/année) par défaut. Certaines de ces dates contenues dans les cellules ne peuvent pas être adapté au format américain comme le 21-sept puisqu'il n'y a pas 21 mois (lorsqu'Excel essaie de transformer la date au format américain) alors il interprète cette date en utilisant un des formats de date définie dans le panneau de configuration et il voit si la donnée peut-être interprétée comme une date. Résultat : La transformation affiche des dates à l'américaine et d'autres selon le format date défini dans le panneau de configuration.
Simplement, tu places dans la cellule de ton choix le chiffre 1, tu copies ce chiffre dans le presse-papier, sélectionne ta plage de date et tu fais un collage spécial - Valeur seulement + opération : Multiplication. Voilà.
Si tu veux le faire en VBA, tu dois utiliser un truc de ce genre : J'ai supposé que les dates étaient en B1:Bx de la feuil1
À toi d'adapter le nom de la feuille et la plage de cellules concernées.
La procédure utilise la commande "SendKeys". Dans mon exemple, la commande a été testée pour les versions Excel 97 à 2003 et la version 2013. Reste à voir si elle est la même pour les versions 2007 et 2010.
'------------------------------------ Sub Tester_Excel_2003_Français() Dim Gestion_Erreur As String On Error GoTo Gestion_Erreur 'Tu adaptes le nom de la feuille 'Application.ScreenUpdating = False With Worksheets("Feuil1") .Select 'Tu places 1 dans une cellule de ton choix .Range("H1") = 1 With .Range("B1:B" & .Range("B65536").End(xlUp).Row) .NumberFormat = "DD/MM/YY" .Select End With .Range("h1").Copy 'Séquence des commandes que tu ferais 'si tu utilisais les lettres du menu pour 'effectuer le collage special If Val(Application.Version) < 12 Then DoEvents SendKeys "%egvm" & "~" Else DoEvents SendKeys "%LVG" SendKeys "{DOWN 2}" SendKeys "{TAB}" SendKeys "{DOWN 3}" & "~" End If DoEvents .Range("H1") = "" .Range("D1").Select End With Application.ScreenUpdating = True Application.CutCopyMode = False Exit Sub Gestion_Erreur: MsgBox Err.Number & ", " & Err.Description End Sub '------------------------------------
Excel interprète la colonne de ces dates comme étant du texte
et non comme des dates reconnues par Excel.
Lorsque tu récupères ces dates dans un environnement VBA,
Excel interprète des données (par automatisme) comme des
dates, mais au format américain (mois/jour/année) par défaut.
Certaines de ces dates contenues dans les cellules ne peuvent
pas être adapté au format américain comme le 21-sept puisqu'il
n'y a pas 21 mois (lorsqu'Excel essaie de transformer la date au
format américain) alors il interprète cette date en utilisant un
des formats de date définie dans le panneau de configuration et
il voit si la donnée peut-être interprétée comme une date.
Résultat : La transformation affiche des dates à l'américaine et
d'autres selon le format date défini dans le panneau de configuration.
Simplement, tu places dans la cellule de ton choix le chiffre 1, tu copies
ce chiffre dans le presse-papier, sélectionne ta plage de date et tu fais
un collage spécial - Valeur seulement + opération : Multiplication.
Voilà.
Si tu veux le faire en VBA, tu dois utiliser un truc de ce genre :
J'ai supposé que les dates étaient en B1:Bx de la feuil1
À toi d'adapter le nom de la feuille et la plage de cellules concernées.
La procédure utilise la commande "SendKeys". Dans mon exemple,
la commande a été testée pour les versions Excel 97 à 2003
et la version 2013. Reste à voir si elle est la même pour les versions
2007 et 2010.
'------------------------------------
Sub Tester_Excel_2003_Français()
Dim Gestion_Erreur As String
On Error GoTo Gestion_Erreur
'Tu adaptes le nom de la feuille
'Application.ScreenUpdating = False
With Worksheets("Feuil1")
.Select
'Tu places 1 dans une cellule de ton choix
.Range("H1") = 1
With .Range("B1:B" & .Range("B65536").End(xlUp).Row)
.NumberFormat = "DD/MM/YY"
.Select
End With
.Range("h1").Copy
'Séquence des commandes que tu ferais
'si tu utilisais les lettres du menu pour
'effectuer le collage special
If Val(Application.Version) < 12 Then
DoEvents
SendKeys "%egvm" & "~"
Else
DoEvents
SendKeys "%LVG"
SendKeys "{DOWN 2}"
SendKeys "{TAB}"
SendKeys "{DOWN 3}" & "~"
End If
DoEvents
.Range("H1") = ""
.Range("D1").Select
End With
Application.ScreenUpdating = True
Application.CutCopyMode = False
Exit Sub
Gestion_Erreur:
MsgBox Err.Number & ", " & Err.Description
End Sub
'------------------------------------
Excel interprète la colonne de ces dates comme étant du texte et non comme des dates reconnues par Excel.
Lorsque tu récupères ces dates dans un environnement VBA, Excel interprète des données (par automatisme) comme des dates, mais au format américain (mois/jour/année) par défaut. Certaines de ces dates contenues dans les cellules ne peuvent pas être adapté au format américain comme le 21-sept puisqu'il n'y a pas 21 mois (lorsqu'Excel essaie de transformer la date au format américain) alors il interprète cette date en utilisant un des formats de date définie dans le panneau de configuration et il voit si la donnée peut-être interprétée comme une date. Résultat : La transformation affiche des dates à l'américaine et d'autres selon le format date défini dans le panneau de configuration.
Simplement, tu places dans la cellule de ton choix le chiffre 1, tu copies ce chiffre dans le presse-papier, sélectionne ta plage de date et tu fais un collage spécial - Valeur seulement + opération : Multiplication. Voilà.
Si tu veux le faire en VBA, tu dois utiliser un truc de ce genre : J'ai supposé que les dates étaient en B1:Bx de la feuil1
À toi d'adapter le nom de la feuille et la plage de cellules concernées.
La procédure utilise la commande "SendKeys". Dans mon exemple, la commande a été testée pour les versions Excel 97 à 2003 et la version 2013. Reste à voir si elle est la même pour les versions 2007 et 2010.
'------------------------------------ Sub Tester_Excel_2003_Français() Dim Gestion_Erreur As String On Error GoTo Gestion_Erreur 'Tu adaptes le nom de la feuille 'Application.ScreenUpdating = False With Worksheets("Feuil1") .Select 'Tu places 1 dans une cellule de ton choix .Range("H1") = 1 With .Range("B1:B" & .Range("B65536").End(xlUp).Row) .NumberFormat = "DD/MM/YY" .Select End With .Range("h1").Copy 'Séquence des commandes que tu ferais 'si tu utilisais les lettres du menu pour 'effectuer le collage special If Val(Application.Version) < 12 Then DoEvents SendKeys "%egvm" & "~" Else DoEvents SendKeys "%LVG" SendKeys "{DOWN 2}" SendKeys "{TAB}" SendKeys "{DOWN 3}" & "~" End If DoEvents .Range("H1") = "" .Range("D1").Select End With Application.ScreenUpdating = True Application.CutCopyMode = False Exit Sub Gestion_Erreur: MsgBox Err.Number & ", " & Err.Description End Sub '------------------------------------
Merci pour vos réponses, je vais tester de suite....
"Al" a écrit dans le message de news:50e8349b$0$1949$
Bonjour à tous,
Je récupère un fichier .slk que j'ouvre dans Excel et qui contient des cellules datées du style, 21-Sep 13-Aoû 28-Jul 11-Jul Quand je convertis dans une macro ces cellules en date, de cette manière, Cells(NumLig, NumCol).NumberFormat = "dd/mm/yy", Le 28-Jul est converti en 28/07/12 mais Le 11-Jul est converti en 07/11/12 le mois et le jour sont inversés..... (idem pour les autres mois...)
Comment faire pour résoudre ce problème ?
Merci pour vos réponses à tous... Al
Merci pour vos réponses, je vais tester de suite....
"Al" <al@wanadoo.fr> a écrit dans le message de
news:50e8349b$0$1949$426a74cc@news.free.fr...
Bonjour à tous,
Je récupère un fichier .slk que j'ouvre dans Excel et qui contient des
cellules datées du style,
21-Sep
13-Aoû
28-Jul
11-Jul
Quand je convertis dans une macro ces cellules en date, de cette manière,
Cells(NumLig, NumCol).NumberFormat = "dd/mm/yy",
Le 28-Jul est converti en 28/07/12 mais
Le 11-Jul est converti en 07/11/12
le mois et le jour sont inversés..... (idem pour les autres mois...)
Merci pour vos réponses, je vais tester de suite....
"Al" a écrit dans le message de news:50e8349b$0$1949$
Bonjour à tous,
Je récupère un fichier .slk que j'ouvre dans Excel et qui contient des cellules datées du style, 21-Sep 13-Aoû 28-Jul 11-Jul Quand je convertis dans une macro ces cellules en date, de cette manière, Cells(NumLig, NumCol).NumberFormat = "dd/mm/yy", Le 28-Jul est converti en 28/07/12 mais Le 11-Jul est converti en 07/11/12 le mois et le jour sont inversés..... (idem pour les autres mois...)
Comment faire pour résoudre ce problème ?
Merci pour vos réponses à tous... Al
MichD
Voir la question que je viens de poser..."Les plaisirs de la commande "Sendkeys"