XL 2016 Problème changement format date

quentindxb

XLDnaute Nouveau
Bonjour à tous,

Je me tourne vers vous après avoir cherché pas mal de temps sur plusieurs forum, sans réussir à adapter les solutions à mon problème.

J'ai créé un fichier dans lequel un bouton "Create SDR" me permet de créer des rapports journaliers (SDR=Site Daily Report) avec des efficiences de lignes de production, et d'autres données du jour à remplir manuellement (un nouveau rapport = une nouvelle feuille excel au nom de la date du jour format dd-mm-yyyy).
Ensuite, j'ai créé un bouton "Create report" dans lequel un userform demande à l'utilisateur de choisir entre quelle date X et quelle date Y il veut extraire les données de chaque feuille comprise entre ces deux dates (permet de créer des rapport hebdomadaires, mensuels, sous forme d'un nouveau classeur, en compilant les données des rapports journaliers).

J'ai une feuille "Thèque" masquée dans laquelle j'importe automatiquement le nom de chaque nouveau rapport, afin d'avoir la liste des noms de rapports sous forme de tableau en colonne H (donc une liste de dates, que je trie par ordre chronologique), que j'importe dans le userform du "Create report", afin de sélectionner la date X et la date Y. J'ai créé une macro qui permet de toujours mettre à jour ce tableau si jamais la personne utilisant le fichier venait à supprimer un des onglets, afin que la date correspondant à cet onglet ne se retrouve pas dans le userform. La macro se trouve dans la petite flèche de sélection des dates dans le userform.

Sur mon Excel français cela fonctionne très bien, mais lorsque j'ai envoyé mon fichier à un collègue anglais, je me suis aperçu que son Excel modifie le format de date entre l'extraction du nom d'onglet et le copiage dans le tableau de dates dans "Thèque". Par exemple, le 11-05-20 se transforme en 05-11-20.
Voici mon problème, impossible de maîtriser le format de cette date. L'idée étant que le fichier soit utilisable par plusieurs personnes de différentes nationalités/langue/pays donc fort probablement par plusieurs versions et langues d'Excel.

J'espère que mon explication est assez détaillée, je vous joins aussi le fichier en question.

Merci d'avance pour votre support à tous, et n'hésitez pas pour toute question je me ferai un plaisir d'y répondre.

Quentin
 

Pièces jointes

  • Site daily report - Pareto improvment new algo forum 2.xlsm
    169.6 KB · Affichages: 12
Solution
bonjour
puisque les format de nom(date) ne respecte pas le Application.International(xlDateseparator)qui est "/" pour les français et anglais
autant mettre tes cellules au format texte non?
pour un calcul (entre date1 et date2) tu utilise datevalue
datevalue
qui te donne la date du( string de la date)
comme ca tu n'a plus a te soucier du format

demande a ton ami anglais de faire ce test
sub testX()
msgbox month(datevalue("01 mars 2020"))
msgbox month(datevalue("01 03 2020"))
end sub

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Quentin,
Le format de la cellule est Date, donc ce format étant régional il peut changer d'un pays à l'autre en particulier dans les pays anglophones.
Si vous tentiez de le mettre en format personnel, du genre "D: "jj-mm-aaaa;@ avec
VB:
Range(Cellule).NumberFormat = """D: ""dd-mm-yyyy;@"
XL ne se permettra pas de changer une notation personnelle.
Du moins je l'espère étant incapable de le tester.
 

patricktoulon

XLDnaute Barbatruc
bonjour
puisque les format de nom(date) ne respecte pas le Application.International(xlDateseparator)qui est "/" pour les français et anglais
autant mettre tes cellules au format texte non?
pour un calcul (entre date1 et date2) tu utilise datevalue
datevalue
qui te donne la date du( string de la date)
comme ca tu n'a plus a te soucier du format

demande a ton ami anglais de faire ce test
sub testX()
msgbox month(datevalue("01 mars 2020"))
msgbox month(datevalue("01 03 2020"))
end sub
 

quentindxb

XLDnaute Nouveau
bonjour
puisque les format de nom(date) ne respecte pas le Application.International(xlDateseparator)qui est "/" pour les français et anglais
autant mettre tes cellules au format texte non?
pour un calcul (entre date1 et date2) tu utilise datevalue
datevalue
qui te donne la date du( string de la date)
comme ca tu n'a plus a te soucier du format

demande a ton ami anglais de faire ce test
sub testX()
msgbox month(datevalue("01 mars 2020"))
msgbox month(datevalue("01 03 2020"))
end sub

Bonjour,
Merci pour votre réponse, ça me répond 3 pour les deux messages box
 

quentindxb

XLDnaute Nouveau
Bonjour Quentin,
Le format de la cellule est Date, donc ce format étant régional il peut changer d'un pays à l'autre en particulier dans les pays anglophones.
Si vous tentiez de le mettre en format personnel, du genre "D: "jj-mm-aaaa;@ avec
VB:
Range(Cellule).NumberFormat = """D: ""dd-mm-yyyy;@"
XL ne se permettra pas de changer une notation personnelle.
Du moins je l'espère étant incapable de le tester.

Merci pour votre réponse !
Le problème étant que je ne suis pas familier avec ce code, jamais utilisé jusqu'alors
 

quentindxb

XLDnaute Nouveau
J'avais du simplement remplacer march au lieu de mars sur le pc anglais (j'ai un pc anglais et un francais). sinon ça ne fonctionnait pas.

Et rien à faire, il me donne tjrs une date, incroyable

Quand j'écris Datevalue (Cellule), il change quand meme le format de Cellule
Le 11-05-20 est quand même changé en 11-May-2020, ce que j'aimerais c'est avoir une chaine de caractère éditable qui ait le même format que la date, à savoir dd-mm-yyyy
 

patricktoulon

XLDnaute Barbatruc
re
donc tu es au format "dd/mm/yyyy" sur les deux pcs
donc ton problème vient d'ailleurs
ben c'est pas gagné ;)
et tu dis que sur le pc anglais les cellules change le format de date???o_O

bizarre si c'est 1 pour le xldateorder pour les deux peut être le pc est paramétré autrement pour les dates dans les options de l'application
mais c'est suspect ton truc
ça me fait penser au bon vieux XP US crackouillé avec la region paramétrée en français sauf que tout ne suit pas dans le system
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
293