Problème de date: Inversion jour et mois dans cellule de résultat

tic59

Nouveau membre
Bonjour,

J'ai le problème suivant sur Excel:

J'ai à la base 3 colonnes, une correspondant au jour, une deuxième au mois et une troisième à l'année.
Je souhaite regrouper ces 3 colonnes dans une quatrième afin qu'elle contienne la date complete du type JJ/MM/AAAA.

J'utilise la ligne de macro suivante:
Range("J" & i).Value = Range("B" & i) & "/" & Range("H" & i) & "/" & Range("I" & i)

Problème: Pour certaines cellules, le jour et le mois sont inversés... Au lieu d'avoir JJ/MM/AAAA je vois MM/JJ/AAAA.

Pourtant toutes les cellules de la colonnes finale sont au même format de date: *14/03/2001, et en français...

Pour faire un test, j'ai inclus le résultat de la concatenation des 3 cellules dans une variable, puis je l'affiche via Msgbox, il n'y a pas d'erreur d'inversion à ce niveau.
Donc le problème apparaitrait au moment de l'insertion des données dans les cellules finales...

Pouvez vous m'aider? J'ai tourné le problème dans tous les sens et je ne vois plus trop d'ou ça peut venir... Ca me semble plus très logique... Quelqu'un a une idée?

(J'utilise Office 2007)
 

zeb

Modérateur
Salut,

Et si plutôt que de tenter de justifier pourquoi Excel s'emmêle la traduction, je te proposais de te renseigner sur la fonction DateSerial() ?

(Ceci constitue une solution probable, pas une réponse à ta question, j'entends bien ;) )
 

tic59

Nouveau membre
Quelqu'un ma donné la réponse sur un autre forum:

En utilisant la fonction CDate pour convertir ça fonctionne:

CDate(Range("B" & i) & Range("C" & i))

 

zeb

Modérateur
C'est une autre solution, mais ce n'est toujours pas la réponse à " pourquoi Excel s'emmêle-t-il ? ".

As-tu regardé la fonction DateSerial() ?

-----------

Par ailleurs, la construction des adresses avec des chaînes de caractères, si elle est très parlante, n'est pas très efficace. Considère qu'il vaut mieux, surtout quand la performance est en jeu, utiliser Cells() plutôt que Range() :
Code:
Cells(i, 10).Value = DateSerial(Cells(i, 9).Value, Cells(i, 8).Value, Cells(i, 2).Value)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 062
Membres
1 586 394
Dernier membre
Manoushk
Partager cette page
Haut