OVH Cloud OVH Cloud

Format() et langue

5 réponses
Avatar
John Fuss
Bonjour,

avec la fonction Format(date, "mmmm") j'obtiens le libellé du mois en langue
française, comment obtenir le libellé anglais ? ou allemand ?

Merci d'avance.

John

5 réponses

Avatar
Laurent Longre

avec la fonction Format(date, "mmmm") j'obtiens le libellé du mois en langue
française, comment obtenir le libellé anglais ? ou allemand ?


Pour l'anglais :

Function D_ENG(D As Long, Optional Format As String) As String
' L. Longre MPFE
If Format = "" Then Format = "dd mmmm yyyy"
D_ENG = Evaluate("TEXT(" & D & ",""" & Format & """)")
End Function

Sub Test()
MsgBox D_ENG(CDate("22/01/1968"), "mmmm")
End Sub

Pour l'allemand, il faudrait faire une fonction dédiée de traduction. Si tu veux
uniquement au format "mmmm" :

Function D_DEUTSCH(D As Long) As String
D_DEUTSCH = Array("Januar", "Februar", "März", "April", "Mai", _
"Juni", "Juli", "August", "September", "Oktober", _
"November", "Dezember")(Month(D) - 1)
End Function

Sub Test()
MsgBox D_DEUTSCH(CDate("22/01/1968"))
End Sub

Cordialement,

Laurent

Avatar
Laurent Longre
Re !


avec la fonction Format(date, "mmmm") j'obtiens le libellé du mois en
langue
française, comment obtenir le libellé anglais ? ou allemand ?



J'ai failli oublier les API ! ;-)

Un exemple dans la procédure Test ci-dessous (si tu ne veux que le nom du mois,
utilise le format "MMMM").

Cordialement,

Laurent

'==========================================
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type

Private Declare Function GetDateFormat Lib "Kernel32" Alias "GetDateFormatA" _
(ByVal Locale As Long, ByVal dwFlags As Long, lpDate As SYSTEMTIME, _
ByVal lpFormat As String, ByVal lpDateStr As String, _
ByVal cchDate As Long) As Long

' * Paramètre "Langue" *

Const LangDanois = &H406
Const LangNéerlandais = &H413
Const LangAnglais = &H409
Const LangFrançais = &H40C
Const LangAllemand = &H407
Const LangIntalien = &H410
Const LangNorvégien = &H414
Const LangPortugais = &H816
Const LangEspagnol = &HC0A
Const LangSuédois = &H41D

' * Formats de date *

' d : numéro du jour
' dd : numéro jour précédé d'un 0 si < 10
' ddd : nom abrégé du jour sur 3 lettres ("lun")
' dddd : nom complet du jour ("lundi")
' M : numéro du mois
' MM : numéro du mois précédé de 0 si < 10
' MMM : nom abrégé du mois sur 3 lettres ("jan")
' MMMM : nom complet du mois ("janvier")
' y : 2 derniers chiffres de l'année (ou 1 chiffre si < 10)
' yy : 2 derniers chiffres de l'année (avec un 0 si < 10)
' yyyy : année sur 4 chiffres

Private Function IntlDate(D As Date, F As String, _
Optional Langue As Long) As String

' L. Longre MPFE
Dim cchDate As Long

Dim APIDate As SYSTEMTIME
With APIDate
.wYear = Year(D)
.wMonth = Month(D)
.wDay = Day(D)
End With
cchDate = GetDateFormat(0, 0, APIDate, F, vbNullString, 0)
IntlDate = Space(cchDate)
GetDateFormat Langue, 0, APIDate, F, IntlDate, cchDate

End Function

Sub Test()

MsgBox IntlDate(CDate("22/1/1968"), "dddd d MMMM yyyy", LangAllemand)

End Sub

'===========================================


Avatar
GD
Bonsour® Laurent Longre
sous XP il est possible d'utiliser les codes LocalID

voir infos là :
http://www.microsoft.com/globaldev/reference/winxp/xp-lcid.mspx

exemple d'utilisation :
Sub Macro1()
Range("A1:A8").Value = Now
[A1].NumberFormat = "[$-407]dddd, mmmm dd, yyyy"
[B1] = "Allemand"
[A2].NumberFormat = "[$-409]dddd, mmmm dd, yyyy"
[B2] = "Anglais"
[A3].NumberFormat = "[$-401]dddd, mmmm dd, yyyy"
[B3] = "Arabic"
[A4].NumberFormat = "[$-406]dddd, mmmm dd, yyyy"
[B4] = "Danois"
[A5].NumberFormat = "[$-410]dddd, mmmm dd, yyyy"
[B5] = "Italien"
[A6].NumberFormat = "[$-416]dddd, mmmm dd, yyyy"
[B6] = "Portugais"
[A7].NumberFormat = "[$-40a]dddd, mmmm dd, yyyy"
[B7] = "Espagnol"
[A8].NumberFormat = "[$-404]dddd, mmmm dd, yyyy"
[B8] = "Taïwan"
End Sub

;o)))
@+

wrote:

avec la fonction Format(date, "mmmm") j'obtiens le libellé du mois
en langue française, comment obtenir le libellé anglais ? ou
allemand ?


Pour l'anglais :

Function D_ENG(D As Long, Optional Format As String) As String
' L. Longre MPFE
If Format = "" Then Format = "dd mmmm yyyy"
D_ENG = Evaluate("TEXT(" & D & ",""" & Format & """)")
End Function

Sub Test()
MsgBox D_ENG(CDate("22/01/1968"), "mmmm")
End Sub

Pour l'allemand, il faudrait faire une fonction dédiée de traduction.
Si tu veux uniquement au format "mmmm" :

Function D_DEUTSCH(D As Long) As String
D_DEUTSCH = Array("Januar", "Februar", "März", "April", "Mai", _
"Juni", "Juli", "August", "September", "Oktober", _
"November", "Dezember")(Month(D) - 1)
End Function

Sub Test()
MsgBox D_DEUTSCH(CDate("22/01/1968"))
End Sub

Cordialement,

Laurent



Avatar
Laurent Longre
Bonsour® Laurent Longre
sous XP il est possible d'utiliser les codes LocalID


Merci GD ! :-)

En fait je suis resté à Excel 3.

(ménon je blague ! ;-)

Laurent

Avatar
John Fuss
Merci à vous 2, c'est parfait (comme d'habitude me risquerais-je)

John

"Laurent Longre" a écrit dans le message de
news:
Bonsour® Laurent Longre
sous XP il est possible d'utiliser les codes LocalID


Merci GD ! :-)

En fait je suis resté à Excel 3.

(ménon je blague ! ;-)

Laurent