Pb saisi format de Date...

CyberNeo99

XLDnaute Occasionnel
Bonjour à tous,

Je sais que le sujet a déjà été abordé et que je reviens là dessus mais bon peut être que ce que je vais ajoté sera nouveau car j'ai fais ma recherche et je n'ai rien trouvé.

J'ai une cellule où les gens y insère une date. Je voudrais que le format soit toujours correct car le Pb vient du fait du paramètre régional du Panneau de configuration car j'ai beau mettre le format de la cellule dans le format que je veux, le Pb vient du fait de la personne qui saisi la date. Si je mets par exemple le format généralement utiliser où il faut y entrer la jour, le mois et l'année, de mon côté dans les paramètres j'ai le format français dans le même ordre mais si la personne qui saisi la date a le format le mois, le jour et l'année dans ces paramètres et bien le format au Output n'est pas comme je le veux.... OK j'ai vu une macro qui contournais sensiblement le Pb en faisant un test mais prenons par exemple 2 Septembre 2010, la date d'ajourd'hui et bien en inversant le mois et le jour la date est toujours une date plausible alors à mon avis il n'existe aucun moyen de contourner ça. Il me faudrait savoir dans quel format dans le Panneau de configuration la date est mis et ainsi indiquer à la personne qui saisi dans quel format, quel ordre elle doit entrer la date, de quel façon soit le mois en premier ou le jour...

Ce que j'aimerais avoir est un code VB qui vérifie le format des options régionales et selon le format faire apparaître une boîte de dialogue qui informerait l'usager du format à saisir.



Merci à l'avance

Neo ;)
 
Dernière édition:

CyberNeo99

XLDnaute Occasionnel
Re : Pb saisi format de Date...

Bonjour phlaurent55,

Merci pour une réponse aussi rapide.

Que veux-tu dire par Dtpicker ???

Je suis un peux dans le brouillard car je ne suis pas programmeur.

Ce qui serait génial serait d'avoir un code qui questionne Windows pour aller chercher l'information pour connaître dans quel configuration est l'option régional soit Anglais(Canada), Anglais(États-Unis), Français(Canada), Français(France) et ainsi en connaissant ce paramètres dans ton ficheir excel tu lui fait apparaître dans une cellule le format dont l'usager doit saisir selon ce que l'on a récupéré comme information dans l'option régional du Panneau de Configuration.

Pour cette étape je suis larguer car je ne programme pas, je pense à des idées mais sont-elles réalisables, aucune idée. Je sais qu'en informatique beaucoup de chose sont possibles.

Merci à l'avance

Neo :rolleyes:
 

CyberNeo99

XLDnaute Occasionnel
Re : Pb saisi format de Date...

Bonjour,

C'est encore moi. J'ai pensé à une autre possibilité de faire appraître un calendrier lorsqu'on veut saisir dans la cellule où lon veut mettre une date et ainsi assurément le problème du format serait régler...Si un code peut être créer pour ainsi faire apparaître dans une cellule le format dans lequel doit être aisi la date par la personne, ça serait encore mieux mais bon parfois il faut savoir être flexible pour ainsi trouver une solution.

Merci encore

Neo :cool:
 

CyberNeo99

XLDnaute Occasionnel
Re : Pb saisi format de Date...

Bonjour,

phlaurent merci pour l'info c'est pas mal ce calendrier, par contre je me pose comme question le dtpicker est-ce une application que l'on installer sur son ordinateur car si c'est le cas mon Pb n'est pas résolu car cette application doit être installer sur l'ordinateur de la personne qui saisira la date....

Merci encore

Neo :D
 

skoobi

XLDnaute Barbatruc
Re : Pb saisi format de Date...

Bonjour tout le monde,
Ce que j'aimerais avoir est un code VB qui vérifie le format des options régionales et selon le format faire apparaître une boîte de dialogue qui informerait l'usager du format à saisir.

Si tu ne veux pas installer DTPicker ni mDFXlCalendar, voici un code qui détecte le format de date système, via les API, à mettre dans un module.
Il faut executer la macro "WinformatDate".

Code:
'Ces déclarations API et la fonction suivante permettent de connaître les paramètres régionaux de windows
'dont le séparateur décimal entre autre
 
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal locale As Long, _
    ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
Private Const LOCALE_IDATE = &H21          'format de date courte : 0 = M-J-A, 1 = J-M-A, 2 = A-M-J
Private Const LOCALE_ILDATE = &H22         'format de date longue
Private Const LOCALE_SCOUNTRY = &H6        'pays en toutes lettres
Private Const LOCALE_SNATIVELANGNAME = &H4 'langue, en toutes lettres
Private Const LOCALE_STHOUSAND = &HF       'séparateur des milliers
Private Const LOCALE_SDECIMAL = &HE        'séparateur décimal
 
