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 07 August 2012 13:30

Corine89
Participant occasionnel
Date d'inscription: 14 May 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 Tue 07 August 2012 14:17

Nicolas Granier
Participant assidu
Date d'inscription: 19 Apr 2007
Messages: 271

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 Tue 07 August 2012 14:32

Forestis
Participant assidu
Lieu: Aniane (Hérault)
Date d'inscription: 5 Sep 2005
Messages: 168
Site web

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 if

A+

Dernière modification par Forestis (Tue 07 August 2012 14:34)


[Matthieu Pette - Ad Terram] (@Ad_Terram sur le PiouPiou bleu)

~Géomaticien Indépendant~

Hors ligne

 

#4 Tue 07 August 2012 14:48

Corine89
Participant occasionnel
Date d'inscription: 14 May 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 Tue 07 August 2012 15:12

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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

Hors ligne

 

#6 Wed 08 August 2012 09:22

Franck B
Membre
Lieu: PACA
Date d'inscription: 6 Sep 2005
Messages: 1382
Site web

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...
smile

Merci

Franck

Hors ligne

 

#7 Thu 09 August 2012 16:50

Corine89
Participant occasionnel
Date d'inscription: 14 May 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 Thu 09 August 2012 16:54

Corine89
Participant occasionnel
Date d'inscription: 14 May 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 .. big_smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB