Besoin d'aide pour isoler des caractères

  • Initiateur de la discussion Initiateur de la discussion Stevens
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Stevens

Guest
Bonjour à tous,

Qqu'un pourra peut être m'aider à résoudre le problème ci dessous :

dans une cellule apparait le texte suivant :

5 heures 30 min
ou
1 heure 30 min
ou
1 heure
ou
2 heures
ou
10 min
ou 2 jours 2 heures 30 min

(j'aissai d'y mettre toutes les combinaisons possibles...)

De la j'aimerai pouvoir convertir le texte en format HEURE
en sachant que la cellule est à l'origine au format TXT et que je ne peut pas faire autrement puisque j'importe ces données d'une autre base.

Merci si qqu'un peut m'aider...

A bientôt
 
Bonjour Loic38 et Stevens

Celeda vient de le remarquer la semaine a été difficile et je suis un peu "cuit"
Je n'ai même pas eu la présence d'esprit de suivre son conseil : "Et à la place de Est Erreur, ESTNA est plus simple et radical."
Merci Celeda je me penche sur tes solutions mais maintenant, je vais aller dormir un peu ...

Un petit essai ...
Je n'en dis pas plus...

@+
GD
 

Pièces jointes

Bonsoir

Une petite fonction VBA, il te faudra appliquer le format de cellule [hh]:mm pour voir en heure (même supérieur à 24 h).

Public Function Stevens(vCell As String) As Date
vCell = "=(" + vCellnon
With Application.WorksheetFunction
vCell = .Substitute(vCell, "s", "") 'Supprime tous les s
vCell = .Substitute(vCell, " ", "") 'Supprime tous les espaces
vCell = .Substitute(vCell, "jour", ")+(")
vCell = .Substitute(vCell, "heure", "*1/24)+(")
vCell = .Substitute(vCell, "min", "*1/1440)")
End With
Stevens = Evaluate(vCell)
End Function

@+Jean
 
Bonsoir

Madame Monique "chapeau bas" vraiment, c'est de la belle formule.

Depuis que j'ai vu ta réponse (il y a 1 h) je cherche une solution pour supprimer cette colonne intermédiaire, et j'ai trouvé en déplaçant la substitution du "s" qui permet de supprimer les espaces dans les autres fonctions de substitutions., mais cela ne suffit pas il faut aussi contrôler la présence d'un espace derrière le "Heure". Ce qui donne comme formule.

=SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(STXT(B2;SI(ESTNUM(TROUVE("j";B2));TROUVE("j";B2);1);32767);"s";"");"jour ";"");SI(ESTNUM(TROUVE(B2;" heure "));" heure ";" heure");":");" min";"")/SI(ESTERR(TROUVE("h";B2));1440;1)+SI(ESTNUM(TROUVE("j";B2));STXT(B2;1;2)😉

@+Jean-Marie
 
Re

Une autre, plus petite

=STXT(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(B2;"s"😉;" "😉;"jour"😉;"heure";":");"min"😉;SI(ESTNUM(TROUVE("j";B2));TROUVE("j";B2)-2;1);32767)/SI(ESTERR(TROUVE("h";B2));1440;1)+SI(ESTNUM(TROUVE("j";B2));STXT(B2;1;2)😉

Monique, utiliser la conversion Texte/Numérique ("1:30"/1) est très très malin.

@+Jean-Marie
 
Bonjour à Toutes et Tous

Entre celles qui proposent des procédés "malins", des astucieux qui se permettent d'aligner 5 sustitue de suite ...
je suis toujours étonné de voir avec quelle réactivité et efficacité, ce forum fonctionne.
Il m'arrive de dire parfois des C.......s dans mes réponses, dans les 5 minutes qui suivent mon erreur est notée, signalée, et bien commentée.
Bien souvent ( trop à mon goût car cela stigmatise mes carences) mes propos sont soit améliorés soit solutionnés en VBA (je progresse ainsi grace à vous).

Merci à tous

@+
GD
 
Bonjour,

En fin de compte, ça ne fonctionne pas bien.
Plus de 99 jours n'était pas prévu. (ça, c'est réglé)
Aucune des 3 méthodes ne fonctionne s'il n'y a que des jours, sans heure(s) ni min (c'est réglé pour une)
Ta 2è, Jean-Marie, ne fonctionne pas s'il y a 1 ou des jours, suivi d'heure(s) et/ou de minute(s)
Par contre, elle fonctionne s'il y a 0 jour, suivi d'heure(s) et/ou de minute(s)

Egoïstement, je n'ai réussi à réparer que "ma" formule, et pas dans le sens du raccourci

Gérard, j'en ai une à raccourcir.
 

Pièces jointes

Bonjour

Pour la formule 3:38, je me heurte à la limite du nombre de () imbriqué.

Pour la formule de 4:04, voici la formule qui répond au cas énoncé par Monique
=SI((NB.SI(B2;"*h*")+NB.SI(B2;"*m*")>0);STXT(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(B2;"s"😉;" "😉;"jour"😉;"heure";":");"min"😉;SI(ESTNUM(TROUVE("j";B2));TROUVE("j";B2)-1;1);32767);0)/SI(ESTERR(TROUVE("h";B2));1440;1)+SI(ESTNUM(TROUVE("j";B2));STXT(B2;1;TROUVE("j";B2)-2)😉

@+Jean-Marie
 
Bonjour le fil, le Forum

Cette formule qui je pense fonctionne dans tous les cas :


=SI(ESTNUM(TROUVE("j";B2));1*GAUCHE(B2;TROUVE("j";B2)-1);0) + SI(ESTNUM(TROUVE("h";B2));STXT(B1;MAX(TROUVE("h";B2)-3;1);2)/24;0) + SI(ESTNUM(TROUVE("m";B2));STXT(B1;MAX(TROUVE("m";B2)-3;1);2)/1440;0)

Bon après-midi

PhiBou
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
14
Affichages
3 K
Retour