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 Wed 05 November 2014 16:47

Pylône44
Participant occasionnel
Date d'inscription: 23 May 2012
Messages: 27

Mise à jour d'un champs avec conditions avec VBA (ArcGis 10)

Bonjour,

J'ai une table avec entre autre un champs nommé LIB_TYPE (nom de type d'établissement) et un champs NUM_TYP (identifiant du type d'établissement), tous deux de type chaîne de caractère.

J'ai crée un domaine pour LIB_TYPE pour que l'utilisateur puisse choisir le type d'établissement dans une liste déroulante.

Le problème est que l'utilisateur n'est pas censé connaître le NUM_TYPE correspondant à ce nom. Je veux donc créer un script VB dans le calculateur de champs qui remplierais mon champs NUM_TYPE avec les valeurs de LIB_TYPE.

Or VB n'est pas vraiement mon fort...

Pour le moment j'ai ça qui ne marche pas du tout :


Select Case [TYPE]
Case [TYPE] ="esat"
CODE_TYPE = "001"
Case [TYPE] = "fo"
CODE_TYPE = "003"
End Select



Quelqu'un peut-il m'aider, que ce soit en python ou VB?

Merci!

Hors ligne

 

#2 Wed 05 November 2014 17:04

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Mise à jour d'un champs avec conditions avec VBA (ArcGis 10)

Salut,

En VB peut être ceci:

Code:

Select Case [TYPE]
  Case "esat"
     CODE_TYPE = "001"
  Case "fo"
     CODE_TYPE = "003"
End Select

A+
Joël

Dernière modification par Spacejo (Wed 05 November 2014 17:05)

Hors ligne

 

#3 Thu 06 November 2014 09:33

Pylône44
Participant occasionnel
Date d'inscription: 23 May 2012
Messages: 27

Re: Mise à jour d'un champs avec conditions avec VBA (ArcGis 10)

J'ai essayé mais cela ne marche toujours pas...Ou peut-être que je ne le tape pas au bon endroit.
Voici à quoi ça ressemble (ne pas s'étonner des noms des valeurs, c'est juste pour le test).


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

Hors ligne

 

#4 Thu 06 November 2014 10:06

nitram
Participant assidu
Lieu: Brest
Date d'inscription: 19 May 2009
Messages: 990
Site web

Re: Mise à jour d'un champs avec conditions avec VBA (ArcGis 10)

Bonjour,

Il faut cocher la case 'Afficher le bloc de code'.
Indiquez :

Code:

Dim resultat

Select Case [TYPE]
  Case "esat"
     CODE_TYPE = "001"
  Case "fo"
     CODE_TYPE = "003"
End Select

Dans le bloc du dessous indiquez :
CODE_TYPE =

Code:

resultat

Hors ligne

 

#5 Thu 06 November 2014 11:34

Pylône44
Participant occasionnel
Date d'inscription: 23 May 2012
Messages: 27

Re: Mise à jour d'un champs avec conditions avec VBA (ArcGis 10)

C'est effectivement ce que j'avais fait en premier, mais avec N au lieu de résultat et j'avais remplacé CODE_TYPE = dans le bloc par N=, alors forçément ça marchait pas...

Bon, ça marche toujours pas mais ça me met un message d'erreur différent :

"La valeur calculée est invalide pour le ligne ObjectID=7. Par exemple, la valeur calculée doit être trop grande pour le champs ou vous essayez d'ajouter une chaîne dans un champs numérique".

Après re-vérification, mes deux champs sont bien en format texte, avec une longueur suffisante.

En tous cas merci pour le code, ça me dépanne bien.

Hors ligne

 

#6 Thu 06 November 2014 12:20

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Mise à jour d'un champs avec conditions avec VBA (ArcGis 10)

Salut,

Une autre alternative:

Code:

Valeur=[TYPE]

 If Valeur = "esat" then
   Resultat = "001"
 
  ElseiF Valeur = "fo" then
   Resultat = "003"
  
  ElseIf Valeur="truc" then
   etc.....

 End If

Comme l'a dit Martin --> Mettre Resultat dans -> CODE_TYPE =
A+
Joël

Dernière modification par Spacejo (Thu 06 November 2014 13:01)

Hors ligne

 

#7 Thu 06 November 2014 14:22

Pylône44
Participant occasionnel
Date d'inscription: 23 May 2012
Messages: 27

Re: Mise à jour d'un champs avec conditions avec VBA (ArcGis 10)

C'est bon ça marche avec le case!


Dans bloc de code j'ai tapé

Code:

Select Case [TYPE]
  Case "esat"
     CODE_TYPE = "001"
  Case "fo"
     CODE_TYPE = "003"
  Case "truc"
     CODE_TYPE = "004"
End Select

et dans CODE_TYPE=

Code:

CODE_TYPE

Merci Joël et nitram!

Hors ligne

 

#8 Thu 06 November 2014 14:26

Pylône44
Participant occasionnel
Date d'inscription: 23 May 2012
Messages: 27

Re: Mise à jour d'un champs avec conditions avec VBA (ArcGis 10)

Je crois que le problème vennait aussi du fait que j'ai attribué un domaine au champs TYPE.

Du coup quand j'enlève mon domaine de TYPE, le script VB marche.

Mais ça me pose un probème : comment faire pour que l'utilisateur puisse remplir le champs TYPE à l'aide d'une liste déroulante et que le champs [CODE_TYPE] puisse se mettre à jour en conséquence?

Hors ligne

 

#9 Thu 06 November 2014 15:34

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Mise à jour d'un champs avec conditions avec VBA (ArcGis 10)

Mais ça me pose un probème : comment faire pour que l'utilisateur puisse remplir le champs TYPE à l'aide d'une liste déroulante et que le champs [CODE_TYPE] puisse se mettre à jour en conséquence?


Attention, il ne faut pas confondre VBscript et VBA wink
Vu ce que tu dis -> tu te diriges vers la création d'un formulaire d'entrée utilisateur.
Dans ces cas là c'est du VBA qu'il te faudra utiliser.
--> http://www.forumsig.org/showthread.php/ … box-en-vba

Hors ligne

 

#10 Thu 06 November 2014 15:56

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Mise à jour d'un champs avec conditions avec VBA (ArcGis 10)

Voilà l'outil "Editeur VBA dans Arcmap"
--> http://help.arcgis.com/en/sdk/10.0/vba_ … 00rm000000

Hors ligne

 

#11 Thu 06 November 2014 16:04

nitram
Participant assidu
Lieu: Brest
Date d'inscription: 19 May 2009
Messages: 990
Site web

Re: Mise à jour d'un champs avec conditions avec VBA (ArcGis 10)

Si la programmation VB n'est pas votre fort, je vous invite à regarder du côté des domaines attributaires et valeurs précodées. Une sorte d'assistant d'attributs qui contraint la saisie des champs par liste déroulante et remplit automatiquement les autre champs, ceci fonctionne avec des .gdb.
Voir : http://resources.arcgis.com/fr/help/mai … 001000000/

Hors ligne

 

#12 Thu 06 November 2014 16:07

Pylône44
Participant occasionnel
Date d'inscription: 23 May 2012
Messages: 27

Re: Mise à jour d'un champs avec conditions avec VBA (ArcGis 10)

C'est bien ce dont je me doutais, mais je voulais échapper à la création de listes déroulantes...

Tant pis, merci quand même!

Hors ligne

 

Pied de page des forums

Powered by FluxBB