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

Extraire toute la chaines de caractère aa-bb-cc résultat "cc"

anthooooony

XLDnaute Occasionnel
Bonjour Downloadien,

Bien longtemps que je ne vous ai pas demandé conseil...

Je cherche à extraire toutes la chaîne de caractère se trouvant à droite du dernier "-"
J'ai pensé à =Droite(x;x) mais les champs à récupérer n'ont pas tous le même nombre de caractère
J'ai pensé à =STXT(x;x;x) mais idem
J'ai pensé à rechercheV avec une formule avec contient, mais ca n'a pas marché..


72 035,76 - NOC - 01401016955 - Restant à facturer = facture
448,56 - ERC - 01302094984 - Facture sur commande positive comprenant des lignes négatives à traiter manuellement

Auriez vous une piste pour extraire ces champs en bleu?

En vous remerciant par avance,

Anthoooooony
 

Lolote83

XLDnaute Barbatruc
Salut,
Une solution pas très académique mais bon.
Si le texte a afficher se trouve toujours après 3 tirets (-), on recherche la position du tiret n°1, puis celle du n° 2 et enfin celle du n°3
De la, on peux extraire les données suivantes la position du 3ème tiret

Exemple avec en B10 pour la première ligne
En C10 = TROUVE("-";B10;1)
En D10 = TROUVE("-";B10;C10+1)
En E10 = TROUVE("-";B10;D10+1)
Et enfin en F10 le résultat
En F10 = STXT(B10;E10+2;100)

Voili voilà en attendant mieux
@+ Lolote83
 

job75

XLDnaute Barbatruc
Bonjour anthooooony, zebanx, Lolote83,

Formule à valider normalement :
Code:
=SUPPRESPACE(STXT(A1;TROUVE("µ";SUBSTITUE(A1;"-";"µ";NBCAR(A1)-NBCAR(SUBSTITUE(A1;"-";))))+1;9^9))
A+
 

anthooooony

XLDnaute Occasionnel
Bonjour à tout le monde,

Merci vos retours, j'ai trouvé mon bonheur. La formule a été déroulée sur 250 000 lignes et le résultat est impeccable!

En vous remerciant comme d'habitude les retours sont géniaux !

Anthooooony
 

Modeste geedee

XLDnaute Barbatruc
Bonsour® sélectionner la colonne
Rechercher et selectionner
Rechercher : *-
Remplacer par : (vider ce champ)
 
Dernière édition:

job75

XLDnaute Barbatruc
Re, salut Modeste geedee, maval, gosselien,

Par curiosité j'ai testé un fichier avec dans les cellules A1:A100000 le texte :
Code:
448,56 - ERC - 01302094984 - Facture sur commande positive comprenant des lignes négatives à traiter manuellement
- avec ma formule (rendue volatile) du post #4 sur B1:B100000 recalcul en 0,35 seconde

- avec la 2ème formule de zebanx (rendue volatile) recalcul en 5,4 secondes

- avec la méthode Remplacer de Modeste geedee traitement en 91 secondes.

A+
 

job75

XLDnaute Barbatruc
Re,

Pour info j'ai testé la fonction VBA :
Code:
Function F$(t$)
Dim s
s = Split(t, "-")
F = Trim(s(UBound(s)))
End Function
entrée en B1 avec la formule (volatile) =F(A1)&T(ALEA())

Sur B1:B100000 le recalcul se fait en 1,2 seconde.


Bonne nuit.
 

job75

XLDnaute Barbatruc
Bonjour le forum,

Testées dans les mêmes conditions :
Code:
Function F$(t$)
F = Trim(Mid(t, InStrRev(t, "-") + 1))
End Function
qui se recalcule en 1,0 seconde
Code:
Function F$(t$)
Dim i%
For i = Len(t) To 1 Step -1
If Mid(t, i, 1) = "-" Then F = Trim(Mid(t, i + 1)): Exit For
Next
End Function
qui se recalcule en 3,2 secondes.

On a fait le tour de la question.

Bonne journée.
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
On a fait le tour de la question.

Quoique :
qu'est-ce qui pourrait expliquer le fait que la solution Rechercher/remplacer qui ne requiert quasiment aucune expérience en algorithmie, ni formule, ni VBA
soit entachée d'un accroissement exponentiel de temps de traitement (*)
(jusque la perte de contrôle : EXCEL ne répond pas !!! )
alors que dans de très nombreux cas les manipulations natives soient recommandées et super optimisées ??

(*) :
autant de remplacement que de chaine trouvée "*-"
mais aussi autant de recalcul feuille que de cellule traitées ???
ne pourrait-on inhiber manuellement les recalculs ???? (comme en vba ScreenUpdating=False)

 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Modeste geedee,

S'il n'y a pas de formules volatiles dans le classeur la méthode Remplacer n'entraîne aucun recalcul.

Et s'il y en avait il n'y aurait je pense qu'un seul recalcul de toutes ces formules.

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