Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Transformer heures en nombre décimal dans la même cellule (>24h)

Jojoplatio

XLDnaute Nouveau
Bonjour,

J'aurais besoin de trouver une solution pour transformer des heures en nombre décimals dans la même cellule. Par exemple, j'aimerais rentrer 35.30 (pour 35h et 30 minutes) et que cela me le convertisse une fois que j'appuie su "entrée" en 35,5 ou 35.5. J'ai essayé de nombreuses démarches mais rien n'y fait... Y-a-t-il une solution ?

Merci beaucoup et bonne journée à vous !
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re,
j'ai des tests à faire pour voir si ça fonctionne ! à plus tard !
cela n'a pas marché, dommage, mais j'ai quand même eu ça, ma formule accepte maintenant aussi les textes au format horaire négatif et les heures négatives
{édition : je me suis aperçu que la fonction Si cassait aussi le lien avec la cellule source, l'utilisation de la fonction Produit est donc inutile quand la formule est encapsulée dans un Si ce qui simplifie la formule de conversion]
=SI(ESTERREUR((SUBSTITUE(SUBSTITUE(A1;",";":");".";":")*24));SI(ESTERREUR(A1*24);-(DROITE(A1;NBCAR(A1)-1)*24);A1*24);(SI(ESTERREUR(CHERCHE(":";SUBSTITUE(SUBSTITUE(A1;",";":");".";":")));"0:"&A1;SUBSTITUE(SUBSTITUE(A1;",";":");".";":"))*24))

[édition: par contre, pour que la formule soit compatible avec des versions d'Excel plus anciennes que 2016, l'utilisation de la fonction produit est nécessaire !]
=SI(ESTERREUR(PRODUIT(SUBSTITUE(SUBSTITUE(A1;",";":");".";":")));SI(ESTERREUR(PRODUIT(A1*24));-PRODUIT(DROITE(A1;NBCAR(A1)-1)*24);PRODUIT(A1*24));PRODUIT(SI(ESTERREUR(CHERCHE(":";SUBSTITUE(SUBSTITUE(A1;",";":");".";":")));"0:"&A1;SUBSTITUE(SUBSTITUE(A1;",";":");".";":"))*24))
 
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour le fil, le forum

La nuit porte conseil et, ce matin, j'ai concrétisé mon idée en deux coups de cuillère à pot ! Comme quoi il ne faut jamais désespérer.
Il vous faudra attendre encore un peu car je dois peaufiner pas mal de choses avant de vous livrer le résultat de mes cogitations !
Mais ça va venir, promis !

Bien cordialement, @+
 
Dernière édition:

Etoto

XLDnaute Barbatruc
Pas de problème, bravo et merci de ton travail.
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour le fil, le forum

Voila déjà le premier résultat, vous le trouverez ici OmégaHour avec un pour @mapomme
Il y a autre chose de prévu, mais pour l'instant cela ne fonctionne encore correctement que sous 365.
On va essayer d'améliorer ça avant de le poster.

[édition : Bonjour @Etoto , le fil, le forum
Et voila la deuxième partie ! Omega String ]


Bien cordialement, @+
 
Dernière édition:

Jojoplatio

XLDnaute Nouveau
Waouw ! Je n'aurais jamais pensé que ma simple question aurait généré autant de travail ! Merci à tous, je vois que j'ai affaire à de vrais passionnés !

Bien qeue compliquée, la formule fournie par @mapomme fonctionne très bien. En revanche, mon entreprise évolue sous google sheet (oui...) et la formule n'est pas compatible avec ce logiciel. En y regardant de plus prêt, le logiciel n'est pas capable de "diviser" par "1:0"

Et j'avoue que je sèche, je ne sais pas quoi faire pour contourner ce problème...
 

Pièces jointes

  • explicaiton pb.PNG
    35.4 KB · Affichages: 11

soan

XLDnaute Barbatruc
Inactif
Bonjour Jojoplatio, Yeahou, mapomme, le fil,

tu as écrit : « Bien que compliquée, la formule fournie par mapomme fonctionne très bien. En revanche, mon entreprise évolue sous Google Sheet (oui...) et la formule n'est pas compatible avec ce logiciel. En y regardant de plus près, le logiciel n'est pas capable de "diviser" par "1:0". Et j'avoue que je sèche, je ne sais pas quoi faire pour contourner ce problème... »

tu aurais pu préciser que cette formule de mapomme est celle de son post #12 :​

VB:
=SIERREUR(GAUCHE(SUBSTITUE(SUBSTITUE(A2;",";":");".";":")&"00";CHERCHE(":";SUBSTITUE(SUBSTITUE(A2;",";":");".";":")&"00")+2);A2&":00")/"1:0"

1:0 = 1 h ; et 1/24 = 0,04166666667 ; donc essaye :

VB:
=SIERREUR(GAUCHE(SUBSTITUE(SUBSTITUE(A2;",";":");".";":")&"00";CHERCHE(":";SUBSTITUE(SUBSTITUE(A2;",";":");".";":")&"00")+2);A2&":00")/0,04166666667

(seule la fin de la formule est différente)

soan
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Jojoplatio ,

Pour google sheet,essayez cette nouvelle formule en D2 à copier vers le bas.
VB:
=CNUM(GAUCHE(A2;SIERREUR(CHERCHE(",";A2);CHERCHE(".";A2&"."))-1))+(CNUM(0&STXT(A2;SIERREUR(CHERCHE(",";A2);CHERCHE(".";A2&"."))+1;99))/60)
Cette formule résout le problème des saisies qui commencent non pas par un chiffre mais directement par un point ou une virgule (ce qui ne plaisait pas à la première formule) : voir lignes 32 à 35.



edit : salut @soan
 

Pièces jointes

  • Jojoplatio- heure-heure déc- v4.xlsm
    21.4 KB · Affichages: 6
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
Bonjour job75,

j'viens d'essayer ta proposition, et ça marche très bien !

VB:
=SIERREUR(GAUCHE(SUBSTITUE(SUBSTITUE(A2;",";":");".";":")&"00";CHERCHE(":";SUBSTITUE(SUBSTITUE(A2;",";":");".";":")&"00")+2);A2&":00")*24

(voir la fin de la formule)

soan
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…