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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

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 smile
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?) wink
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

 

Pied de page des forums

Powered by FluxBB