Extraire du texte avec plusieurs conditions ??

fnony

XLDnaute Occasionnel
Bonjour a tous

Après recherches intensives sur le forum, et multiples tests, je n'ai pas trouvé de réponses (ou pas su comment faire )..

Mon pb N° 1 me semble solvable..
Je recherche a extraire du texte d'une cellule mais j'ai plusieurs conditions, et je n'arrive pas à les imbriquer pour que ça marche
colonne A les libellés :
k2212890/NFORTA NV:RO NEGRO
J4100708 /HYUNDA MERCHANT

Colonne B
je cherche a extraire le N° de dossier :
=STXT(A2;CHERCHE("k";A2;1);8) ...

ça marche pour K mais je n'arrive pas à dire que si c'est "J" ça doit le faire aussi ??
Mon pb 2 me semble relevé de l'utopie
si dans le libellé il y a 2 fois (ou plus) la même lettre (ex: le "K") je ne veux extraire que mon N° de dossier composé systématiquement d'une lettre suivi de 8 chiffres..

Un petit fichier en PJ..


Et merci beaucoup de votre aide, surtout sur mon pb 1

A bientôt

Francois
 

Pièces jointes

  • Extraire texteFanch.xlsx
    11.4 KB · Affichages: 105

kjin

XLDnaute Barbatruc
Re : Extraire du texte avec plusieurs conditions ??

Bonjour,
Il me semble que c'est le slash (/) qu'il faut chercher non ?
Code:
=STXT(A2;2;CHERCHE("/";A2;1)-2)


Edit : je n'ai pas ouvert le fichier et pour cause...


A+
kjin
 
Dernière édition:

Fred0o

XLDnaute Barbatruc
Re : Extraire du texte avec plusieurs conditions ??

Bonjour fnony,

Pour ton pb n°1, voici une formule :
Code:
=SI(ESTERREUR(CHERCHE("k";A5;1));SI(ESTERREUR(CHERCHE("i";A5;1));STXT(A5;CHERCHE("j";A5;1);8);STXT(A5;CHERCHE("i";A5;1);8));STXT(A5;CHERCHE("k";A5;1);8))
A mettre en B2 et à tirer vers le bas.

Pour ton pb n°2, sans passer par macro, la formule risque d'être très longue. Mais je pense que certains spécialistes formuliens peuvent trouver plus simple.

A+
 

david84

XLDnaute Barbatruc
Re : Extraire du texte avec plusieurs conditions ??

Bonjour,
formule matricielle à valider par Ctrl, Maj et entrée :
Code:
=SUBSTITUE(STXT(A2;MIN(SI((CODE(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1))>47)*(CODE(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1))<58);LIGNE(INDIRECT("1:"&NBCAR(A2)))))-1;MAX(SI((CODE(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1))>47)*(CODE(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1))<58);LIGNE(INDIRECT("1:"&NBCAR(A2))))));"/";"")
A+
 
Dernière édition:

fnony

XLDnaute Occasionnel
Re : Extraire du texte avec plusieurs conditions ??

@ Fred0o
@ david84

Déja!! Bravo et merci pour votre rapidité
Fred0o: ta formule fonctionne sauf pour certaines cellules et je ne comprends pas pourquoi:
ex: si libellé: K1115680/TRACTION NORMANDE FS
alors résultat = Valeur!
mais en tout cas ta formule affine mes résultats c'est super merci . et si tu peux m'expliquer la fonction (esterreur) c'est cool.. et comment l'utiliser..

La soluce de david84 (bien que je ne comprenne pas la formule) marche bien.
Cela affine encore plus les résultats, c'est super merci.
si tu as un peu de temps pour m'expliquer ta formule??


Bon merci a tous de vos pertinents remarques et formules. por mon pb N°2 je vais attendre de voir si j'ai une réponse.. mais vous m'avez super aidé c'est cool

bon week end
françois
 

david84

XLDnaute Barbatruc
Re : Extraire du texte avec plusieurs conditions ??

