Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Conversion format date

9 réponses
Avatar
ThierryP
Bonjour le forum,

Petit souci avec les formats de date....

Comment (en VBA) d=E9terminer quel est le syst=E8me utilis=E9 (anglo-saxon =
/
fran=E7ais ou =E9quivalent) et =E9galement ? Avec Ofice XP en fran=E7ais, j=
e
me sers de la date pour cr=E9er un nom de fichier comme ceci :

Nom_Fichier =3D Right(Range("Date_Rapport"), 4) &
Mid(Range("Date_Rapport"), 4, 2) & _
Left(Range("Date_Rapport"), 2) & "_" & Range("Nom")

et j'obtiens un nom de fichier comme ceci : 20110309_Toto

Avec Office 2007 en anglais, ma variable Nom_Fichier devient : 2011/23/
_Toto et le message d'erreur me renvoie :
Impossible de cr=E9er le fichier : Reports
\2011\23\nombre_al=E9atoire ???????

Je patauge un peu ! Si une =E2me charitable passe par l=E0, quelques
explications ne seraient pas de refus !!!
Merci d'avance

9 réponses

Avatar
DanielCo
Bonjour,
Essaie :
Range("Date_Rapport") = CDate(Range("Date_Rapport"))
Nom_Fichier = Right(Range("Date_Rapport"), 4) & _
Mid(Range("Date_Rapport"), 4, 2) & _
Left(Range("Date_Rapport"), 2) & "_" & Range("Nom")
Cordialement.
Daniel


Bonjour le forum,

Petit souci avec les formats de date....

Comment (en VBA) déterminer quel est le système utilisé (anglo-saxon /
français ou équivalent) et également ? Avec Ofice XP en français, je
me sers de la date pour créer un nom de fichier comme ceci :

Nom_Fichier = Right(Range("Date_Rapport"), 4) &
Mid(Range("Date_Rapport"), 4, 2) & _
Left(Range("Date_Rapport"), 2) & "_" & Range("Nom")

et j'obtiens un nom de fichier comme ceci : 20110309_Toto

Avec Office 2007 en anglais, ma variable Nom_Fichier devient : 2011/23/
_Toto et le message d'erreur me renvoie :
Impossible de créer le fichier : Reports
201123nombre_aléatoire ???????

Je patauge un peu ! Si une âme charitable passe par là, quelques
explications ne seraient pas de refus !!!
Merci d'avance
Avatar
ThierryP
Bonjour Daniel,

Malheureusement, aucun changement. CDate m'aide quand même à écrire
dans la cellule au format dd/mm/yyyy, ce qui est un progrès !
Il faut que je découpe ma date différemment suivant le système de
date......d'où ma nouvelle question !!

Comment puis-je récupérer l'info concernant le système de date
utilisé ? En espérant que la syntaxe soit la même entre Office XP,
2007 et 2010.......

Merci d'avance


On 9 mar, 13:10, DanielCo wrote:
Bonjour,
Essaie :
Range("Date_Rapport") = CDate(Range("Date_Rapport"))
Nom_Fichier = Right(Range("Date_Rapport"), 4) & _
Mid(Range("Date_Rapport"), 4, 2) & _
Left(Range("Date_Rapport"), 2) & "_" & Range("Nom")
Cordialement.
Daniel

> Bonjour le forum,

> Petit souci avec les formats de date....

> Comment (en VBA) d terminer quel est le syst me utilis (anglo-saxon /
> fran ais ou quivalent) et galement ? Avec Ofice XP en fran ais, je
> me sers de la date pour cr er un nom de fichier comme ceci :

> Nom_Fichier = Right(Range("Date_Rapport"), 4) &
> Mid(Range("Date_Rapport"), 4, 2) & _
>                 Left(Range("Date_Rapport"), 2) & "_" & Range("Nom")

> et j'obtiens un nom de fichier comme ceci : 20110309_Toto

> Avec Office 2007 en anglais, ma variable Nom_Fichier devient : 2011/23/
> _Toto et le message d'erreur me renvoie :
> Impossible de cr er le fichier : Reports
> 201123nombre_al atoire ???????

