#1 Tue 28 April 2009 17:19
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Suppression d'une partie du champ
Bonjour,
J'ai un champs contenant une information construite comme celle-ci à l'intérieur:
BON ETAT 2015
J'ai mis la date dans un autre champ, seulement maintenant j'aimerai supprimer dans le premier champ la date de tel sorte que j'obtienne une construction comme celle-ci:
BON ETAT | 2015
Comment s'y prend-t-on svp???
Merci les gens!!
Paul Hedin
ex-luern
Hors ligne
#2 Tue 28 April 2009 18:14
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: Suppression d'une partie du champ
Dans ArcMap, il y a l'aide de VisualBasic. Dans cette aide, tu trouveras toutes les fonctions de manipulations de chaîne (string). Tu peux utiliser ces fonctions dans la calculatrice de champ de ArcMap pour régler ton problème
Hors ligne
#3 Tue 28 April 2009 19:40
Re: Suppression d'une partie du champ
Et pour ceux qui ne savent pas que la fonction calculer champ utilise du VB, et qu'il faut aller chercher la fenêtre VBA d'ArcGIS, on peut regarder simplement l'aide dans le chapitre calculer champ (lien sur l'aide en ligne en anglais).
Il y a tout ce qu'il faut pour ce que vous demandez.
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#4 Wed 29 April 2009 10:03
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Suppression d'une partie du champ
Salut Luern,
Tu as une Date de 4 Caractères.
Pour récupérer la Date:
Code:
Date=Right([Ton_Champs],4)
Pour récupérer l'autre info Etat:
Code:
Dim Etat as string Var=Len([Ton_Champs]) Etat=Left([Ton_Champs],Var-4)
En espérant t'aider
A+
Joël
Hors ligne
#5 Wed 29 April 2009 10:22
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Suppression d'une partie du champ
Merci SpaceJo, ca marche.
J'ai un autre problème.
En essayant de lier deux couches: une spatiale et l'autre attributaire, je me suis aperçu qu'il n'y a pas tout à fait la même nomenclature au niveau de l'identifiant.
Je m'explique pour le même identifiant,la couche spatiale est FRGR0364B
alors que pour la table attributaire, l'identifiant est FRGR364B
J'aimerai donc créer un script pour que le 0 soit supprimé dans la couche spatiale du genre si le cinquième caractère est 0 alors suppression.
Merci bcp!!!
Paul Hedin
ex-luern
Hors ligne
#6 Wed 29 April 2009 10:30
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Suppression d'une partie du champ
Re,
Le zéro est toujours à la même place?
Il me faudrait voir les variations de cet identifiant?
Peux tu me donner quelques uns de tes identifiants pour voir ces variations?
A+
Joël
Hors ligne
#7 Wed 29 April 2009 10:36
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Suppression d'une partie du champ
Le 0 est toujours à la même place. Il n'y a pas de variation les 4 premiers caractères sont toujours FRGR ensuite le cinquième pe etre soit un 0 soit n'importe quels autres chiffres.
Paul Hedin
ex-luern
Hors ligne
#8 Wed 29 April 2009 10:41
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Suppression d'une partie du champ
Essaye ceci:
Code:
Dim Text1 as string Dim Text2 as string Dim Text as String Text1=Left([Ton_Champs],4) Text2=Right([Ton_Champs],4) Text=Text1 & Text2
A+
Joël
Hors ligne
#9 Wed 29 April 2009 10:53
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Suppression d'une partie du champ
Ah désolé,
Tu veux enlever uniquement le 5éme caractère si c'est un zéro j'ai été trop vite
Ca change la donne
Hors ligne
#10 Wed 29 April 2009 11:00
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Suppression d'une partie du champ
Essaye ceci:
Code:
Dim Text as string Dim Text1 as string Dim Text2 as string Dim Text3 as String Text1=Left([Ton_Champs],4) Text2=Mid([Ton_Champs],4,4) Text3=Right([Ton_Champs],1) Text=Text1 & Val(Text2) & Text3
Hors ligne
#11 Wed 29 April 2009 11:30
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Suppression d'une partie du champ
Ca ne va pas.
Le début de l'identifiant commence toujours par 4 caractères du style FRGR ou FRFC et après on a ou non le 0. Seulement ensuite il peut arriver que le nombre de caractère change, on peut avoir 5,4 ou 3 caractères.
Paul Hedin
ex-luern
Hors ligne
#12 Wed 29 April 2009 11:55
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Suppression d'une partie du champ
Donc il y a des variations dans le code.
C'est ce que je demandais un peu plus haut
Tu as 4 caractères (FRGR) puis 4 caractères (code en chiffres avec ou non un zéro devant) puis un autre code avec 3 ,4 ou 5 caractères.
C'est ça (le cahier des charges est complet?)
A+
Joël
Hors ligne
#13 Wed 29 April 2009 12:07
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Suppression d'une partie du champ
Non lol
tu as 4 caractères (FRGR) puis 3,4,5 caractères (code en chiffres avec ou non un zéro devant)
Paul Hedin
ex-luern
Hors ligne
#14 Wed 29 April 2009 12:31
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Suppression d'une partie du champ
Et la fin c'est toujours un seul caractère "B" ou il y a possibilité d'un autre caractère ou plusieurs caractères?
Hors ligne
#15 Wed 29 April 2009 13:38
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Suppression d'une partie du champ
Bon en considérant que le code se compose de:
- 4 caractères au début
- puis 3,4 ou 5 caractères numériques commençant ou non par un zéro que l'on veut éliminer
- et enfin un caractère que l'on veut garder
Essaye ceci:
Code:
Dim Text as string Dim Text1 as string Dim Text2 as string Dim Text3 as String Dim Var1 as Integer Var1=Len([Ton_Champs]) Text1=Left([Ton_Champs],4) Text2=Mid([Ton_Champs],5,Var1-5) Text3=Right([Ton_Champs],1) Text=Text1 & Val(Text2) & Text3
En espérant que cela fonctionne
A+
Joël
Dernière modification par Spacejo (Wed 29 April 2009 14:03)
Hors ligne
#16 Thu 14 May 2009 12:35
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Suppression d'une partie du champ
RE
Aujourd'hui c'est la question inverse...exactement pour le même identifiant, je cherche à rajouter un 0 o milieu de l'identifiant.
Il faudrait (phrase à traduire en script svp) que tous les identifiants n'ayant que 3 chiffres (ex FRGR319) rajoute un 0 (tout le temps un 0) devant ces 3 chiffres --> FRGR0319
merci
Paul Hedin
ex-luern
Hors ligne
#17 Thu 14 May 2009 13:12
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Suppression d'une partie du champ
Re,
Alors question :
Le zéro que tu veux ajouter est il toujours à la même place?
Dans ce cas le début du code comporte 4 lettres ----> donc saisie de cette première chaine Left([Ton_Champs],4) et la fin comprte 3 chiffres donc saisie de la fin Right([Ton_champs],3) et un zéro entre les deux.
La chaine est donc : Left([Ton_Champs],4) & "0" & Right([Ton_champs],3)
Code:
Dim Début as String Dim Fin as String Dim Code as string Début=Left([Ton_Champs],4) Fin=Right([Ton_champs],3) Code=Début & "0" & Fin
Placer "Code" dans le champs du bas
En espérant t'aider
A+
Joël
Dernière modification par Spacejo (Thu 14 May 2009 13:13)
Hors ligne
#18 Thu 14 May 2009 13:47
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Suppression d'une partie du champ
oui le 0 est tjs à la même place.
par contre le script ne marche pas "erreur VBA"...
j'ai enlevé l'accent à début mais ça ne change rien
Paul Hedin
ex-luern
Hors ligne
#19 Thu 14 May 2009 13:54
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Suppression d'une partie du champ
Remplace "0" par chr(48)
Code:
Dim Début as String Dim Fin as String Dim Code as string Début=Left([Ton_Champs],4) Fin=Right([Ton_champs],3) Code=Début & chr(48) & Fin
Le chr(48) est le code ascii de "0"
A+
Joël
Hors ligne
#20 Thu 14 May 2009 14:25
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Suppression d'une partie du champ
ça marche!!
merci!!
Paul Hedin
ex-luern
Hors ligne