Re
sinon avec une fonction personnalisée :
Code:
Function Tester(valeur As String)
Dim i&, temp, test1, test2
    For i = 1 To Len(valeur)
        test1 = Mid(valeur, i, 1)
        test2 = Mid(valeur, i + 1, 1)
        If Not IsNumeric(test1) And IsNumeric(test2) Then Tester = test1
        If IsNumeric(test1) Then Tester = Tester & test1
    Next i
End Function
A+
 

david84

XLDnaute Barbatruc
Re : Extraire du texte avec plusieurs conditions ??

Re
Alt+F11 pour ouvrir Visual Basic=>cliquer sur Insertion=>module et coller la fonction dans la fenêtre.
Retourner sur la feuille Excel, se placer par exemple en B2, taper "=Tester(A2) et valider puis tirer ta formule vers le bas.
Une précision concernant ma formule et ma fonction: elles ne tiennent pas compte du fait que ce soit un i, j ou k placé devant la suite numérique. Elle sélectionne la lettre placée devant cette suite qu'elle quelle soit.
Si la suite numérique dépasse 7, les fonctions te ramèneront quand même l'ensemble de cette suite.
Si c'est un problème, il faudra modifier en conséquence.
A+
 
Dernière édition:

fnony

XLDnaute Occasionnel
Re : Extraire du texte avec plusieurs conditions ??

Bonsoir david84

j'ai été happé..... pour aller faire des courses :(
essentielles mais bon....

Merci pour la fonction, elle fonctionne parfaitement...mais j'ai moins d'aléas avec ta précédente formule que je vais garder..
le fichier donné étant pourri à la base je me trouve avec 10% d'erreur de recherche ce qui est acceptable...sauf a développer un truc vraiment compliqué..

Encore merci, et (excuse moi de me répéter) si tu as deux minute pour la compréhension de ta formule précedente, je suis preneur

Bon we et bonne soirée

François
 

JNP

XLDnaute Barbatruc
Re : Extraire du texte avec plusieurs conditions ??

Bonjour le fil :),
Pourquoi n'es-tu pas passé par RegExp, David, toi qui le maitrise très bien :p ?
Code:
Function Teste(ATester As String) As String
Application.Volatile
With CreateObject("vbscript.regexp")
    .Global = False
    .Pattern = "[IJK]\d{7}"
    If .Test(ATester) Then Teste = .Execute(ATester)(0)
End With
End Function
Bon dimanche :cool:
 

Pièces jointes

  • Extraire texteFanch RegExp.xlsm
    19.4 KB · Affichages: 74

fnony

XLDnaute Occasionnel
Re : Extraire du texte avec plusieurs conditions ??

Bonjour JNP et David

Désolé du retard, je n'avais vu qu'il y avait d'autres réponses.....
Merci à David pour ses explications, je vais essayer de décortiquer ça au calme... En tout cas ça plait beaucoup .... Et on m'a redonné un fichier ....

JNP, merci pour ton code et pour la fonction RegExp..(trop fort pour moi ça) :)
Une petite question néanmoins; en ayant essayé de comprendre un peu la fonction...si je veux rajouter une autre lettre dans la ligne .Pattern = "[IJK]\d{7}"
- par exemple un A je le rajoute a la suite dans les crochets? [AIJK] ??
- mais si je veux rajouter un groupe de lettre : exemple K7A ou K5A, comment je peux faire?
j'ai essayé mais du coup je n'ai plus les même résultats car je n'ai en ce cas que 5 chiffres après "mon groupe" et je suppose que le \{d7} doit être modifié en conséquence..
Du coup, est ce possible de mettre à la suite une autre condition??
Merci de vos réponses avisés.
 

Pièces jointes

  • Copie de Extraire texteFanch RegExp-1.xlsm
    17.4 KB · Affichages: 73

Discussions similaires

Statistiques des forums

Discussions
312 611
Messages
2 090 219
Membres
104 452
dernier inscrit
hamzamounir