Aller au contenu

Routine pour transformer un point en virgule pour passage sous Excel


Messages recommandés

Posté(e)

Suite à la recherche précedemment faite pour envoyer des infos d'Autocad vers Excel, j'ai un nouveau soucis.

Les infos que je veux envoyer sur Excel sont très souvent voire uniquement des nombres.

Or lorsque l'on calcule une surface ou un périmètre d'une polyligne, il est très rare que la valeur soit exacte.

Le problème vient lorsque l'on transvase cette valeur sur Excel, car la symbolisation de la virgule est différente entre Autocad (où un nombre sera écrit 10.5) et Excel (où le même nombre aurait été écrit 10,5).

Etant donné que je souhaite me servir de cette valeur pour ensuite faire des calculs, il faut qu'Excel considère bien que la valeur est un nombre sur lequel il peut faire des opérations et non une chaîne de caractères.

 

Ma question est donc la suivante : est-ce que quelqu'un aurait une petite routine permettant de transformer le point en virgule dans un nombre avant de le transférer sur Excel ?

Merci d'avance.

 

Arno

Posté(e)

Salut,

 

Tu peux utiliser la fonction vl-string-translate :

 

(vl-string-translate "." "," "25.4") > 25,4

 

Mais je pense qu'il est plus pratique de changer le séparateur décimal dans Windows : Panneau de configuration > Options régionales et linguistiques > Personnaliser... > Symbole décimal tu choisis le point.

Tu pourras ainsi utiliser le pavé numérique dans Excel de la même manière que dans AutoCAD.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

dans Excel tu peux indiquer dans les options si tu souhaite utiliser le séparateur décimale de windows ou en changer.

 

cette option est disponible dans l'onglet internationnal...

 

Le problème pour nous français et adepte de la normalisation du système internationnal est que c'est limite inutilisable pour la saisie au clavier...

 

J'ai eu un logiciel de dimensionnement qui refuser de marcher car il ne supportait pas les "," car il considérait les chiffres qui en usaient comme nul, alors pour faire des division avec....

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Merci à vous 2,

(Gile) j'ai testé ton idée de changement dans les panneaux de configuration et effectivement ca marche nikel, je pourrais donc arrêter ma recherche là, mais je voudrai aussi trouver la solution avec une routine lisp.

C'est pourquoi j'ai tout de même essayé ta ligne de code : (vl-string-translate "." "," "25.4") > 25,4, qui fonctionne très bien lorsque le terme à changer est une constante. En revanche, dans mon cas, c'est une variable donc ma ligne serait : (vl-string-translate "." "," "nom_variable") sauf que la ca ne marche pas.

Pourrais-tu m'aiguiller un peu plus stp ?

Encore merci.

 

Arno

Posté(e)

Salut Didier,

je suis d'accord avec toi et je connais déjà cette commande, effectivement super pratique lorsqu'il s'agit de modifier un texte ou autre présent de nombreuses fois sur l'espace objet.

Sauf que dans le cas présent la valeur est "virtuelle" puisqu'elle est mesurée.

Par exemple je mesure l'aire du polyligne et je veux enregistrer directement cette valeur dans une case précise d'un fichier Excel, valeur qui rentre dans une série de calcul pour ensuite me donner volume, ...

La commande Find ne me permet pas de modifier quelque chose qui n'existe pas "physiquement" et la valeur rentrée dans mon tableau sera considérée comme une chaîne de caractères ...

Dis-moi si je me trompe, ou alors c'est que je ne sais pas me servir totalement de cette commande.

Posté(e)

didier,

 

Je pense que tu n'as pas compris la demande, il s'agit de passer des valeurs numériques contenues dans des variables à Excel en utilisant un LISP.

 

Nono64,

 

La fonction vl-string-translate fonctionne avec des chaînes de caractères (string).

 

Si ta variable renferme un nombre réel, il faut d'abord la transformer en chaîne avec la fonction rtos (c'est là qu'on peut perdre un peu de précision)

 

Exemple :

 

(setq val 123.123456789) > 123.123 (la précision est conservée, seul l'affichage est altéré)

(setq str (rtos val 2 9)) > "123.123456789" (le 9 force le nombre de décimales)

(vl-string-translate "." "," str) > "123,123456789"

 

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité