Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Inversion jour et aide après copier/coller

2 réponses
Avatar
bigwyl73
Bonjour,

J'ai une Macro qui ouvre un fichier *.txt (avec des données Nom, prénom, date) sous Excel puis copie toutes les données (dont la colonne date) pour les coller dans une feuille contenue dans un autre classeur.
Dans la colonne date, le jour et le mois sont inversés pour certaines cellules.

Exemple : 09/02/2010 dans le fichier *.txt devient 02/09/2010 après le copier/coller

Mais ce n'est pas systématique pour toutes les cellules.

NB : Si j'effectue le copier/coller à la main, tout est normal

Je ne comprends pas ce qui se passe.
Quelqu'un peut-il me dire pourquoi ça arrive et surtout me donner une solution ?

Merci

2 réponses

Avatar
Vincent Guichard
Le 21/04/2010 16:46, bigwyl73 a écrit :
Bonjour,

J'ai une Macro qui ouvre un fichier *.txt (avec des données Nom, pré nom, date)
sous Excel puis copie toutes les données (dont la colonne date) pour les coller
dans une feuille contenue dans un autre classeur.
Dans la colonne date, le jour et le mois sont inversés pour certaines cellules.


Exemple : 09/02/2010 dans le fichier *.txt devient 02/09/2010 après l e
copier/coller

Mais ce n'est pas systématique pour toutes les cellules.

NB : Si j'effectue le copier/coller à la main, tout est normal

Je ne comprends pas ce qui se passe.
Quelqu'un peut-il me dire pourquoi ça arrive et surtout me donner une solution
?

Merci


C'est un problème de différences entre les dates au format anglais
(MM/JJ/AAAA) et celles au format français (JJ/MM/AAAA).
Si le jour et le mois sont < 13 il n'arrive pas à savoir quel format
utiliser pour la conversion en Date et utilisera le format anglais.
Pour éviter cela assures-toi de faire les copies en format texte brut
(sans conversion en Date).

Vincent Guichard
Avatar
Gloops
Le 21/04/2010 17:58, Vincent Guichard a écrit :
Le 21/04/2010 16:46, bigwyl73 a écrit :
Bonjour,

J'ai une Macro qui ouvre un fichier *.txt (avec des données Nom,
prénom, date)
sous Excel puis copie toutes les données (dont la colonne date) pour
les coller
dans une feuille contenue dans un autre classeur.
Dans la colonne date, le jour et le mois sont inversés pour certaine s
cellules.


Exemple : 09/02/2010 dans le fichier *.txt devient 02/09/2010 après le
copier/coller

Mais ce n'est pas systématique pour toutes les cellules.

NB : Si j'effectue le copier/coller à la main, tout est normal

Je ne comprends pas ce qui se passe.
Quelqu'un peut-il me dire pourquoi ça arrive et surtout me donner un e
solution
?

Merci


C'est un problème de différences entre les dates au format anglais
(MM/JJ/AAAA) et celles au format français (JJ/MM/AAAA).
Si le jour et le mois sont < 13 il n'arrive pas à savoir quel format
utiliser pour la conversion en Date et utilisera le format anglais.
Pour éviter cela assures-toi de faire les copies en format texte brut
(sans conversion en Date).

Vincent Guichard




Exact, en tout cas dans le principe, en fait je crois bien que le format
utilisé est celui mentionné en options du classeur ? Si un des deux
premiers nombres de la date est supérieur ou égal à 13, là bien s ûr ça
ne peut pas être le mois, donc le format est automatiquement changé p our
obtenir une date valide. ça donne un résultat bancal, mais c'est
compréhensible dans le principe. J'aurais bien une réponse qui ne
s'applique pas forcément là, mais qui peut-être peut éclairer un peu.
J'ai pu faire fonctionner des requêtes SQL avec des dates dans un
environnement international en recourant systématiquement à DateSeria l,
auquel cas les arguments sont obligatoirement fournis dans l'ordre
année, mois, jour, quelle que soit la culture utilisée pour les affic her
ensuite.

On a donc une formule du style
DateSerial(Year(DateSource), Month(DateSource), Day(DateSource))
pour shématiser.

Alors pour mettre ce principe en oeuvre il s'agit de transmettre
séparément les trois éléments de la date. Donc j'aurais pensé à trois
colonnes séparées contenant respectivement le jour, le mois, l'anné e,
avec nécessité ensuite d'introduire une fonction DateSerial approprié e.
Comme tu le mentionnes on peut aussi transmettre la date dans une
colonne en mode texte, et ensuite en extraire les éléments par des
appels à Split, enfin dans les deux cas il me semble qu'il faudra de
toute façon un DateSerial qui ira récupérer les trois éléments pour en
faire une date. Enfin sauf si le but était juste d'imprimer le résult at,
mais j'imagine que dans ce cas on l'aurait fait dans le classeur source.

Ou alors il ne s'agit pas d'une application internationale, auquel cas
peut-être que simplement régler correctement les options des classeur s
impliqués peut simplifier grandement la question.