#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?
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
Re: Conserver les zéros en fin de décimales
Bonjour,
Juste 2 guillemets devraient suffire pour renseigner un champ texte : "123,10"
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.
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
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
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
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
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
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
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
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!
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