Pages: 1
- Sujet précédent - Mise à jour d'un champs avec conditions avec VBA (ArcGis 10) - Sujet suivant
#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).
Hors ligne
#4 Thu 06 November 2014 10:06
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
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
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
Pages: 1
- Sujet précédent - Mise à jour d'un champs avec conditions avec VBA (ArcGis 10) - Sujet suivant