Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Thu 30 August 2012 19:11

esrisig
Juste Inscrit !
Date d'inscription: 30 Aug 2012
Messages: 6

Conserver les zéros en fin de décimales

Bonsoir,

Utilisateur d'arcgis 10, j'ai une petite question sur laquelle je bloque.

J'ai la valeur numérique suivante : 123,10
Je voudrais stocker cette même valeur dans un champ texte en conservant le 0 (zéro) en dernière position des décimales.

Je bloque dans la formule à saisir dans la calculatrice de champ dans arcmap, que ce soit en VB ou python.

Merci pour toute piste proposée.
Bonne soirée.

Hors ligne

 

#2 Fri 31 August 2012 11:12

esrisig
Juste Inscrit !
Date d'inscription: 30 Aug 2012
Messages: 6

Re: Conserver les zéros en fin de décimales

Bonjour,

Personne n'a d'idée? sad

Je me bats avec les fonctions Format(), String(),... mais cela n'aboutit pas.

Merci pour toute aide apportée pour un novice tel que moi.
Bonne journée.

Hors ligne

 

#3 Fri 31 August 2012 15:45

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Conserver les zéros en fin de décimales

Bonjour,

Juste 2 guillemets devraient suffire pour renseigner un champ texte : "123,10" smile

EDIT :  je viens de comprendre la problématique qui n’est pas aussi simple. A suivre, donc.

Hors ligne

 

#4 Fri 31 August 2012 17:57

esrisig
Juste Inscrit !
Date d'inscription: 30 Aug 2012
Messages: 6

Re: Conserver les zéros en fin de décimales

Bonjour Robin,

Avant toute chose merci de considérer le problème.

Je suis d'accord pour les guillemets dans le cas où je dois saisir à la main la valeur 123.10 dans la calculatrice de champs d'ArcMap.
Exemple : MonChampTXT = "123.10"

Mon problème est un peu différent : cette valeur 123.10 existe déjà dans ma base, stockée dans un champ numérique. Autrement dit, MonChampNUM = 123.10.

Dans la calculatrice de champs d'ArcMap, j'ai tenté MonChampTXT = str(MonChampNUM) ou encore MonChampTXT = Format(MonChampTXT,"###,##" ) .... mais sans succès!

Voila où j'en suis. sad

Merci.

Hors ligne

 

#5 Fri 31 August 2012 18:11

Damien BEAUSEIGNEUR
Participant assidu
Lieu: meyzieu
Date d'inscription: 5 Sep 2005
Messages: 425

Re: Conserver les zéros en fin de décimales

bonjour

bon pour bien faire il faut écrire Format(MonChampTXT,"### ##0.00")
Il s'agit bien d'un point, les ### ### sont là pour définir le format, mais le remplissage n'est pas obligatoire
Le . c'est le séparateur la virgule quoi en français. et les 0 les les zones ou l'on veut avoir une valeur même si il s'agit d'un 0.

cordialement

Hors ligne

 

#6 Fri 31 August 2012 18:26

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Conserver les zéros en fin de décimales

<snip>

EDIT : Damien a été plus rapide (et plus efficace). J'étais dans l'hypothèse que Format() ne marchait pas...

Dernière modification par Robin (Fri 31 August 2012 18:28)

Hors ligne

 

#7 Mon 03 September 2012 08:53

esrisig
Juste Inscrit !
Date d'inscription: 30 Aug 2012
Messages: 6

Re: Conserver les zéros en fin de décimales

Bonjour,

Après test, la fonction Format() ne semble pas vouloir marcher.
J'ai un message d'erreur qui me dit "type incompatible".

Donc peut-être Robin a-t-il raison quand il dit que Format() ne fonctionne pas sous ArcGIS?!

Que faire alors?

Merci d'avance.

Hors ligne

 

#8 Mon 03 September 2012 11:09

Damien BEAUSEIGNEUR
Participant assidu
Lieu: meyzieu
Date d'inscription: 5 Sep 2005
Messages: 425

Re: Conserver les zéros en fin de décimales

Bonjour,

"type incompatible", veux en général dire qu'il y a une erreur de syntaxe. Et ne veux pas dire que format ne fonctionne pas.
Le fonctionnement normal de str limite l'affichage en texte des données numérique en mode standard.
Dès qu'on a besoin d'un représentation particulière, par exemple numéro de téléphone ou autre le format est très utile.

Dans mon explication j'ai fait une petite erreur essaye d'écrire  MonChampTXT = Format(MonChampNUM,"### ##0.00")
ça devrait mieux fonctionner...

Hors ligne

 

#9 Mon 03 September 2012 13:21

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Conserver les zéros en fin de décimales

Attention, je n'ai pas dit que ça ne marchait, je pensais juste que c'était la conclusion du post précédent smile
Il y a bien une autre méthode, mais il faut ruser un peu avec une requête selon la longueur du champ. Essaye la piste de Damien, c'est quand même la plus simple à priori.

Hors ligne

 

#10 Tue 04 September 2012 08:10

Eric RANDRIANANTENAINA
Participant actif
Date d'inscription: 27 Sep 2005
Messages: 62

Re: Conserver les zéros en fin de décimales

Bonjour,

Je ne sais pas si ca repond a ta question mais ceci peut t'aider (Cf. Fichier joint).

Salutations

Eric


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#11 Wed 05 September 2012 00:11