> Je patauge un peu ! Si une me charitable passe par l , quelques
> explications ne seraient pas de refus !!!
> Merci d'avance
Avatar
ThierryP
Bonjour,

Désolé si ce message arrive 2 fois, je ne vois pas ma réponse.......

CDate n'a rien changé, mais m'a aidé à écrire au format dd/mm/yyyy
dans la cellule. Je vais devoir découper différemment suivant le
système de date utilisé d'où :

Comment récupérer en VBA cette information ? LA syntaxe est-elle la
même entre Office XP, 2007 et 2010 ?

Merci d'avance


On 9 mar, 13:10, DanielCo wrote:
Bonjour,
Essaie :
Range("Date_Rapport") = CDate(Range("Date_Rapport"))
Nom_Fichier = Right(Range("Date_Rapport"), 4) & _
Mid(Range("Date_Rapport"), 4, 2) & _
Left(Range("Date_Rapport"), 2) & "_" & Range("Nom")
Cordialement.
Daniel

> Bonjour le forum,

> Petit souci avec les formats de date....

> Comment (en VBA) d terminer quel est le syst me utilis (anglo-saxon /
> fran ais ou quivalent) et galement ? Avec Ofice XP en fran ais, je
> me sers de la date pour cr er un nom de fichier comme ceci :

> Nom_Fichier = Right(Range("Date_Rapport"), 4) &
> Mid(Range("Date_Rapport"), 4, 2) & _
>                 Left(Range("Date_Rapport"), 2) & "_" & Range("Nom")

> et j'obtiens un nom de fichier comme ceci : 20110309_Toto

> Avec Office 2007 en anglais, ma variable Nom_Fichier devient : 2011/23/
> _Toto et le message d'erreur me renvoie :
> Impossible de cr er le fichier : Reports
> 201123nombre_al atoire ???????

> Je patauge un peu ! Si une me charitable passe par l , quelques
> explications ne seraient pas de refus !!!
> Merci d'avance
Avatar
Modeste
Bonsour®

petithory.thierry a écrit
CDate n'a rien changé, mais m'a aidé à écrire au format dd/mm/yyyy
dans la cellule. Je vais devoir découper différemment suivant le
système de date utilisé d'où :

Comment récupérer en VBA cette information ? LA syntaxe est-elle la
même entre Office XP, 2007 et 2010 ?



Range("Date_Rapport") = CDate(Range("Date_Rapport"))
Nom_Fichier = Format([date_rapport],"yyyymmdd")&"_"& Range("Nom")
Avatar
DanielCo
Select Case Application.International(xlDateOrder)
Case 0: MsgBox "mm/jj/aaaa"
Case 1: MsgBox "jj/mm/aaaa"
Case 2: MsgBox "mm/jj/aaaa"
End Select
Daniel


Bonjour Daniel,

Malheureusement, aucun changement. CDate m'aide quand même à écrire
dans la cellule au format dd/mm/yyyy, ce qui est un progrès !
Il faut que je découpe ma date différemment suivant le système de
date......d'où ma nouvelle question !!

Comment puis-je récupérer l'info concernant le système de date
utilisé ? En espérant que la syntaxe soit la même entre Office XP,
2007 et 2010.......

Merci d'avance
Avatar
DanielCo
Oups...
Select Case Application.International(xlDateOrder)
Case 0: MsgBox "mm/jj/aaaa"
Case 1: MsgBox "jj/mm/aaaa"
Case 2: MsgBox "aaaa/mm/jj"
End Select
Daniel


Select Case Application.International(xlDateOrder)
Case 0: MsgBox "mm/jj/aaaa"
Case 1: MsgBox "jj/mm/aaaa"
Case 2: MsgBox "mm/jj/aaaa"
End Select
Daniel


Bonjour Daniel,

Malheureusement, aucun changement. CDate m'aide quand même à écrire
dans la cellule au format dd/mm/yyyy, ce qui est un progrès !
Il faut que je découpe ma date différemment suivant le système de
date......d'où ma nouvelle question !!

