Menu

Dates françaises, dates U.S.

Cloclo - 10 févr. 2018 à 12:27 - Dernière réponse :  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
Afficher la suite 

8 réponses

Répondre au sujet
M-12 163 Messages postés lundi 22 septembre 2008Date d'inscription 21 février 2018 Dernière intervention - 10 févr. 2018 à 13:10
0
Utile
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
Commenter la réponse de M-12
Patrice33740 6745 Messages postés dimanche 13 juin 2010Date d'inscription 21 février 2018 Dernière intervention - Modifié par Patrice33740 le 10/02/2018 à 14:08
0
Utile
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
Cordialement
Patrice
Commenter la réponse de Patrice33740
eriiic 21378 Messages postés mardi 11 septembre 2007Date d'inscriptionContributeurStatut 22 février 2018 Dernière intervention - 10 févr. 2018 à 14:50
0
Utile
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

Commenter la réponse de eriiic
0
Utile
2
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
Patrice33740 6745 Messages postés dimanche 13 juin 2010Date d'inscription 21 février 2018 Dernière intervention - 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;@
eriiic 21378 Messages postés mardi 11 septembre 2007Date d'inscriptionContributeurStatut 22 février 2018 Dernière intervention - 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
Commenter la réponse de Cloclo
0
Utile
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
Commenter la réponse de Cloclo
0
Utile
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.
Commenter la réponse de Cloclo