Fonction Texte

Postez ici si vous avez des difficultés a comprendre une commande, ou a créer une macro.
Répondre
jashugan
Messages : 8
Enregistré le : 28 mai 2014, 02:19

Fonction Texte

Message par jashugan » 07 déc. 2018, 00:52

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.

jashugan
Messages : 8
Enregistré le : 28 mai 2014, 02:19

Re: Fonction Texte

Message par jashugan » 07 déc. 2018, 01:02

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.

Avatar du membre
Onissius
Messages : 762
Enregistré le : 11 avr. 2014, 22:47
Localisation : Lyon (France)
Contact :

Re: Fonction Texte

Message par Onissius » 07 déc. 2018, 09:10

"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.
J'ai découvert SM en 99, rapidement Adam m'a promu admin.
Posez vos questions aussi clairement que possible, sans fautes qui piquent les yeux et relisez vous.
Vérifiez sur mon DISCORD si je suis en ligne.

jashugan
Messages : 8
Enregistré le : 28 mai 2014, 02:19

Re: Fonction Texte

Message par jashugan » 07 déc. 2018, 12:40

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 \; ?

Avatar du membre
Onissius
Messages : 762
Enregistré le : 11 avr. 2014, 22:47
Localisation : Lyon (France)
Contact :

Re: Fonction Texte

Message par Onissius » 07 déc. 2018, 15:35

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.
J'ai découvert SM en 99, rapidement Adam m'a promu admin.
Posez vos questions aussi clairement que possible, sans fautes qui piquent les yeux et relisez vous.
Vérifiez sur mon DISCORD si je suis en ligne.

jashugan
Messages : 8
Enregistré le : 28 mai 2014, 02:19

Re: Fonction Texte

Message par jashugan » 07 déc. 2018, 22:27

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?

Avatar du membre
Onissius
Messages : 762
Enregistré le : 11 avr. 2014, 22:47
Localisation : Lyon (France)
Contact :

Re: Fonction Texte

Message par Onissius » 08 déc. 2018, 19:42

Tu passe par le bloc-note et tu remplace (Ctrl+H) tout les ; par ce que tu veux.
J'ai découvert SM en 99, rapidement Adam m'a promu admin.
Posez vos questions aussi clairement que possible, sans fautes qui piquent les yeux et relisez vous.
Vérifiez sur mon DISCORD si je suis en ligne.

plvh935
Messages : 170
Enregistré le : 10 sept. 2014, 22:33

Re: Fonction Texte

Message par plvh935 » 09 déc. 2018, 23:18

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.

Répondre