Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

formule d'extraction de texte

8 réponses
Avatar
gilles
bonjour,
j'aimerais extraire du groupe ci dessous
AEB01000 | BUTEE ARRET WAGO 249 116 | 166640 | | MR03 | 20.00| 20.00| 0.00|
U | 0.2700 | 0.00|
AEB01000 je sais faire
BUTEE ARRET WAGO 249 116
166640
MR03
20.00
....
je sais pas faire
Si un grand manitou a le savoir, à ce sujet , merci du temps qu'elle ou il
me consacrera
gilles
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...

8 réponses

Avatar
Francois L
gilles a écrit :

Bonjour,

A priori, on est en face d'un fichier avec délimiteur, donc "Données",
"Convertir" devrait faire l'affaire en choisissant le bon délimiteur.

--
François L

bonjour,
j'aimerais extraire du groupe ci dessous
AEB01000 | BUTEE ARRET WAGO 249 116 | 166640 | | MR03 | 20.00| 20.00| 0.00|
U | 0.2700 | 0.00|
AEB01000 je sais faire
BUTEE ARRET WAGO 249 116
166640
MR03
20.00
....
je sais pas faire
Si un grand manitou a le savoir, à ce sujet , merci du temps qu'elle ou il
me consacrera
gilles


Avatar
gilles
Merci François
ça me semble nickel
Toutefois, je continue à chercher, car 2 ou 3 fois/sem, je souhaite mettre
en xl un tableau en .txt issu d'une extraction analytique en pdf
donc le manip convertir, (que je ne connaissais pas) prendra un peu de
temps, et je pensais pluto à une formule par groupe, qui extrairait à partir
du 1er | puis à partir du 2ème |, et ainsi de suite
j'aurais alors un fichier type avec mes formules sur les colonnes B,C,D....,
et en A je collerai les lignes issues du.txt
je suis pas sur d'etre très clair
MERCI
à+
Gilles
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...


"Francois L" a écrit :

gilles a écrit :

Bonjour,

A priori, on est en face d'un fichier avec délimiteur, donc "Données",
"Convertir" devrait faire l'affaire en choisissant le bon délimiteur.

--
François L

> bonjour,
> j'aimerais extraire du groupe ci dessous
> AEB01000 | BUTEE ARRET WAGO 249 116 | 166640 | | MR03 | 20.00| 20.00| 0.00|
> U | 0.2700 | 0.00|
> AEB01000 je sais faire
> BUTEE ARRET WAGO 249 116
> 166640
> MR03
> 20.00
> ....
> je sais pas faire
> Si un grand manitou a le savoir, à ce sujet , merci du temps qu'elle ou il
> me consacrera
> gilles



Avatar
Francois L
gilles a écrit :

Re,

Est-ce que tu as toujours un nombre constant de délimiteurs dans ton
champ texte ?

--
François L

Merci François
ça me semble nickel
Toutefois, je continue à chercher, car 2 ou 3 fois/sem, je souhaite mettre
en xl un tableau en .txt issu d'une extraction analytique en pdf
donc le manip convertir, (que je ne connaissais pas) prendra un peu de
temps, et je pensais pluto à une formule par groupe, qui extrairait à partir
du 1er | puis à partir du 2ème |, et ainsi de suite
j'aurais alors un fichier type avec mes formules sur les colonnes B,C,D....,
et en A je collerai les lignes issues du.txt
je suis pas sur d'etre très clair
MERCI
à+
Gilles


Avatar
Minick
Salut,

Si une petite fonction vba peut te convenir je te propose ceci (a mettre
dans un module):

Function Eclate(Cellule As Range, Index As Byte)
Dim Detail As Variant

Application.Volatile
Detail = Split(Cellule.Value, "|")

If UBound(Detail) <> -1 Then
Eclate = Trim(Detail(Index - 1))
Else
Eclate = ""
End If
End Function