Comment puis-je récupérer l'info concernant le système de date
utilisé ? En espérant que la syntaxe soit la même entre Office XP,
2007 et 2010.......

Merci d'avance
Avatar
michdenis
Bonjour,

Un nom de fichier ne peut pas contenir ce caractère : "/" et ce, indépendamment
du format date que tu utilises. Tu dois le remplacer par "-" au besoin.

La fonction de conversion Cdate() utilise TOUJOURS le format date "court" défini
dans le panneau de configuration de Windows. Pour être certain du format date
qu'affiche ta variable :

En supposant que la date dans la cellule "Date_Rapport" est une
date dont Excel reconnaît le format :

Dim MyVar As String

MyVar = Format(cdate(Range("Date_Rapport")),"YYYY-mm-dd") & "_Toto"

Et tu vas pouvoir enregistrer ton fichier en utilisant la variable MyVar

'Version précédente à Excel 2007
ThisWorkbook.SaveAs chemin & MyVar & ".xls", FileFormat:=xlExcel7
'Ou
'Pour Excel 2007 et 2010
ThisWorkbook.SaveAs chemin & MyVar & ".xlsx", FileFormat:=xlExcel8

Pour la version 2007 et 2010, tu dois adapter le xlsx ou xlsm selon que ton
classeur contient des macros ou pas.

MichD
--------------------------------------------
Avatar
ThierryP
Au final, Modeste gagne sur le fil !! Sa solution fonctionne pour ce
cas précis.

Mais ta réponse m'a fait découvrir une nouvelle fois l'étendue de mon
ignorance !! Je vais pouvoir gérer un peu mieux ces diférentes
versions :-)))

Merci à tous les deux.


On 9 mar, 18:21, DanielCo wrote:
Oups...
Select Case Application.International(xlDateOrder)
    Case 0: MsgBox "mm/jj/aaaa"
    Case 1: MsgBox "jj/mm/aaaa"
    Case 2: MsgBox "aaaa/mm/jj"
End Select
Daniel

> Select Case Application.International(xlDateOrder)
>     Case 0: MsgBox "mm/jj/aaaa"
>     Case 1: MsgBox "jj/mm/aaaa"
>     Case 2: MsgBox "mm/jj/aaaa"
> End Select
> Daniel

>> Bonjour Daniel,

>> Malheureusement, aucun changement. CDate m'aide quand m me crire
>> dans la cellule au format dd/mm/yyyy, ce qui est un progr s !
>> Il faut que je d coupe ma date diff remment suivant le syst me de
>> date......d'o ma nouvelle question !!

>> Comment puis-je r cup rer l'info concernant le syst me de date
>> utilis ? En esp rant que la syntaxe soit la m me entre Office XP,
>> 2007 et 2010.......

>> Merci d'avance
Avatar
ThierryP
Egalité avec Modeste....C'est la même réponse :-))))

Merci à tous d'être toujours présents et infatigables !!


On 9 mar, 18:52, "michdenis" wrote:
Bonjour,

Un nom de fichier ne peut pas contenir ce caract re : "/" et ce, ind pend amment
du format date que tu utilises. Tu dois le remplacer par "-" au besoin.

La fonction de conversion Cdate() utilise TOUJOURS le format date "court" d fini
dans le panneau de configuration de Windows. Pour tre certain du format d ate
qu'affiche ta variable :

En supposant que la date dans la cellule "Date_Rapport" est une
date dont Excel reconna t le format :

Dim MyVar As String

MyVar = Format(cdate(Range("Date_Rapport")),"YYYY-mm-dd") & "_Toto"

Et tu vas pouvoir enregistrer ton fichier en utilisant la variable MyVar

'Version pr c dente Excel 2007
ThisWorkbook.SaveAs chemin & MyVar & ".xls", FileFormat:=xlExcel7
'Ou
'Pour Excel 2007 et 2010
ThisWorkbook.SaveAs chemin & MyVar & ".xlsx", FileFormat:=xlExcel8

Pour la version 2007 et 2010, tu dois adapter le xlsx ou xlsm selon que t on
classeur contient des macros ou pas.

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