Reformatage de données (chaînes de caractères à tronquer)

LNRO

XLDnaute Nouveau
Bonjour,

J'ai une série de données dans le format suivant :

[chaine de caractères de longueur variable] [chaine de longueur fixée à conserver] [chaine de longueur fixée]

... à reformater selon le format suivant :

[chaine de longueur fixée à conserver]

(les crochets ne sont là que pour délimiter visuellement les chaines, et ne sont pas contenues dans les données à travailler)



Débutant en VBA, je peine à trouver la macro qui me permettra de le faire !

J'imagine qu'au niveau du processus il faut d'abord supprimer le segment de fin, puis supprimer ce qui reste sauf les N caractères de droite.

(C'est à placer dans une macro impérativement, à la suite du code important les dites données à reformater, et pour lequel y'a pas de souci ^^)


Merci de votre aide,
 

LNRO

XLDnaute Nouveau
Re : Reformatage de données (chaînes de caractères à tronquer)

C'est quelque chose comme ça :

c:\le\path\du.fichier\numéro1\REF-NOM1-des-references-a-taille-fixe.txt
c:\le\path\du.fichier\numéro2\REF-NOM2-des-references-a-taille-fixe.txt
c:\le\path\du.fichier\numéro3\REF-NOM3-des-references-a-taille-fixe.txt


Et au final, il me faut juste garder
REF-NOM1
REF-NOM2
REF-NOM3
 

job75

XLDnaute Barbatruc
Re : Reformatage de données (chaînes de caractères à tronquer)

Bonjour,
Vous pouvez travailler sans macro. Si :
a= nombre de cararactères de [chaine de longueur fixée à conserver]
b= nombre de cararactères de [chaine de longueur fixée]
la formule :
=GAUCHE(DROITE(A1;a+b);a)
si le texte est en A1, vous donnera le texte à conserver.
A+
 

Tibo

XLDnaute Barbatruc
Re : Reformatage de données (chaînes de caractères à tronquer)

Bonjour,

Si j'ai bien compris, le principe pourrait consister à déterminer l'emplacement du 5ème \ puis l'emplacement du 2ème -

En formule, ça peut donner ceci :

Code:
=GAUCHE(SUBSTITUE(STXT(SUBSTITUE(A1;"\";"µ";NBCAR(A1)-
NBCAR(SUBSTITUE(A1;"\";"")));TROUVE("µ";SUBSTITUE(A1;"\";"µ";NBCAR(A1)-
NBCAR(SUBSTITUE(A1;"\";""))))+1;99);"-";"µ";2);TROUVE("µ";SUBSTITUE(STXT(
SUBSTITUE(A1;"\";"µ";NBCAR(A1)-NBCAR(SUBSTITUE(A1;"\";"")));TROUVE("µ";
SUBSTITUE(A1;"\";"µ";NBCAR(A1)-NBCAR(SUBSTITUE(A1;"\";""))))+1;99);
"-";"µ";2))-1)

La formule permet de gérer les longueurs de chaîne variables.

@+
 

Staple1600

XLDnaute Barbatruc
Re : Reformatage de données (chaînes de caractères à tronquer)

Bonjour à tous

EDITION: pour traiter la colonne A (par exemple)
(extraction dans colonne B)
Code:
Sub extract_sur_feuille()
Dim s As String
Dim s1 As String
Dim i As Long
Dim pos1
Dim pos2
For i = [A65536].End(xlUp).Row To 1 Step -1
s = Cells(i, 1).Text
s1 = StrReverse(Left(StrReverse(s), InStr(1, StrReverse(s), "\") - 1))
pos1 = InStr(1, s1, "-")
pos2 = InStr(pos1 + 1, s1, "-")
Cells(i, 2) = Left(s1, pos2 - 1)
Next i
End Sub


Par macro
Code:
Sub par_macro()
Dim s As String
Dim s1 As String
Dim pos1
Dim pos2
's = "c:\le\path\du.fichier\numéro1\DATE-NOM-des-references-a-taille-fixe.txt"
s = "c:\le\path\du.fichier\numéro1\REF-NOM1-des-references-a-taille-fixe.txt"
s1 = StrReverse(Left(StrReverse(s), InStr(1, StrReverse(s), "\") - 1))
pos1 = InStr(1, s1, "-")
pos2 = InStr(pos1 + 1, s1, "-")
MsgBox Left(s1, pos2 - 1)
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 896
Messages
2 093 387
Membres
105 716
dernier inscrit
jrmdprt