Probleme extraction d’une partie de cellule

Gilles

XLDnaute Nouveau
Bonjour à tous
Voilà, pour me faciliter la tâche dans mon travail, je souhaite faire l’extraction d’une partie de cellule.
J’ai une formule, mais non fiable car elle ne me donne pas le résultat souhaité sur chaque cellule.
De plus, je n’arrive pas à passer ma cellule en format nombre.
Cellule A1 = 3 p + 88|388|HC - HI - C|N.
Je souhaite extraire le nombre qui se trouve entre le + et la première | .
J’ai donc cette formule :
=GAUCHE(STXT(A1;CHERCHE("+";A1)+1;100);CHERCHE("|";STXT(A1;CHERCHE("|";A1)+1;100))-1)

Je joins un fichier avec différent exemple, en noir le fichier de base, en rouge avec la formule et en bleu le résultat attendu.
Merci
 

Pièces jointes

  • EXEMPLE .xls
    47.5 KB · Affichages: 41
  • EXEMPLE .xls
    47.5 KB · Affichages: 39
  • EXEMPLE .xls
    47.5 KB · Affichages: 47

chris

XLDnaute Barbatruc
Re : Probleme extraction d’une partie de cellule

Bonjour

En D3 puis recopier sur les autres
Code:
=SI(NON(ESTNUM(CHERCHE("+";A3)));"";SUPPRESPACE(STXT(A3;CHERCHE("+";A3)+1;CHERCHE("|";A3)-CHERCHE("+";A3)-1))*1)

Il y a sans doute plus court...
 

chris

XLDnaute Barbatruc
Re : Probleme extraction d’une partie de cellule

Re
Coucou Modeste Geedee :)


Tu as dû mal recopier la formule car chez moi elle fonctionne, la preuve... dans le fichier joint.


Modeste : ta formule ne semble pas marcher quand la source est vide ou le + absent...
 

Pièces jointes

  • texte.xls
    47.5 KB · Affichages: 23
  • texte.xls
    47.5 KB · Affichages: 31
  • texte.xls
    47.5 KB · Affichages: 32
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Probleme extraction d’une partie de cellule

Bonsour®
en D3 :
=SI(ESTERREUR(1*STXT(GAUCHE(A3;TROUVE("|";A3)-1);TROUVE("+";A3)+1;9^9));0;1*STXT(GAUCHE(A3;TROUVE("|";A3)-1);TROUVE("+";A3)+1;9^9))

avec Excel 2007 et +
=SIERREUR(1*STXT(GAUCHE(A3;TROUVE("|";A3)-1);TROUVE("+";A3)+1;9^9));0)
 

Modeste geedee

XLDnaute Barbatruc
Re : Probleme extraction d’une partie de cellule

Bonsour®
chris;1421772 Modeste : ta formule ne semble pas marcher quand la source est vide ou le + absent...[/QUOTE à dit:
en D3 :
=SI(ESTERREUR(1*STXT(GAUCHE(A3;TROUVE("|";A3)-1);TROUVE("+";A3)+1;9^9));0;1*STXT(GAUCHE(A3;TROUVE("|";A3)-1);TROUVE("+";A3)+1;9^9))

:rolleyes:
avec Excel 2007 et +
=SIERREUR(1*STXT(GAUCHE(A3;TROUVE("|";A3)-1);TROUVE("+";A3)+1;9^9));0)
 

Gilles

XLDnaute Nouveau
Re : Probleme extraction d’une partie de cellule

Bonjour Chris
Bonjour Modeste geedee

Merci a tous deux , mais j'ai toujours un probleme,
je ne sais pas si cela vient du fait d'avoir Excel 2010, mais pour le moment je n'ai aucune formule qui me donne le resulta attendu .
 

chris

XLDnaute Barbatruc
Re : Probleme extraction d’une partie de cellule

Bonjour

Le fichier joint au post #5 a été fait sous 2010... mais peut-être le fichier réel n'a-t-il rien à voir avec l'exemple...

Remplacer cependant "" par 0 dans la formule pour être conforme à ton exemple.
 
Dernière édition:

jp65

XLDnaute Junior
Re : Probleme extraction d’une partie de cellule

Bonjour Gilles ,bonjour le forum

Essaye le code dans le fichier joint.

Bonne soirée

JP
 

Pièces jointes

  • test (2).xlsm
    18.1 KB · Affichages: 34
  • test (2).xlsm
    18.1 KB · Affichages: 43
  • test (2).xlsm
    18.1 KB · Affichages: 33

Modeste geedee

XLDnaute Barbatruc
Re : Probleme extraction d’une partie de cellule

Bonsour®
Bonjour Modeste geedee
mais j'ai toujours un probleme,
je ne sais pas si cela vient du fait d'avoir Excel 2010, mais pour le moment je n'ai aucune formule qui me donne le resulta attendu .
Capture.jpg
excel 2007 et +
=SIERREUR(1*(STXT(GAUCHE(A3;TROUVE("|";A3)-1);TROUVE("+";A3)+1;9^9));0)
Excel 2003 et -
=SI(ESTERREUR(1*(STXT(GAUCHE(A3;TROUVE("|";A3)-1);TROUVE("+";A3)+1;9^9)));0;1*(STXT(GAUCHE(A3;TROUVE("|";A3)-1);TROUVE("+";A3)+1;9^9)))
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    64.2 KB · Affichages: 28
  • Capture.jpg
    Capture.jpg
    64.2 KB · Affichages: 29

Si...

XLDnaute Barbatruc
Re : Probleme extraction d’une partie de cellule

salut

un exemple avec une nouvelle fonction (plus les formules de Chris et Modestegeedee :D).
VB:
Function isole(R As Range)
  Dim n As Byte, S As String
  If R = "" Then
     isole = 0
  Else
    n = InStr(R, "|"): S = ""
    Do
      n = n - 1
      S = Mid(R, n, 1) & S
    Loop While IsNumeric(Mid(R, n, 1))
    isole = IIf(IsNumeric(S), S, 0)
  End If
End Function
 

Pièces jointes

  • SousChaine .xls
    54.5 KB · Affichages: 36

Discussions similaires

Réponses
6
Affichages
326

Statistiques des forums

Discussions
312 149
Messages
2 085 771
Membres
102 970
dernier inscrit
JMaurice