Comment transformer une date ?

  • Initiateur de la discussion Laurent h
  • Date de début
L

Laurent h

Guest
bonjour,

J'ai une date de type US et je voudrais la transformer en francaise
Heure + 6 et permutation mois et jour


exemple
04/30/03 21:00 => 30/04/03 3:00

Merci de votre aide
 
P

polpoye

Guest
j'ai eu le probleme inverse ... je te donne le fruit d'une nuit de recherche!!!

Sub UneRechercheFructueuse()
Range("F8").Activate
// en F8 je mets la date du jour
ActiveCell.FormulaR1C1 = "=DATE(" & annee & "," & mois & "," & jour & ")"
end sub

Function formater_date()
Worksheets("Feuil1").Activate: Range("F10").Select
jour = Mid(Range("F8").Value, 1, Len("00-00-2000") - 8)
mois = Right(Mid(Range("F8").Value, 1, Len("00-00-2000") - 5), 2)
annee = Right(Mid(Range("F8").Value, 1, Len("00-00-2000")), 4)

mydate = annee & "-" & mois & "-" & jour
End Function

Dans le main()
sub Main()
Call formater_date
jour = mydate
end sub

*** NB : utile pour les requetes Mysql notamment ;) ... En espérant avoir aidé!!!
 
M

Monique

Guest
Bonjour,

Avec formule.
Date et heure US en A1
Format de la cellule qui reçoit le résultat : jj/mm/aa hh:mm
(ou bien jj-mm-aaaa hh:mm)
=CNUM(STXT(A1;4;3)&GAUCHE(A1;3)&DROITE(A1;8))+6/24
 
M

Monique

Guest
Bonjour,

Oui, le décalage de 6 heures a un effet sur la date.
Ce matin dimanche à 3 heures du mat en France, les Canadiens n'en étaient encore qu'au samedi soir.
Pour le bug du 1er janvier 2000, chaque fuseau horaire est passé au 1er janvier 2000, chacun son tour. Et les derniers n'avaient aucun souci à se faire.
Tu fais un essai avec l'heure de ton ordinateur
Tu prends le fuseau horaire d'Auckland, carrément en avance de 12 heures
Tu constates que là-bas ils sont déjà demain quand, en France, il n'est que 15 ou 16 heures.

Revenons à nos moutons :
04/30/03 21:00 => 01/05/03 3:00
 
M

Monique

Guest
Bonsoir,

Oui, j'excuse, mais de quoi, au juste ?

On admet que les dates et heures US sont dans la colonne A, à partir de A2 jusqu'à A100
En B2, C2, D2 ou une autre colonne, tu mets ta cellule au format jj/mm/aa hh:mm et tu tapes cette formule :
=CNUM(STXT(A2;4;3)&GAUCHE(A2;3)&DROITE(A2;8))+6/24
Ensuite, tu la copies et tu la colles sur toutes les cellules du dessous.
soit de B3 à B100 ou de C3 à C100 ou de D3 à D100

Pour mettre la cellule au format jj/mm/aa hh:mm
Tu sélectionnes ta cellule
Barre de menus - Format - Cellule - Onglet nombre
Dans la liste de gauche, tu choisis "Personnalisée"
Dans la zone "Type" à droite, tu tapes jj/mm/aa hh:mm
Personnellement, je préfère jj-mm-aa hh:mm ou bien jj-mm-aaaa hh:mm
 
L

Laurent h

Guest
ma cellule est de type standard lorsque je tapes

04/30/03 21:00 => ok la conversion 01/05/03 03:00

mais si je fais

05/04/03 14:00 la cellule se transforme en et la conversion est fausse
comment faire ?

05/04/2003 14:45 => 05/04/2003 14:45:00 => conversion 16/01/00 15:03

merci

Laurent
 
M

Monique

Guest
Re,

C'est vrai, en plus, que ça ne fonctionne pas.
C'était trop simple.
Hier, j'étais partie dans des formules longues longues, si j'aurais su, je les aurais gardées.
Je vais chercher, mais ce n'est pas garanti.
 
C

Celeda

Guest
Bonjour,

J'avais déjà fait un post mais il a disparu en même temps que le forum pendant quelques minutes mais comme celui-ci est revenu, je recommence :

En attendant que Monique retrouve ses petits(je suis sure que tu vas y arriver), Polpoye, j'ai tésté la function et voilà ce que j'ai comme situation bizarre :
1- si on valide la 1ere sub, cela note =#NOMBRE! soit=DATE(;;)
2- si on met la date, cela me renvoie rien du tout.

BOn comme je suis dans la classe des petites de la maternelle VBA, j'ai peut-être fait quelque chose de pas bien (et aussi attention à mydate/variable)

Si tu pouvais regarder cela et me dire, j'en serais enchantée.
Merci beaucoup.

Celeda
 
M

Monique

Guest
Re,

Je n'ai pas retrouvé mes petits, j'ai recommencé et ce n'est pas la même chose qu'hier.

En fait, il y a plein de possibilités, tout dépend du format de la cellule de départ, celle qui contient la date US
Si la date US est au format date, il n'y a pas de problème et ce n'est certainement pas ça.
Dans ce cas, la cellule de départ est au format mm/jj/aa hh:mm et la conversion est A1+6/24, au format jj/mm/aa hh:mm
Quoique si la date provient d'un copié collé, je ne sais pas.

Si la date US est au format texte, ça peut être :
ou bien 05/31/2003 21:00
ou bien 05/31/03 21:00
ou bien 05/31/2003 21:00:00
ou bien 05/31/03 21:00:00
Selon le cas, la formule doit pouvoir être :
=CNUM(STXT(A1;4;3)&GAUCHE(A1;3)&STXT(A1;7;4)&" "&DROITE(A1;5))+6/24
=CNUM(STXT(A1;4;3)&GAUCHE(A1;3)&STXT(A1;7;2)&" "&DROITE(A1;5))+6/24
=CNUM(STXT(A1;4;3)&GAUCHE(A1;3)&STXT(A1;7;4)&" "&DROITE(A1;8))+6/24
=CNUM(STXT(A1;4;3)&GAUCHE(A1;3)&STXT(A1;7;2)&" "&DROITE(A1;8))+6/24

On peut aussi compléter le tout et essayer de faire une formule conditionnelle à rallonge.
Mais ce sera (peut-être) pour un autre jour.
Pour y voir un peu plus clair, je joins un classeur.
 

Pièces jointes

  • transformer_date.zip
    2.7 KB · Affichages: 29
M

Monique

Guest
Re,

Les 4 formules en 1 seule conditionnelle, si la cellule de départ est au format texte
=CNUM(STXT(A2;4;3)&GAUCHE(A2;3)&STXT(A2;7;SI(CHERCHE(" ";A2;1)=11;4;2))&" "&DROITE(A2;SI(ESTERREUR(CHERCHE(":";A2;(CHERCHE(":";A2;1)+1)));5;8)))+6/24
Reste à savoir si ça fonctionne bien.
 

Pièces jointes

  • transformer_date02.zip
    2.2 KB · Affichages: 39

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 579
Membres
111 207
dernier inscrit
max008