esrisig
Juste Inscrit !
Date d'inscription: 30 Aug 2012
Messages: 6

Re: Conserver les zéros en fin de décimales

Bonsoir,

Je n'arrive véritablement pas à faire fonctionner cette fonction Format() dans arcgis 10 alors que cela fonctionne dans arcgis 9.3!
J'en arrive à me poser la question de savoir si ca marche en arcgis 10!?

Cela m’intéresserait d'avoir quelqu'un parmi vous qui teste dans arcgis 10 et me donne le fin mot de l'histoire.

Robin, je suis preneur de ta ruse car sinon je pense qu'arcgis va m'achever!

Merci merci merci et bonne nuit!

Hors ligne

 

#12 Wed 05 September 2012 08:36

SIGEAL
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
Site web

Re: Conserver les zéros en fin de décimales

Bonjour,

Pas trouvé la bonne syntaxe en VBScript...
En revanche ça fonctionne en javascript :

Code:

function FindLabel ( [PageNumber] )
{
  var num = parseFloat([PageNumber]).toFixed(2);
  return num;
}

Trouvé dans la doc ArcGis : http://help.arcgis.com/fr/arcgisdesktop … 0027000000

Bonne journée,


Christophe Damour (SIGéal)

Hors ligne

 

#13 Wed 05 September 2012 09:45

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Conserver les zéros en fin de décimales

Robin, je suis preneur de ta ruse car sinon je pense qu'arcgis va m'achever!


Alors, voilà 2 codes pour résoudre le problème en mode bricolage (=usine à gaz). Ne pas oublier à chaque fois d'activer le bloc de code et ajouter Mavar dans le champ de la variable de sortie en dessous.

1 Création de champ intermédiaire [nb] à remplir avec le nombre de chiffres après la virgule à partir du champ [MesValeurs] :

Code:

Select Case True

Case  Instr ( [MesValeurs] , "." ) <> 0
Mavar = Len(Mid( [MesValeurs], Instr ( [MesValeurs] , "." )+1, Len( [MesValeurs]) ))
Case   Instr ( [MesValeurs] , "." ) = 0
Mavar = 0

End select

2. Remplissage du champ texte final à partir de [nb]

Code:

Select Case True

Case [nb] =0
Mavar = [MesValeurs] &".00"
Case [Nom] =1
Mavar = [MesValeurs] &"0"
Case   [Nom] =2
Mavar = [MesValeurs] 

End select

Le résultat est évidemment à ajuster selon le nombre de chiffres après la virgule.

Hors ligne

 

#14 Wed 05 September 2012 10:31

supernul
Participant actif
Date d'inscription: 31 Jan 2010
Messages: 103

Re: Conserver les zéros en fin de décimales

salut,

tu crées un champs texte si ce n'est déjà fait.

dans la calculatrice de champs, en mode python, tapes ce code pré-logic :

Code:

def transfo(X):
  alpha = str(X*100)
  beta = alpha[-len(alpha):-2]+"."+alpha[-2:]
  return beta

dans la zone en dessous, tu tapes :

Code:

transfo(tonchampnumérique)

le code calcule une variable temporaire alpha qui est la version texte de ton camps numérique fois 100. J'élimine de cette façon le problème de la virgule. Ensuite j'affecte à beta les premiers caractères à l'exception des deux derniers, j'écris un point (tu peux remplacer par une virgule su tu préfères) et j'affecte les deux derniers caractère de alpha.
Avec return, je précise quelle variable temporaire est la sortie de ma petite fonction.

Dernière modification par supernul (Wed 05 September 2012 10:32)

Hors ligne

 

#15 Wed 05 September 2012 11:03

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Conserver les zéros en fin de décimales

Bonjour à tous,

Après une bonne heure de tâtonnement vu mes capacité de débutant en Python, j'ai finalement réussi à trouver la commande, simple et efficace !

Code:

'%.2f' % !MonChamp!

Pour changer le format, il suffit de changer le code entre ' '
%s = string
%.2f = flottant avec 2 zéro
%10.2f = flottant de taille 10 avec 2 décimales (il rajoute des espaces en début de chaine pour compenser

Ps : ne pas oublier de cocher la case en haut de la fenêtre de mise à jour de champ avec "Python" et non "Script VB"

Hors ligne

 

#16 Wed 05 September 2012 12:38

esrisig
Juste Inscrit !
Date d'inscription: 30 Aug 2012
Messages: 6

Re: Conserver les zéros en fin de décimales

Bonjour à tous,

Un seul mot : MERCI! big_smile
Robin : grande classe (simple et efficace), les autres pas mal non plus (forts et persévérants).

C'est la première fois que je post sur ce forum... on m'en avait dit le plus grand bien, je confirme!

Bon ap' et encore merci.

Arthur

Hors ligne

 

#17 Wed 05 September 2012 12:54

supernul
Participant actif
Date d'inscription: 31 Jan 2010
Messages: 103

Re: Conserver les zéros en fin de décimales

la solution de Robin est en effet la meilleure : sexy, courte et exploitant les mécanismes internes de python.

A force d'utiliser le formatage dynamique et les tableaux préformatés, on en oublie les mécanismes internes.

Dernière modification par supernul (Wed 05 September 2012 12:55)

Hors ligne

 

Pied de page des forums

Powered by FluxBB