Pour l'utilisation si chaine en A1:
ìlate(A1, 1) --> pour la sous chaine 1
ìlate(A1, 2) --> pour la sous chaine 2
etc...

Minick
++

gilles a écrit :
Merci François
ça me semble nickel
Toutefois, je continue à chercher, car 2 ou 3 fois/sem, je souhaite mettre
en xl un tableau en .txt issu d'une extraction analytique en pdf
donc le manip convertir, (que je ne connaissais pas) prendra un peu de
temps, et je pensais pluto à une formule par groupe, qui extrairait à partir
du 1er | puis à partir du 2ème |, et ainsi de suite
j'aurais alors un fichier type avec mes formules sur les colonnes B,C,D....,
et en A je collerai les lignes issues du.txt
je suis pas sur d'etre très clair
MERCI
à+
Gilles


Avatar
gilles
SALUT MINICK
nickel !!
c'est absolument ce que je cherchais
si j'osais je pousserais bien jusqu'à te demander kek explications succintes
sur le détail des lignes du code
Entre François qui m'a appris l'utilisation de convertir et ton code...
J'avais réussi à sortir kekchose à partir des fonction combinées gauche et
droite, mais là c'est nettement mieux
un grand merci à vous 2
gilles
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...


"Minick" a écrit :

Salut,

Si une petite fonction vba peut te convenir je te propose ceci (a mettre
dans un module):

Function Eclate(Cellule As Range, Index As Byte)
Dim Detail As Variant

Application.Volatile
Detail = Split(Cellule.Value, "|")

If UBound(Detail) <> -1 Then
Eclate = Trim(Detail(Index - 1))
Else
Eclate = ""
End If
End Function

Pour l'utilisation si chaine en A1:
ìlate(A1, 1) --> pour la sous chaine 1
ìlate(A1, 2) --> pour la sous chaine 2
etc...

Minick
++

gilles a écrit :
> Merci François
> ça me semble nickel
> Toutefois, je continue à chercher, car 2 ou 3 fois/sem, je souhaite mettre
> en xl un tableau en .txt issu d'une extraction analytique en pdf
> donc le manip convertir, (que je ne connaissais pas) prendra un peu de
> temps, et je pensais pluto à une formule par groupe, qui extrairait à partir
> du 1er | puis à partir du 2ème |, et ainsi de suite
> j'aurais alors un fichier type avec mes formules sur les colonnes B,C,D....,
> et en A je collerai les lignes issues du.txt
> je suis pas sur d'etre très clair
> MERCI
> à+
> Gilles



Avatar
Minick
Re,

Quelques explications...


Function Eclate(Cellule As Range, Index As Byte)
Dim Detail As Variant

' Permet de recalculer la fonction a chaque fois que la feuille est
calculee
Application.Volatile

'Cree un tableau avec chaque sous chaine avec comme separateur le '|'
Detail = Split(Cellule.Value, "|")

' si le tableau retourne n'est pas vide
If UBound(Detail) <> -1 Then

' la fonction retourne la sous chaine voulu
' index -1 car les tableaux sont indexes de 0 a n
Eclate = Trim(Detail(Index - 1))

' si le tableau est vide
Else

' on retourne une chaine vide, si on ne fait pas cela 0 sera retourne
Eclate = ""
End If
End Function

Voila j'espere que cela te convient.

Minick
++

gilles a écrit :
SALUT MINICK
nickel !!
c'est absolument ce que je cherchais
si j'osais je pousserais bien jusqu'à te demander kek explications succintes
sur le détail des lignes du code
Entre François qui m'a appris l'utilisation de convertir et ton code...
J'avais réussi à sortir kekchose à partir des fonction combinées gauche et
droite, mais là c'est nettement mieux
un grand merci à vous 2
gilles


Avatar
gilles
très fort!
encore merci pour ton aide
je pense que je ne pourrai malheureusement pas te renvoyer l'ascenseur, car
j'ai pas le niveau!!
merci
à+
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...


