Extraire une chaine de caractère

nonoTT

XLDnaute Junior
Bonjour, je recherche une formule de calcul qui me permet d'extraire un texte située à l'intérieur d'une cellule et délimitée par 2 virgules.
Ce que j'ai déjà fait :
=STXT(B2;1;TROUVE(",";B2;1)-1)
Qui me permet d'extraire par exemple de la chaîne suivante : "Sodium, ISE indirecte, Roche Cobas 6000, Réactif dédié, mmol/L, Pas de température spécifiée" la chaîne de texte "Sodium".
J'aimerais pouvoir extraire la chaîne de texte "Roche Cobas 6000" dans cette même cellule et les autres cellules concernées.

Voir exemple ci-joint.
Cordialement.
 

Pièces jointes

  • exemple.xlsx
    10.5 KB · Affichages: 107
  • exemple.xlsx
    10.5 KB · Affichages: 127
  • exemple.xlsx
    10.5 KB · Affichages: 119
G

Guest

Guest
Re : Extraire une chaine de caractère

Bonjour,

Sélectionne ta colonne sans l'en-tête, Onglet: Données -> Convertir

A l'étape 2 de l'assistant sélectionne la virgule comme séparateur


Ce lien n'existe plus

Valider,

Tes données seront éclatées en colonne distinctes.

A+
 

nonoTT

XLDnaute Junior
Re : Extraire une chaine de caractère

Pas mal du tout. Cependant ma formule est incluse dans une macro d'exploitatoin des résultats.
Serait il possible d'avoir une formule pour le faire. Car je doute de pouvoir intégrer cela dans une macro.
Cordialement.
Arnaud
 

Efgé

XLDnaute Barbatruc
Re : Extraire une chaine de caractère

Bonjour nonoTT_Bonjour Hasco :)__une proposition a mis chemin : Fonction personnelle.___Cordialement
 

Pièces jointes

  • exemple(2).xls
    34.5 KB · Affichages: 120
  • exemple(2).xls
    34.5 KB · Affichages: 125
  • exemple(2).xls
    34.5 KB · Affichages: 103

nonoTT

XLDnaute Junior
Re : Extraire une chaine de caractère

Re Bonjour
J'essaie d'intégrer le code à ma macro globale mais je n'ai pas de résultats. Je pense que je ne dois pas savoir la déclarer ?
ci joint le texte de la macro
Code:
Sub table_correspondance()

    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A1").Value = "Paramètre"
    
    Columns("B:B").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("B1").Value = "Automate"

Dim i, derlig As Integer
derlig = Range("C65536").End(xlUp).Row
For i = 2 To derlig

If Range("C" & i) <> "" Then
Range("A" & i).Activate
ActiveCell.FormulaR1C1 = "=MID(RC[1],1,FIND("","",RC[1],1)-1)"
Range("B" & i).Activate
ActiveCell.FormulaR1C1 = "=apres_virgule(RC[1],3)"
End If
Next i
end sub
 

pierrejean

XLDnaute Barbatruc
Re : Extraire une chaine de caractère

Re

Ta macro corrigée (sur pour ce qui concene apres_virgule , moins pour MID.....)
 

Pièces jointes

  • nonoTT_exemple.xlsm
    17.5 KB · Affichages: 67
  • nonoTT_exemple.xlsm
    17.5 KB · Affichages: 78
  • nonoTT_exemple.xlsm
    17.5 KB · Affichages: 77

Efgé

XLDnaute Barbatruc
Re : Extraire une chaine de caractère

Re à tous_Pourquoi passer par des formules ?_Une proposition:_Cordialement
 

Pièces jointes

  • exemple(3).xls
    34.5 KB · Affichages: 87
  • exemple(3).xls
    34.5 KB · Affichages: 99
  • exemple(3).xls
    34.5 KB · Affichages: 93

nonoTT

XLDnaute Junior
Re : Extraire une chaine de caractère

En fait je viens de me rendre compte (milles excuses) que le dernier exemple que l'on m'a envoyé renvoit des résultats satisfaisants mais pas à chaque fois voir exemple.
La chaîne de caractère que je souhaite extraire est toujours délimitée par une virgule avant et après mais je souhaite l'extraire depuis la fin de la chaine de caractère complète.
Voir exemples + macro
Résultat obtenu = résultat obtenu avec la macro actuelle
Résultat attendu = résultat que je souhaite obtenir.
Le seul moyen d'y parvenir est d'extraire depuis la fin de la chaîne de caractère.
voici la macro
Code:
Sub table_correspondance()
     
' As Long car depuis Xl 2007 Integer peut ne pas suffire
Dim i As Long, derlig As Long
derlig = Range("A" & Rows.Count).End(xlUp).Row
'Pas besoin de sélectionner
Columns("A:A").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1").Value = "Paramètre"
Range("B1").Value = "Automate"
For i = 2 To derlig
    If Range("C" & i) <> "" Then
        Range("A" & i).Value = Split(Range("C" & i), ",")(0)
        Range("B" & i).Value = Split(Range("C" & i), ",")(2)
    End If
Next i

End Sub
Cordialement
 

Pièces jointes

  • Resultat obtenu.xlsm
    15.1 KB · Affichages: 85
  • Resultat attendu.xlsx
    8.7 KB · Affichages: 79

Discussions similaires

Statistiques des forums

Discussions
312 214
Messages
2 086 311
Membres
103 175
dernier inscrit
abcc