Bonjour,
Je suis tombé sur, ce que je considère comme un bug excel, même si je pense que je ne dois pas être le premier à tomber dessus.
Il s'agit d'un format de date qu'indépendamment des options de régionalités du système d'exploitation, et des formats de date des cellules par défaut, Excel interprête en Français et les traduit en Anglais.
Pour reproduire le bug il faut faire :
Bien évidemment dans mon cas Wb est un Workbook et UneLigne, UneColonne, UneAutreLigne, UneAutreColonne sont des entiers.Code:
1
2 Wb.Sheets("Feuil1").Cells(UneLigne,UneColonne).Value = Wb.Sheets("Feuil1").Cells(UneAutreLigne,UneAutreColonne).Value
Si votre format de date est du type jj/mm/aaaa dans la cellule à la ligne UneLigne et à la colonne UneColonne, la macro vous la traduire sous le forme mm/jj/aaaa dans la cellule de la ligne UneAutreLigne et de la colonne UneAutreColonne.
Il y a maintenant un moyen de contourner ce phénomène (or la possibilité d'extraire le mois, le jour et l'année de la chaine de caractère source et de la reconstituer dans la chaine de caractère cible), c'est d'utiliser la fonction CDate
Dans mon exemple :
J'interprête ça comme si Excel pense que la cellule source est une chaine de caractère, qu'il a reconnu implicitement comme un format de date et qu'il l'a donc traduit dans le format date dans la cellule cible mais ce que je trouve curieux c'est qu'indépendamment de l'option de régionalité du système d'exploitation et même si le format de la cellule cible est Date française, il la traduit en format de date anglaise sauf si le jour dépasse 12 ( à ce moment là il ne peut y avoir ambiguité)Code:
1
2 Wb.Sheets("Feuil1").Cells(UneLigne,UneColonne).Value = CDate(Wb.Sheets("Feuil1").Cells(UneAutreLigne,UneAutreColonne).Value)
Je précise, car ça peut avoir son importance, que j'ai remarqué le comportement bizarre sur Excel 2003. Peut être que depuis sur 2007 ou 2010, le comportement a évolué