XL 2019 Conversion date et heure texte en format excel

RichardS

XLDnaute Junior
Bonjour à tous et avec un peu de retard, bonne année,

Vous trouverez ci joint un fichier contenant 3 éléments :
- une feuille essai contenant ce que je possède et ce que je souhaite obtenir
- une feuille commentaires dans laquelle sont expliquées les différentes démarches
- un programme en vba

En résumé, j’ai une date heure sous forme de texte que je souhaite transformer en format Excel 44902,47443 en conservant la partie horaire.
Je dispose également d'un montant texte que je souhaite transformer en format monétaire

J'ai bien trouvé une solution mais elle est basée sur le fait par exemple que la date est séparée par des tirets ce qui peut ne pas toujours être le cas.
D'autre part ma solution est lourde. Si vous aviez une manière plus élégante et plus sûr de solutionner le problème, je suis preneur.

A bientôt j'espère. et bravo pour le travail que vous faites.
 

Pièces jointes

  • test.xlsm
    39.8 KB · Affichages: 10
Solution
Salut à tous et merci pour vos recherches.
J'ai quand même continué mes investigations et j'ai fini par trouver quelque chose de pas vilain que je vous soumet :
Si la date comprend des séparateurs "-" ou "/", 25-12-2022 12:52:10 ou 25/12/2022 12:52:10, la formule = CDate(Cells(1, 1)) suffit
Par contre si elle comprend d'autres séparateurs quels qu'ils soient, par exemple 25.12.2022 12:52:10, il nous faut la formule suivante : = CDate(Replace(Cells(3, 1), Mid(Cells(3, 1), 3, 1), "/"))

Et ça fonctionne YOUPI

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Pour la date, avec l'outil de conversion (données/convertir) à la troisième étape choisir
Date : AMJ puis cliquer sur terminer. Ne rien faire aux étapes précédentes.
1673689620174.png

Pour le montant:
Refaire recommencer mais :
toujours à la troisième étape, cliquez sur "Avancé" puis choisir le point comme séparateur décimal, valider puis terminer (mettre votre cellule au format désiré)
1673689857443.png
 

youky(BJ)

XLDnaute Barbatruc
Bonjour tous,
sinon macro que voici
Bruno
VB:
Sub madate()
Sheets("Travail").Activate
an = Left([A3], 4)
mm = Mid([A3], 9, 2)
jj = Mid([A3], 6, 2)
hh = Right([A3], 9)
ladate = CDate(jj & "/" & mm & "/" & an) & hh
[C3] = ladate
[D3] = CDbl(Replace([B3], ".", ","))
End Sub
 

patricktoulon

XLDnaute Barbatruc
bonjour à tous
excel reconnaît les dates au 3 format les plus répandus (yyyy-mm-dd , mm-dd-yyyy , dd-mm-yyyy)
il reconnaît aussi le tiret comme séparateur date
tout simplement en colonne 3
(arrondi la date en format numérique a 5 décimales
=ARRONDI(CNUM(A3);5)
la cellule doit être du même format (nombre + 5 décimales)


pour les montant simplement formater la cellule en monétaire "€" (pour les garder calculables )
 
Dernière édition:

RichardS

XLDnaute Junior
Salut à tous et merci pour vos recherches.
J'ai quand même continué mes investigations et j'ai fini par trouver quelque chose de pas vilain que je vous soumet :
Si la date comprend des séparateurs "-" ou "/", 25-12-2022 12:52:10 ou 25/12/2022 12:52:10, la formule = CDate(Cells(1, 1)) suffit
Par contre si elle comprend d'autres séparateurs quels qu'ils soient, par exemple 25.12.2022 12:52:10, il nous faut la formule suivante : = CDate(Replace(Cells(3, 1), Mid(Cells(3, 1), 3, 1), "/"))

Et ça fonctionne YOUPI
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

@RichardS

Tu as posé 3 questions tu "t'auto" réponds à 1, il en reste 2 !!!

1673781410564.png


On t'a proposé 5 réponses et tu ne dis pas un mot sur les 5 solutions proposées c'est pas cool du tout.

Mais as tu regardé les 5 réponses fournit ? Pas sur ....

J'aurais pensé que ta réponse nous disent :
La réponse de x ou y est comme ceci ou comme cela et j'attendais plutôt telle ou telle réponse
Ou bien tout va bien pour x ou y solution et je préfère faire ceci ou cela.

En clair indiqué dans un fichier par exemple les 3 solutions que tu as retenues.

@Phil69970
 

RichardS

XLDnaute Junior
Bonjour @RichardS

Edit : Bonjour Hasco et Bruno

Je te propose ce fichier

Merci de ton retour

@Phil69970
J'apprécie ta réponse, elle est élégante et efficace.
Son inconvénient est de n'être valable que pour un seul type de séparateur.
Cells(5, 2) = CDate(Replace(Cells(5, 1), Mid(Cells(5, 1), 3, 1), "/"))
La solution ci-dessus a l'avantage d'être valable pour tout type de séparateur.
Merci pour ton travail.
 

RichardS

XLDnaute Junior
Bonjour à tous

@RichardS

Tu as posé 3 questions tu "t'auto" réponds à 1, il en reste 2 !!!

Regarde la pièce jointe 1160405

On t'a proposé 5 réponses et tu ne dis pas un mot sur les 5 solutions proposées c'est pas cool du tout.

Mais as tu regardé les 5 réponses fournit ? Pas sur ....

J'aurais pensé que ta réponse nous disent :
La réponse de x ou y est comme ceci ou comme cela et j'attendais plutôt telle ou telle réponse
Ou bien tout va bien pour x ou y solution et je préfère faire ceci ou cela.

En clair indiqué dans un fichier par exemple les 3 solutions que tu as retenues.

@Phil69970
J'étais avec mes petits enfants toute la journée de samedi d'où le retard de ma réponse, mais j'ai répondu. Non seulement j'ai regardé les réponses mais je les aient également testées. Celle qui me conviendrait le mieux c'est celle de @Phil69970 et je lui en ai fait part dans les réponses dédiées. J'ai continué mes recherches et j'ai trouvé une solution qui me convient et que j'ai mis dans le fil de la conversation en expliquant pourquoi.
Je ne pense donc pas mériter tes reproches.
Cordialement
 

Phil69970

XLDnaute Barbatruc
Re

C'est pas des reproches mais quand des personnes répondent à des questions, en général on attend le retour des solutions proposées.
Relis mon post # 8 il manque la réponse aux 2 autres questions il me semble.
Et c'est pas le fait de répondre le lendemain qui me dérange car nous avons tous tous une vie en dehors d'internet.

Son inconvénient est de n'être valable que pour un seul type de séparateur.
Dans ton fichier exemple tu aurais du mettre les différents cas de séparateurs que tu peux avoir dans ton fichier pour que l'on cherche une réponse qui fonctionne dans tous les cas comme tu as mis 1 seul cas ..... on peux pas chercher ce que l'on ne connait pas.

Et j'ai bien essayé ta solution

Cells(5, 2) = CDate(Replace(Cells(5, 1), Mid(Cells(5, 1), 3, 1), "/"))
La solution ci-dessus a l'avantage d'être valable pour tout type de séparateur.

Je sais pas si elle marche car sur mon PC j'ai ceci :

1673783392590.png


Donc il manque quelque chose dans dans ta solution pour pouvoir l'appliquer et l'essayer

@Phil69970
 

Discussions similaires

Statistiques des forums

Discussions
311 713
Messages
2 081 806
Membres
101 819
dernier inscrit
lukumubarth