extraction de données ds 1 chaine de caractere

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jojo2006

XLDnaute Occasionnel
Bonjour à tous,

voila mon probleme, j'ai stocké ( dans mon programme vba) le contenu d'un texte dans une variable string. Et je souhaiterai extraire certaine valeurs

supposons:

dim texte as string

texte= " blababla donnée 1 : valeur1 donnéeeee 2: valeuuuuur2 dooonnnée 3 : vaaaaleur3 blablabla"

Je dois extraire valeur1, valeuuuuur2,vaaaaleur3. Vous aurez compris que les longueur de caractère des valeur sont variables alors que les longueur de caractère des données en bleu sont fixes

En fait je cherche 1 formule du genre:

valeur1= formule( "donnée 1 :";"donnéeeee 2:")
valeuuuuur2 = formule( "donnéeeee 2:";"dooonnnée 3 :")



J'espere que je n'ai pas trop été confu.

Je vous remercie d'avance si vous pouvez m'aider

Bonne semaine (pour ceux qui travaillent) et bonne vacance pour les autres

jojo
 
Re : extraction de données ds 1 chaine de caractere

bonsoir jojo

c'est pas tres beau comme code mais ca devrait te dépanner :

Code:
Dim texte As String
Dim t As String
Dim tablo
Dim i As Byte

texte = " blababla donnée 1 : valeur1 donnéeeee 2: valeuuuuur2 dooonnnée 3 : vaaaaleur3 blablabla"

tablo = Split(texte, ":") 'split la variable tablo à l'aide du separateur ":"

For i = 1 To UBound(tablo) 'boucle de l'element 1 au dernier
    t = LTrim(tablo(i)) 'supprime le premier espace
    tablo(i) = Trim(Mid(t, 1, InStr(1, t, " "))) 'remplace le texte
    MsgBox tablo(i) 'test
    Cells(i, 1) = tablo(i)
Next i

bye
 
Re : extraction de données ds 1 chaine de caractere

Salut jojo2006 et le forum
une recherche sur ":" pourrait-elle faire l'affaire ?
L'instruction Instr() permettrait de savoir, et comme les Données ont un nombre de caractères connus, il doit être possible de calibrer le décalage.
Mais j'avoue que sans exemple de ce qu'on doit rechercher je suis un peu confus.
A+
 
Re : extraction de données ds 1 chaine de caractere

Bonjour à tous,

merci de votre interet pour mon probleme.

Pour répondre à votre question le séparateur ":" n'est pas suffisant car dans le blabla il est possible que le ":" soit présent.

C'est pour cela qu'il faut se baser sur les séparateurs "donnée 1 :" "donnéeeee 2:" ET "dooonnnée 3 :" qui eux sont fixent et plus précis pour extraire les valeur 1 2 et 3.

on peut prendre un exemple bete:

texte: "bonjour je suis un garcon passionné par l'art contemporain, coordonnées : Nom : Alexandre Mail : alexandre@voila.fr Tel : 0611223344 "


Voila, dans cet exemple il faut extraire les valeurs:

Alexandre
alexandre@voila.fr
0611223344

Merci à tous pour votre aide
 
Re : extraction de données ds 1 chaine de caractere

bonjour jojo2006, Hervé, Gorfael,


je te propose cette fonction :
Code:
Public Function GetValue(laChaine As String, laClef As String) As String
If InStr(laChaine, laClef) = 0 Then Exit Function
Dim tabStr() As String, i As Integer
GetValue = laChaine
GetValue = Right(GetValue, Len(GetValue) - InStr(GetValue, laClef) + 1 - Len(laClef))
tabStr = Split(Replace(GetValue, ":", vbNullString), " ")
For i = LBound(tabStr) To UBound(tabStr)
    GetValue = tabStr(i)
    If GetValue <> vbNullString Then Exit Function
Next i
End Function
à utiliser =GetValue(<laChaineOriginale>;<laClef>)

a+
 

Pièces jointes

Re : extraction de données ds 1 chaine de caractere

Bonjour à tous,

merci pour ton fichier mromain qui marche très bien. seul Hic

J'ai juste un dernier probleme, en fait dans le texte que je dois traiter il y a des retours à ligne soit le texte cité plus haut:

"bonjour je suis un garcon passionné par l'art contemporain,
coordonnées :
Nom : Alexandre
Mail : alexandre@voila.fr
Tel : 0611223344 "


Du coup avec la fonction de mromain j'obtiens:

valeur 1 : "Alexandre Mail" au lieu de "Alexandre"
valeur 2 : "alexandre@voila.fr Tel" au lieu de "alexandre@voila.fr"


Est ce que ca viendrai pas de la fonction split, car en mode pas à pas la variable tabstr ne prend pas les bonnes valeur.

Ceci dit lorsqu'il n' y a pas de retour à ligne la fonction getvalue fonctionne parfaitement


Merci à tous pour votre aide

jojo
 
Re : extraction de données ds 1 chaine de caractere

Rebonsoir,

je pense avoir solutionner le probleme de retour à la ligne.

J'ai simplement rajouté:

GetValue = Replace(GetValue, vbCrLf, " ")


avant la fonction split

tabStr = Split(Replace(GetValue, ":", vbNullString), " ")


Ca fonctionne bien.

Vous confirmer que c'est correct ?

Encore merci à tous

jojo
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

N
Réponses
17
Affichages
3 K
ninajams
N
Retour