Annonce
Les Rencontres de SIG La Lettre, c'est terminé ! Les bénévoles de GeoRezo remercient chaleureusement tous ceux qui ont pû partager quelques intants avec eux sur le stand ou dans les allées !
A tous les visiteurs, lecteurs et utilisateurs du Portail GeoRezo, votre soutien nous est indispensable pour vous garantir des services et des espaces d'échanges de qualité !
#1 mar. 07 août 2012 13:30
- Corine89
- Membre
- Date d'inscription: 14 mai 2011
- Messages: 23
Calcul conditionnel en VBA (Arcgis 10)
Bonjour,
Je souhaiterais à partir de note saisi dans un champs numérique [NLIT] assimiler dans un champs texte (EcoLit) les informations texte correspondantes
Je rentre ce code, il fonctionne a moitié car par exemple pour une valeur de 3 qui devrait normalement correspondre à Moyen, il m'attribue la catégorie Médiocre...
Code:
Dim EcoLit If [NLIT] <2 Then EcoLit = "Mauvais" elseif 2<= [NLIT] <2.5 Then EcoLit = "Médiocre" elseif 2.5<= [NLIT] <3.5 Then EcoLit = "Moyen" elseif 3.5<= [NLIT] <4.5 Then EcoLit = "Bon" elseif [NLIT] <= 4.5 EcoLit = "Trés bon" End if
Quelqu'un aurait -il une piste?
Hors ligne
#2 mar. 07 août 2012 14:17
- Nicolas Granier
- Membre
- Date d'inscription: 19 avril 2007
- Messages: 137
Re: Calcul conditionnel en VBA (Arcgis 10)
Bonjour,
pour ma part j'essaierai de bien décomposer les conditions en premier. Autrement dit au lieu d'écrire
Code:
elseif 2.5<= [NLIT] <3.5 Then
je tenterai plutôt
Code:
elseif 2.5<= [NLIT] and [NLIT]<3.5 Then
Il faut aussi s'assurer que la colonne [NLIT] contient bien des valeurs de type numérique.
A+
Hors ligne
#3 mar. 07 août 2012 14:32
Re: Calcul conditionnel en VBA (Arcgis 10)
Je suis d'accord avec Nicolas cependant
si tu fais des if imbriqués il n'y a pas besoin de borne inférieur
petite remarque : c'est >= sur le très bon sinon c'est pas logique
Code:
Dim EcoLit
If [NLIT] <2 Then
EcoLit = "Mauvais"
else
if [NLIT] <2.5 Then
EcoLit = "Médiocre"
else
if [NLIT] <3.5 Then
EcoLit = "Moyen"
else
if [NLIT] <4.5 Then
EcoLit = "Bon"
else
if [NLIT] >= 4.5
EcoLit = "Trés bon"
End if
End if
End if
End if
End ifA+
Dernière modification par Forestis (mar. 07 août 2012 14:34)
[Matthieu Pette - Ad Terram] (@Ad_Terram sur le PiouPiou bleu)
~Géomaticien Indépendant~
Hors ligne
#4 mar. 07 août 2012 14:48
- Corine89
- Membre
- Date d'inscription: 14 mai 2011
- Messages: 23
Re: Calcul conditionnel en VBA (Arcgis 10)
Je suis passée sous excel ou j'ai rencontré les mêmes problèmes en voulant trop détailler les bornes.
Problème résolu sous Excell la solution c'est de fait imposée sous arcgis
Merci à vous pour votre aide cependant
Hors ligne
#5 mar. 07 août 2012 15:12
Re: Calcul conditionnel en VBA (Arcgis 10)
Bonjour,
On peut aussi faire avec la commande "Case", écriture dans ce style :
Code:
Select Case Case [NLIT] <2 EcoLit = "Mauvais" Case [NLIT] >= 2 AND [NLIT] <2.5 EcoLit = "Médiocre" ... ... End Select
Association GeoRezo.net
Hors ligne
#6 mer. 08 août 2012 09:22
Re: Calcul conditionnel en VBA (Arcgis 10)
Bonjour,
Corine89 a écrit:
Problème résolu sous Excell la solution c'est de fait imposée sous arcgis
Peut-être pourrais-tu détailler cette solution qui s'est imposée sous ArcGIS ?
Cela pourrait aider d'autre personne...![]()
Merci
Franck
Hors ligne
#7 jeu. 09 août 2012 16:50
- Corine89
- Membre
- Date d'inscription: 14 mai 2011
- Messages: 23
Re: Calcul conditionnel en VBA (Arcgis 10)
Bonjour, oui bien sur.
Code:
Dim ECOLIT If [NLIT] <2 Then ECOLIT = "Mauvais" elseif [NLIT] <2.5 Then ECOLIT = "Mediocre" elseif [NLIT] <3.5 Then ECOLIT = "Moyen" elseif [NLIT] <4.5 Then ECOLIT = "Bon" elseif [NLIT] >= 4.5 Then ECOLIT = "Tres bon" End if
----->
Et sous excell:
=SI(J2<2;"Mauvais";SI(J2<2,5;"Mediocre";SI(J2<3,5;"Moyen";SI(J2<4,5;"Bon";SI(J2>=4,5;"Tres Bon")))))
Voila. Bonne journée
Hors ligne
#8 jeu. 09 août 2012 16:54
- Corine89
- Membre
- Date d'inscription: 14 mai 2011
- Messages: 23
Re: Calcul conditionnel en VBA (Arcgis 10)
Je viens de me rendre compte que c'est la même chose que ce que proposé par Foresti...
sauf que je n'ai pas mis tout les "end if" et j'ai utilisé "elseif"
Autant pour moi .. ![]()
Hors ligne


