Encore un problème de dates....

4 réponses
Avatar
Al
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

4 réponses

Avatar
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
Avatar
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
'------------------------------------


MichD
--------------------------------------------------------------
Avatar
Al
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
Avatar
MichD
Voir la question que je viens de poser..."Les plaisirs de la commande "Sendkeys"


MichD
--------------------------------------------------------------