Bonjour,
J'utilise un fichier excel pour un bon de commande.
PS, je ne suis pas programmeur
Celui-ci génère la date sous un format spécifique qqe soit la forme saisie.
ex : si je tape 221008, 22/10/08, 22102008 ou 22/10/2008 il va modifier la cellule et inscrire 22/10/2008
Le code est :
Private Sub Worksheet_Change(ByVal zz As Range)
Dim maDate As Date
Dim test As Variant
If Range("date_voulue") = zz And zz <> "" Then
l = Len(zz)
If l = 6 Then
X = Format(Range("date_voulue"), "000000")
Application.EnableEvents = False
an = 2000 + Format(Right(X, 2), "00")
mois = Format(Mid(X, 3, 2), "00")
jour = Format(Left(X, 2), "00")
zz = jour & "/" & mois & "/" & an
'zz = DateSerial(an, mois, jour)
Application.EnableEvents = True
ElseIf l = 8 Then
X = Format(Range("date_voulue"), "00000000")
Application.EnableEvents = False
an = Format(Right(X, 4), "00")
mois = Format(Mid(X, 3, 2), "00")
jour = Format(Left(X, 2), "00")
zz = jour & "/" & mois & "/" & an
Application.EnableEvents = True
Je dois convertir ce code pour une version canadienne pour qu'il génère une date sous le format 2008-10-22
J'ai modifié le "/" par des "-" et "Left" par "right"
Pas de pb quand je saisis 081022 ou 2008-10-22
Mais quand je saisis 08-10-22 il me génère "04-04-42"
et si je saisis 20081022 il me génère 2008-08-22
ET là je bloque
Voici où j'en étais de ma pseudo programmation
Private Sub Worksheet_Change(ByVal zz As Range)
Dim maDate As Date
Dim test As Variant
If Range("date_voulue") = zz And zz <> "" Then
l = Len(zz)
If l = 6 Then
X = Format(Range("date_voulue"), "000000")
Application.EnableEvents = False
an = 2000 + Format(Left(X, 2), "00")
mois = Format(Mid(X, 3, 2), "00")
jour = Format(Right(X, 2), "00")
zz = an & "-" & mois & "-" & jour
'zz = DateSerial(an, mois, jour)
Application.EnableEvents = True
ElseIf l = 8 Then
X = Format(Range("date_voulue"), "00000000")
Application.EnableEvents = False
an = Format(Left(X, 4), "00")
mois = Format(Mid(X, 3, 2), "00")
jour = Format(Right(X, 2), "00")
zz = an & "-" & mois & "-" & jour
Application.EnableEvents = True
End If