"Minick" a écrit :

Re,

Quelques explications...


Function Eclate(Cellule As Range, Index As Byte)
Dim Detail As Variant

' Permet de recalculer la fonction a chaque fois que la feuille est
calculee
Application.Volatile

'Cree un tableau avec chaque sous chaine avec comme separateur le '|'
Detail = Split(Cellule.Value, "|")

' si le tableau retourne n'est pas vide
If UBound(Detail) <> -1 Then

' la fonction retourne la sous chaine voulu
' index -1 car les tableaux sont indexes de 0 a n
Eclate = Trim(Detail(Index - 1))

' si le tableau est vide
Else

' on retourne une chaine vide, si on ne fait pas cela 0 sera retourne
Eclate = ""
End If
End Function

Voila j'espere que cela te convient.

Minick
++

gilles a écrit :
> SALUT MINICK
> nickel !!
> c'est absolument ce que je cherchais
> si j'osais je pousserais bien jusqu'à te demander kek explications succintes
> sur le détail des lignes du code
> Entre François qui m'a appris l'utilisation de convertir et ton code...
> J'avais réussi à sortir kekchose à partir des fonction combinées gauche et
> droite, mais là c'est nettement mieux
> un grand merci à vous 2
> gilles



Avatar
Papyjac
Bonjour Minick,

Oui, c'est bien avec des commentaires, il manque peut-être le type de la
fonction, et les commentaires explicxatifs des 2 paramètres et de la
variable locale Detail

Function EclaterCellule(pCellule As Range, pIndex As Byte) as String
'_Eclater une cellule en sous-chaines de texte séparées par '|'
' pCellule : Cellule à éclater
' pIndex : Indice de la sous-chaine cherchée
'-
Dim uCellule As Variant 'Tableau des sous-chaines
'-
EclaterCellule= empty 'Sous-chaine
non trouvée
Application.Volatile 'Exécuter la
fonction a chaque recalcul
uCellule = Split(pCellule.Value, "|") 'Remplir le
tableau avec chaque sous chaine
'Vérifier le contenu du tableau
If UBound(uCellule ) <> -1 Then _
EclaterCellule= Trim(uCellule (pIndex - 1)) 'Récupérer la
sous chaine correspondant à l'index
End Function

Quitte à donner la solution, on peut aussi donner de bonnes habitudes.
Ne pas économiser l'usage de l'aide VBA (Cliquer sur l'instruction, puis
touche F1)
A titre personnel, je préfixe aussi les noms de variables en fonction de
leur portée, pour un repérage plus rapide.

--
P a p y j a c

"Minick" a écrit dans le message de
news:e7UICkg$
Re,

Quelques explications...


Function Eclate(Cellule As Range, Index As Byte)
Dim Detail As Variant

' Permet de recalculer la fonction a chaque fois que la feuille est
calculee
Application.Volatile

'Cree un tableau avec chaque sous chaine avec comme separateur le '|'
Detail = Split(Cellule.Value, "|")

' si le tableau retourne n'est pas vide
If UBound(Detail) <> -1 Then

' la fonction retourne la sous chaine voulu
' index -1 car les tableaux sont indexes de 0 a n
Eclate = Trim(Detail(Index - 1))

' si le tableau est vide
Else

' on retourne une chaine vide, si on ne fait pas cela 0 sera retourne
Eclate = ""
End If
End Function

Voila j'espere que cela te convient.

Minick
++

gilles a écrit :
SALUT MINICK
nickel !!
c'est absolument ce que je cherchais
si j'osais je pousserais bien jusqu'à te demander kek explications
succintes sur le détail des lignes du code Entre François qui m'a appris
l'utilisation de convertir et ton code...
J'avais réussi à sortir kekchose à partir des fonction combinées gauche
et droite, mais là c'est nettement mieux
un grand merci à vous 2
gilles