Extraction de données d'un chaine

JujuWol

XLDnaute Nouveau
Bonjour,

Même après avoir rechercher sur le forum je n'ai pas trouvé de réponse répondant spécifiquement à mon problème.

J'ai une chaine de caractère de ce type :

4014,0,0,1082671,932970,197,1862,65535,0,982,14321,464,4983,70*52
4014,0,0,1082671,9329763052,197,1864,65535,0,982,12647,310,5222,-32*78
4014,0,0,1082671,932976368,197,1866,65535,0,982,9036,293,4981,-77

Pour lesquelles les valeurs de toutes les infos "entre-virgules" peuvent varier : longueur différente, chiffres ou lettres etc....

Le but est d'extraire l'antépénultième valeur de cette chaîne donc pour les trois lignes ci-dessus : 464, 310 et 293.

Les chaînes étant susceptibles de varier en longueur, par les classiques left ou right ou mid je n'ai pas trouvé de solutions. J'ai essayé avec la fonction "InStr" mais je ne sais pas exactement comment la paramétrer.

Je pense qu'il faudrait faire un comptage des virgules et récupérer la valeur comprise entre la 11ème et la 12ème virgule mais est-ce possible sans passer par du VBA ? Si c'est du VBA un petit coup de pouce serait le bienvenu. ;-)

Merci d'avance pour toutes vos réponses

Julien
 

hoerwind

XLDnaute Barbatruc
Re : Extraction de données d'un chaine

Bonjour et bienvenu sur le forum, salut pierrejean,

Vois si la formule en pièce jointe peut te convenir.

Pour raccourcir la formule les SUBSTITUE ont été nommés.
 

Pièces jointes

  • ExtractionEntreCaractèresPrédéfinis.xls
    22 KB · Affichages: 46

JujuWol

XLDnaute Nouveau
Re : Extraction de données d'un chaine

Merci à tous les deux pour ces réponses.
La réponse de hoerwind fonctionne mais malheureusement pas celle de pierrejean.
Cette dernière est plus interessante pour moi et je ne sais pas pourquoi elle ne fonctionne pas.
A l'ouverture du fichier XLS j'ai une erreur sur la signature des macros, comme souvent. Je change les paramètres de sécurité, mais meme avec cela elle ne fonctionne pas.

La réponse de PierreJean est plus interessante car elle fait appelle à moins de fonction. Je m'explique, je travaille avec un logiciel de cartographie qui gère des tables de valeurs et pour lesquelles je peux être amené à faire soit du VBA soit du calcul avec des fonctions simples et malheureusement la fonction "Substitue" ou "Cherche" n'en font pas parties...

Je ne dispose en fait que de ces fonctions (ou du VBA bien sur...)

Asc ( ) Chr ( ) Format ( ) InStr ( ) LCase ( ) Left ( )
Len ( ) LTrim ( ) Mid ( ) QBColor ( ) Right ( ) RTrim ( )
StrConv ( ) Space ( ) String ( ) Trim ( ) UCase ( )

Comment faire fonctionner la solution de PierreJean ou est-il possible d'y arriver avec ces fonctions ci-dessus ?

Merci encore à tous les deux.

Julien
 

JujuWol

XLDnaute Nouveau
Re : Extraction de données d'un chaine

En fait la fonction de PierreJean fonctionne, il manquait seulement un signe "multiplier" dans la formule qui faisait un message d'erreur dans la cellule.

Je teste et vous dis si ça marche !

Merci encore

Julien
 

JujuWol

XLDnaute Nouveau
Re : Extraction de données d'un chaine

C'est bon ça fonctionne...:)
La bonne formule VBA étant : (reprise du code de PierreJean)

Dim Mes
Mes = Split([Mesure], ",")

Et dans ma zone d'affectation de valeurs :

Mes(11)

;)

Merci encore

Julien
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet