Problème de conversion de date

zephir94

XLDnaute Impliqué
Bonjour à tous,

J'ai un soucis pour convertir une date de la forme 11/03/2015 en mercredi 11 mars 2015
Sur certaines dates ça fonctionne mais sur d'autres non, j'ai une erreur d’exécution 9 l'indice n'appartient pas à la sélection

Voici ma programmation :
Code:
Private Sub TextBox1_Change()
 
TextBox1.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
    Valeur = Len(TextBox1)
    If Valeur = 2 Or Valeur = 5 Then
    TextBox1 = TextBox1 & "/"
    
End If
TextBox1.Text = UCase(TextBox1.Text)

End Sub

Private Sub CommandButton1_Click()
j = Array("", "LUNDI", "MARDI", "MERCREDI", "JEUDI", "VENDREDI", "SAMEDI", "DIMANCHE")
m = Array("", "JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE")
TextBox2 = TextBox1.Value
TextBox2 = j(Day(TextBox1.Value)) & " " & Day(TextBox1.Value) & " " & m(Month(TextBox1.Value)) & " " & Year(TextBox1.Value)

End Sub

J'ai fais un petit fichier exemple
Merci par avance pour vos aides
 

Pièces jointes

  • testdate.xls
    35 KB · Affichages: 27
  • testdate.xls
    35 KB · Affichages: 24

zephir94

XLDnaute Impliqué
Re : Problème de conversion de date

Bonjour Pierrejean,

Merci pour ta réponse,

J'ai modifié mon code :

Code:
TextBox2 = CDate(TextBox1)
TextBox2 = j(Day(TextBox1.Value)) & " " & Day(TextBox1.Value) & " " & m(Month(TextBox1.Value)) & " " & Year(TextBox1.Value)

j'ai 11/03/2015 = 11/03/2015 mais j'ai la même erreur et je n'arrive pas à obtenir mercredi 11 mars 2015
 
Dernière édition:

ralph45

XLDnaute Impliqué
Re : Problème de conversion de date

Bonjour zephir94,

Essaie ceci :

PHP:
Private Sub CommandButton1_Click()
TextBox2 = UCase(Format(CDate(TextBox1), "dddd dd mmmm yyyy"))
End Sub

Edit : Oups, grillé par Mister PJ (Hello !) J'avoue avoir galéré... :eek:

A+
 
Dernière édition:

zephir94

XLDnaute Impliqué
Re : Problème de conversion de date

Merci à vous deux,

La solution de ralph45 est impeccable, sauf que je ne dois pas mettre d'accents dans la conversion !
11/08/2015 je dois obtenir : MARDI 11 AOUT 2015 et non MARDI 11 AOÛT 2015
c'est pour cette raison que j'avais défini les variables j et m
Code:
Private Sub CommandButton1_Click()
j = Array("", "LUNDI", "MARDI", "MERCREDI", "JEUDI", "VENDREDI", "SAMEDI", "DIMANCHE")
m = Array("", "JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE")
'TextBox2 = TextBox1.Value
'TextBox2 = j(Day(TextBox1.Value)) & " " & Day(TextBox1.Value) & " " & m(Month(TextBox1.Value)) & " " & Year(TextBox1.Value)

TextBox2 = UCase(Format(CDate(TextBox1), "dddd dd mmmm yyyy"))
End Sub

Un grand merci, mais d'ou vient mon erreur dans mon code ?
 
Dernière édition:

ralph45

XLDnaute Impliqué
Re : Problème de conversion de date

Merci à vous deux,
La solution de ralph45 est impeccable, sauf que je ne dois pas mettre d'accents dans la conversion !
11/08/2015 je dois obtenir : MARDI 11 AOUT 2015 et non MARDI 11 AOÛT 2015
c'est pour cette raison que j'avais défini les variables...

Heu, je ne suis pas le seul à l'avoir proposée... ;) et encore moins le premier !!
--> Pour ces satanés accents, ajoute donc la fonction SansAccent dans le code...

PHP:
Function SansAccent(texte)
'Définition des variables
    avec = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç_"
    sans = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc "
    tmp = texte
'Boucle de traitement
    For i = 1 To Len(tmp)
        pot = InStr(avec, Mid(tmp, i, 1))
        If pot > 0 Then Mid(tmp, i, 1) = Mid(sans, pot, 1)
    Next i
    If tmp = 0 Then tmp = ""
    Sansaccent = tmp
End Function

Ce qui fait donc :

PHP:
Private Sub CommandButton1_Click()
TextBox2 = SansAccent(UCase(Format(CDate(TextBox1), "dddd dd mmmm yyyy")))
End Sub

A+
 
Dernière édition:

zephir94

XLDnaute Impliqué
Re : Problème de conversion de date

Merci ralph45 et les autres,

j'ai testé avec ton code et la fonction, ça marche parfaitement un grand merci à toi :p
mais vois tu ou j'ai une erreur dans mon code ?
 
Dernière édition:

ralph45

XLDnaute Impliqué
Re : Problème de conversion de date

Re,

A mon humble avis (mes connaissances VBA se dérouillent, mais ne sont pas encore tip-top), cela doit se trouver ici TextBox2 = j(Day(TextBox1.Value)) :

--> OK, tu as déclaré en Array "LUNDI, MARDI, ..." (Texte) pour j, mais aucune table de correspondance ne fait le lien que LUNDI = jour 1, MARDI = jour 2, etc.

A+
 

zephir94

XLDnaute Impliqué
Re : Problème de conversion de date

j'ai trouvé !

Code:
d1 = TextBox1
On Error Resume Next
If DateValue(d1) = DateSerial(CInt(Right(d1, 4)), CInt(Mid(d1, 4, 2)), CInt(Left(d1, 2))) Then
End If
If Err.Number <> 0 Then
    Err.Clear
    MsgBox "date incorrecte"
Exit Sub
End If
 

Discussions similaires

Réponses
12
Affichages
441

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16