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

Besoin d'aide pour isoler des caractères

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
 
G

Gérard DEZAMIS

Guest
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

  • HoraireTexteChiffre.zip
    2.7 KB · Affichages: 10
J

Jean-Marie

Guest
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
 
J

Jean-Marie

Guest
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
 
J

Jean-Marie

Guest
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
 
G

Gérard Dezamis

Guest
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
 
M

Monique

Guest
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

  • CaracteresStevensV1.zip
    3.3 KB · Affichages: 32
J

Jean-Marie

Guest
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
 
P

PhiBou

Guest
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
 

Discussions similaires

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