L'éternel problème des dates Userform VS Excell

Al capone

XLDnaute Junior
Bonjour à tous,

Depuis ce matin, mon tableau me fait des câprices. Dans un userform, je fais saisir la date au format jj/mm/aaaa :

Code:
Private Sub txtdar_Change()
 Select Case Len(txtdar.Text)
 Case 2, 5
 txtdar.Text = txtdar.Text & "/"
 Case 10
 If Not (IsDate(txtdar.Value)) Then
 MsgBox "Date incorrecte ! Entrez la date sous la forme jj/mm/aaaa": txtdar.Value = ""
 Else
 txthar.SetFocus
 End If
 End Select
 End Sub
Le check de la date est faite dès la saisie. Problème que j'ai est que malgré que la saisie est faite au format demandé, le contrôle se fait par rapport à un format Anglais mm/jj/aaaa. Donc çà va pas ......

Ensuite, lorsque je rapatrie ma date dans ma feuille excell :
Code:
ActiveSheet.Cells(numLigneVide, 9) = txtdar.Text
Il me l'écrit au format Anglais, même si visuellement dans le userform, il est saisit au format souhaité.

Existe-t-il un moyen de faire une déclaration générale pour tout le classeur et lui dire qu'il doit travailler avec le format régional, donc Français.
Car j'ai plusieurs formulaires avec un certains nombres de dates à saisir......

Merci pour votre aide
 

Al capone

XLDnaute Junior
Re : L'éternel problème des dates Userform VS Excell

Salut Pierrot93,

Bon ben me reste + qu'à adapter.... Merci..

Par contre concernant ce code :
Code:
Private Sub txtdar_Change()
  Select Case Len(txtdar.Text)
  Case 2, 5
  txtdar.Text = txtdar.Text & "/"
  Case 10
  If Not (IsDate(txtdar.Value)) Then
  MsgBox "Date incorrecte ! Entrez la date sous la forme jj/mm/aaaa": txtdar.Value = ""
  Else
  txthar.SetFocus
  End If
  End Select
  End Sub

Il me check celà au format anglais et pas au format Français, c'est à dire :

Si je tape : 05/13/2011 : il me l'accepte :mad: et normalement celà devrait être refusé . Car j'ai l'impression qu'il fait le check par rapport au format Anglais ....
 

Pierrot93

XLDnaute Barbatruc
Re : L'éternel problème des dates Userform VS Excell

Re,

tu peux tenter ce type de test :
Code:
If CByte(Mid(TextBox1, 4, 2)) > 12 Then MsgBox "saisie erronée..."

mais le mieux serait d'utiliser un "dtpicker"... A noter tu trouveras de nombreux post sur le forum traitant de ce sujet....
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal