Page 1 sur 1

Fonction Texte

Posté : 07 déc. 2018, 00:52
par jashugan
Bonsoir à tous,

Je me triture le neurone sur une action à passer dans SM et je trouve pas mon bonheur pour l'instant.
Alors j'ai un fichier csv avec plusieurs lignes j'arrive a extraire les lignes qui m'intéressement dans le fichier.
Mais je souhaite récupérer plusieurs informations de cette ligne dans différente variable.
Exemple j'ai une Variable <ENREGISTREMENT>;0;Alpha;
Après lecture de mon fichier elle contient :
"objet 2";"1 500";"3 000 m3";"5 000 cm"
Je voudrais donc avoir 4 variables du genre :
<NOM> contenant : objet 2
<NOMBRE> contenant : 1500 (sans espace)
<VOLUME> contenant : 3000 (idem)
<TAILLE> contenant : 5000 (j'aime pas les espaces)

Je pensais que la fonction texte explode (j'ai juste trouvé une mention sur le forum) serait le Graal en utilisant :

Code : Tout sélectionner

Variable	<FICHIER>;C:\liste.csv;Alpha;
Variable	<NOM>;0;Alpha;
Variable	<NOMBRE>;0;Alpha;
Variable	<VOLUME>;0;Alpha;
Variable	<TAILLE>;0;Alpha;
Variable	<ENREGISTREMENT>;0;Alpha;
Lire	<FICHIER>;<ENREGISTREMENT>;1;
Fonction	<NOM>;Texte;Explode;<ENREGISTREMENT>;;;1;
Fonction	<NOMBRE>;Texte;Explode;<ENREGISTREMENT>;;;2;
Fonction	<VOLUME>;Texte;Explode;<ENREGISTREMENT>;;;3;
Fonction	<TAILLE>;Texte;Explode;<ENREGISTREMENT>;;;4;
Puis j'aurais fait surement un recherche pour supprimer les espaces qui me gênent.
Mais avant ça j'ai une erreur "n'est pas une valeur numerique valide. Arrêt de la macro inévitable. [Position 8]" :(
Donc je suppose qu'il n'aime pas le caractère de séparation de mon fichier csv.
Est-ce que je me suis carrément planté dans le mode de fonctionnement? Fallait passer par une autre fonction ?
Si une bonne âme peut me donner un coup de main pour la création de cette macro je suis preneur :)

Merci d'avance.

Re: Fonction Texte

Posté : 07 déc. 2018, 01:02
par jashugan
Bon en écrivant le problème ça passe mieux, pour le moment je suis passé par un chemin détourné j'utilise les " en séparateur ça donne :

Code : Tout sélectionner

Fonction	<NOM>;Texte;Explode;<ENREGISTREMENT>;";2;
Fonction	<NOMBRE>;Texte;Explode;<ENREGISTREMENT>;";4;
Fonction	<VOLUME>;Texte;Explode;<ENREGISTREMENT>;";6;
Fonction	<TAILLE>;Texte;Explode;<ENREGISTREMENT>;";8;
C'est pas jolie mais c'est déjà ça...
Si quelqu'un à la façon propre de faire la même chose je suis preneur.

Re: Fonction Texte

Posté : 07 déc. 2018, 09:10
par Onissius
"LE" neurone ? Tu n'en a qu'un ? ;-)
Tu as accomplis la première étape, extraire une ligne. Place la dans un fichier texte puis tu fait un second traitement tu efface les espace et tu en extraire chaque partie que tu place dans chaque variable.

Re: Fonction Texte

Posté : 07 déc. 2018, 12:40
par jashugan
Bonjour et bien le merci Onissius,

Du coup si je comprends bien le ; c'est a bannir dans SM ou on peut l'utiliser avec un caractère d’échappement du genre \; ?

Re: Fonction Texte

Posté : 07 déc. 2018, 15:35
par Onissius
jashugan a écrit :
07 déc. 2018, 12:40
Du coup si je comprends bien le ; c'est a bannir dans SM ou on peut l'utiliser avec un caractère d’échappement du genre \; ?
J'avoue que j'ai pas compris...

Pour ton affaire, tu dis obtenir ["objet 2";"1 500";"3 000 m3";"5 000 cm"].
C'est ça qu'on va utiliser pour en extraire ce que tu veux.
En premier, supprimer les espace vides puis trouver un moyen de séparer les valeurs pour les placer dans chaque variable.

Pour ma part, j'aurais tendance à utiliser un tableur pour faire ça.
Voir, peut êtres même utiliser un plugin "Excel".
Je me dis qu'il est plus facile et rapide de passer par Excel, plutôt que d'utiliser une macro plus ou moins compliqué pour traiter ce gendre de données.

Re: Fonction Texte

Posté : 07 déc. 2018, 22:27
par jashugan
Bonsoir Onissius,

Pour les plugins bonne suggestion j'irais faire un tour.

Je reformule donc ;)

Code : Tout sélectionner

Fonction	<TAILLE>;Texte;Explode;<ENREGISTREMENT>;;;4;
Séparateur ; ça plante.

Code : Tout sélectionner

Fonction	<TAILLE>;Texte;Explode;<ENREGISTREMENT>;";8;
Séparateur " ça marche, mais ce n'est pas propre.
Donc SM n'aime pas le ; en tant que séparateur, je me demandais s'il existait un moyen de faire passer le ; dans la fonction grâce à un caractère d’échappement ou substitution?

Re: Fonction Texte

Posté : 08 déc. 2018, 19:42
par Onissius
Tu passe par le bloc-note et tu remplace (Ctrl+H) tout les ; par ce que tu veux.

Re: Fonction Texte

Posté : 09 déc. 2018, 23:18
par plvh935
Bonsoir,
Pour ma part j'utilise parfois la commande "Champs" lorsque j'ai à lire un fichier .CSV.
Cela te permettrait de renseigner toutes tes variables d'un coup. Le passage par un fichier (ici contenant "objet 2";"1 500";"3 000 m3";"5 000 cm") n'est pas obligatoire et ne te sert que pour décrire le découpage de ta ligne.
Bon courage.