Public Function ParametreRegional(parametre As Long) As String
Dim lngResultat As Long
Dim buffer As String
Dim pos As Integer
Dim locale As Long
'récupère l'identifiant de l'information locale de type utilisateur
locale = GetUserDefaultLCID()
'renvoie le nombre de caractères nécessaire pour recevoir la valeur du paramètre demandé
lngResultat = GetLocaleInfo(locale, parametre, buffer, 0)
buffer = String(lngResultat, 0)
GetLocaleInfo locale, parametre, buffer, lngResultat
pos = InStr(buffer, Chr(0))
If pos > 0 Then ParametreRegional = Left(buffer, pos - 1)
End Function
 
Sub WinformatDate()
'0 = M-J-A, 1 = J-M-A, 2 = A-M-J
MsgBox ParametreRegional(LOCALE_IDATE) & " (0 = M-J-A, 1 = J-M-A, 2 = A-M-J)"
End Sub
Bon après-midi à tous.
 
Dernière édition:

CyberNeo99

XLDnaute Occasionnel
Re : Pb saisi format de Date...

Bonjour skoobi,

C'est génial ce code, je vais pouvoir faire afficher un message selon le paramètres de Windows. Il me suffit de modifier la boîte message pour faire appraître exactement ce que je veux et le tour est joué je dirais.

Merci encore

Neo ;)
 

CyberNeo99

XLDnaute Occasionnel
Re : Pb saisi format de Date...

Bonjour skoobi,

Ton code fonctionne très bien.

Je n'aurais qu'une petite requette à faire, que ce soit toi ou quelqu'un d'autre à partir du moment que j'ai le code..... ;) . J'aimerais qu'une fois que lon connais le paramètres linguistique de Windows au lieu de faire apparaître une boîte de dialogue, j'aimerais faire apparaître dans une cellule du fichier le format que la personne doit saisir. Disons dans la feuil1 dans la cellule A1. Je n'aurai qu'à mettre le bon nom et la bonne cellule, l'important est le code. Et je vais mettre cette macro dans ThisWorkbook pour que la macro s'exécute à l'ouverture du fichier. J'imagine bien que dans le code il y aura un test du genre

If x=0
Then (mm-dd-yy,mm-jj-aa)
Else If x=1
Then (jj-mm-aa,dd-mm-yy)
Else If x=2
Then (aa-mm-jj,yy-mm-dd)
Else

EndIf

x étant une variable car j'imagine qu'il faut mettre une variable. J'ai mis le résultat dans le s2 langues soit Fr et Ang.


ou alors on peut dire

If ParametreRegional = 0
Then (mm-dd-yy,mm-jj-aa)
Else If ParametreRegional = 1
Then (jj-mm-aa,dd-mm-yy)
Else If ParametreRegional = 2
Then (aa-mm-jj,yy-mm-dd)
Else
EndIf


Merci à l'avance

Neo :D
 
Dernière édition:

CyberNeo99

XLDnaute Occasionnel
Re : Pb saisi format de Date...

Bonjour skoobi,

Encore moi.

J'ai une question pour ton code car je le regarde et je vois qu'il y a

'format de date courte : 0 = M-J-A, 1 = J-M-A, 2 = A-M-J
Private Const LOCALE_IDATE = &H21

et qu'il y a

'format de date longue
Private Const LOCALE_ILDATE = &H22

Ce qui veut dire....

court c'est M-J-A et long c'est le mois écrit en lettre ???

Merci pour l'info à l'avance

Neo :p
 

CyberNeo99

XLDnaute Occasionnel
Re : Pb saisi format de Date...

Bonjour,

J'ai trouvé le code malgré que je ne sois pas programmeur

Le voici, pas trrop difficile puisque je l'ai trouvé :p

If ParametreRegional(LOCALE_IDATE) = 0 Then Sheets("Feuil1").Range("A1").Value = "(mm-jj-aa, mm-dd-yy)"
If ParametreRegional(LOCALE_IDATE) = 1 Then Sheets("Feuil1").Range("A1").Value = "(jj-mm-aa, dd-mm-yy)"
If ParametreRegional(LOCALE_IDATE) = 2 Then Sheets("Feuil1").Range("A1").Value = "(aa-mm-jj, yy-mm-dd)"


Merci pour l'aide

J'aimerais connaître la réponse pour le format court et long pour la date.


Neo :)
 

eriiic

XLDnaute Barbatruc
Re : Pb saisi format de Date...

Bonsoir,

Plus simplement pour avoir le format de date régional tu peux faire :
fdate = Application.International(xlDateOrder)
qui te retourne :
0 = mois-jour-année
1 = jour-mois-année
2 = année-mois-jour

Fais F1 sur International, tu as beaucoup d'autres paramètres.

eric
 

CyberNeo99

XLDnaute Occasionnel
Re : Pb saisi format de Date...

Bonjour à tous,

Merci skoobi pour l'info.

Et merci à eriiic pour le code qui est beaucoup plus court et fonctionne à merveille. il suffisait de connaître le code. je ne suis pas programmeur alors difficile pour moi mais j'étais pas mal sûr qu'il y avait un code pour ça.

Neo :D
 

Discussions similaires

Réponses
2
Affichages
314

Statistiques des forums

Discussions
312 348
Messages
2 087 512
Membres
103 572
dernier inscrit
hamzahaha