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
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Je cherche à extraire toutes la chaîne de caractère se trouvant à droite du dernier "-"
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?
sélectionner la colonne
Rechercher et selectionner
Rechercher : *-
Remplacer par : (vider ce champ)
upload_2017-8-25_12-53-1.png
 
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.
:rolleyes:
Quoique : :confused::(:rolleyes:
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)

;):D
 
Dernière édition:

Statistiques des forums

Discussions
315 108
Messages
2 116 276
Membres
112 711
dernier inscrit
EBEUR