Dates françaises, dates U.S.

Fermé
Cloclo - 10 févr. 2018 à 12:27
 Cloclo - 13 févr. 2018 à 15:43
Bonjour,
Une procédure VBA traite une feuille Excel composé en particulier de dates et de montants.
Sur mon ordinateur tout se passe bien. Sur l'ordinateur d'un collègue, la date s'affiche en format US : 07/02/2018 devient 02/07/2018. Le format de la date est "Date" et "*14/03/20nn", la procédure et la feuille Excel sont strictement les mêmes, la différence provient donc d'un paramétrage du système .... mais lequel ?????
Idem pour les montants qui ne se présentent pas de la même façon.
Je crois que c'est un classique mais ma maigre culture EXCELienne ne m'a pas encore permis de trouver !!!

Merci d'avance
A voir également:

6 réponses

M-12 Messages postés 1333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 299
10 févr. 2018 à 13:10
Bonjour,

A la vue des explications, je n'ai rien compris (mise à part que c'est un format de présentation de la date)
Alors mettez un classeur avec des explications sur le résultat obtenu et celui espèré

Ce sera plus clair
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
Modifié le 10 févr. 2018 à 14:08
Bonjour,

« Le format de la date est "Date" et "*14/03/20nn", la procédure et la feuille Excel sont strictement les mêmes, la différence provient donc d'un paramétrage du système .... mais lequel ????? »

C'est tout à fait normal, le format date choisi, "*14/03/20nn", est celui du système paramétré dans les options régionales (Heure et Langue sous W10).
Pour obtenir une date non régionale il faut choisir un format sans l’astérisque, par exemple hh/mm/aaaa
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
10 févr. 2018 à 14:50
Bonjour,

Une procédure VBA traite une feuille...
Il faut montrer le code, on n'est pas devin.
Souvent dû à l'absence de conversion avec Cdate(ta_date), mais il y a tellement d'autres cas où cette inversion jj/mm se produit, il faut même parfois reconstruire la date... Mais ça avant son écriture, une fois qu'excel a mal traduit la date passée c'est trop tard, elle est fausse et le restera.
Donc difficile sans code et classeur. Et même avec ça peut dépendre des paramètres locaux et de la version excel (tellement de surprises avec 2016, sans parler des bugs de 2007)
eric

0
Merci à tous les trois de bien vouloir vous intéresser à mon cas.

Ce que j'obtiens sur mon ordinateur :

Numéro \ Date Virement \ Montant \ Libellé
2838 \ 07/02/2018 \____49,00____\ Virement En Votre Faveur
1755 \ 07/02/2018 \____49,00____\ Virement En Votre Faveur

Ce que mon collègue obtient sur son ordinateur avec le même classeur et la même macro VB sous Excel :

Numéro \ Date Virement \ Montant \ Libellé
2838 \ 02/07/2018 \________49,00 \ Virement En Votre Faveur
1755 \ 02/07/2018 \________49,00 \ Virement En Votre Faveur

La procédure VB :

' Ligne(1, 2) = a$
Truc = CVDate(a$)
Ligne(1, 2) = Format(Truc, "dd/mm/yyyy")
' Ligne(1, 3) = b$
Truc = Val(b$)
Ligne(1, 3) = Format(Truc, "## ##0.00")

En désespoir de cause, je peux décrire la cellule en format "Texte" et bricoler la date ... et vive la compatibilité selon Microsoft !!!

Merci d'avance
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
10 févr. 2018 à 19:22
Qu'y-a-t'il dans les paramètres régionaux de Windows ?
As tu essayé avec un format personnalisé de la cellule : jj/mm/aaaa;@
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
10 févr. 2018 à 19:55
sur son PC met-toi sur la date et regarde ce que tu lis dans la zone d'édition des formules.
Si tu lis la date correcte 07/02/2018 c'est un problème de format.
Si tu lis toujours 02/07/2018 c'est qu'elle a été mal convertie par vba et là c'est dans vba qu'il faut agir. Tu pourras mettre tous les format que tu veux elle restera mauvaise.

Au passage Cvdate() est fournir pour rétro-compatibilité mais ne doit plus être utilisée. C'est Cdate() maintenant.

Avec Ligne(1, 2) = Format(Truc, "dd/mm/yyyy") tu ne fournis pas une date à excel, mais une chaine qu'il cherche à nouveau à interpréter (mal dans certains cas apparemment)
Essaie plutôt avec :
Ligne(1, 2) = Cdate(a$)

eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour à vous deux,
J'ai essayé de suivre au mieux vos conseils et pour celà j'ai essayé sur mon portable qui dispose d'Excel 2013 (je développe avec VB sur mon PC de Bureau) >> même résultat que le collègue (02/07/2018) ...
Sur ce portable :
Paramètres régionaux Windows : langue = Français; date courte = jj/MM/aaaa
j'ai essayé Format(Truc,"jj/mm/aaaa;@")
j'ai remplacé tous les CVdate (vieille habitude) par Cdate
des MSGBOX sur a$, Truc, Ligne(1,2) annoncent 07/02/2018
.... et sur la feuille Excel je récupère 02/07/2018 !!!!
On va bien réussir à bidouiller quelque chose mais j'aimerais avant tout comprendre la cause : incompatibilité entre version d'Excel ??? Ce me semble un peu improbable.

Merci
0
Bonjour,
J'ai trouvé une bonne information sur "Développez.net" rubrique "Comment éviter qu'une date européenne soit interprétée comme date américaine".
Cells(n,2).NumberFormat = "General"
Cells(n,2).Value = Cdate(Truc)
...... et ça marche !!!!!

Encore merci pour votre aide.
0