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 21 March 2006 12:41

Vero
Participant actif
Lieu: Echirolles
Date d'inscription: 6 Sep 2005
Messages: 50

VB et Etiquettes

Bonjour,

Dans ArcView 9.1, je tente d'insérer une étiquettes sur 2 lignes avec condition.
Pour mettre le contenu de l'étiquette sur 2 lignes aucun souci, en revanche je pensais pouvoir insérer une expression avancée contenant un "If... then ... else". Là je coince.

Je souhaite faire une condition du style :
si le champ "nom du batiment" est vide étiqueter "nom du batiment & nb de logements", sinon "nom du promoteur & nb de logements".

Merci d'avance pour vos conseils.

Véro


Véronique VESTRI
Responsable SIG
Ville d'Echirolles (38)
v.vestri@texte-a-enlever.ville-echirolles.fr

Hors ligne

 

#2 Tue 21 March 2006 13:35

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: VB et Etiquettes

Bonjour,

Peut-être que votre problème vient du fait que vous utilisez des valeurs de plusieurs champs, ce qu'il faut déclarer dans la fonction FindLabel.

Voici un exemple qui affiche le nom des communes (champ [POLYGON_NM]) sur plusieurs lignes si celui-ci comprend un trait d'union, ainsi que le code INSEE (champ [CODINSEE]) si celui-ci est renseigné.

En espérant que cela vous aide,
Kevin Jousseaume.

--------------------------------------------------------
Function FindLabel ([POLYGON_NM], [CODINSEE])
strOldchaine = [POLYGON_NM]
strCodeInsee = [CODINSEE]

if strCodeInsee <> "" Then
  strOldchaine = strOldchaine & vbnewline & strCodeInsee
End If

    strNewChaine = ""
     
    Do While Len(strOldchaine) > 0
        place = InStr(strOldchaine, "-")
        If place = 0 Then
            strNewChaine = strNewChaine & strOldchaine
            Exit Do
        End If
        strNewChaine = strNewChaine & Left(strOldchaine, place) & vbNewLine
        strOldchaine = Right(strOldchaine, Len(strOldchaine) - place)
    Loop

FindLabel = strNewChaine
End Function

Hors ligne

 

#3 Tue 21 March 2006 20:12

Vero
Participant actif
Lieu: Echirolles
Date d'inscription: 6 Sep 2005
Messages: 50

Re: VB et Etiquettes

J'ai bien avancé : plus aucune erreur dans la syntaxe, cependant l'affichage
ne répond toujours pas à ma demande.
Je souhaite avoir :
Nom du batiment
nb de logements

ou si nom du batiment est vide

Nom du promoteur
nb de logements

Si quelqu'un a encore une idée... merci d'avance

Véro

Voici le code de l'étiquette
-------------------------
Function FindLabel ( [Arche5_BatiCV.NomBATI], [LOG_TOTAL] ,
[Arche5_BatiCV.Promoteur] )

strRESIDENCE =  [Arche5_BatiCV.NomBATI] & vbcr & "(" & [LOG_TOTAL]  & "
log)"
strPROMOTEUR = [Arche5_BatiCV.Promoteur] & vbcr & "(" & [LOG_TOTAL]  & "
log)"
strETIQ = strRESIDENCE

If [Arche5_BatiCV.NomBATI]  = "" Then
strETIQ = strPROMOTEUR
end if

FindLabel = strETIQ
End Function
---------------------


Véronique VESTRI
Responsable SIG
Ville d'Echirolles (38)
v.vestri@texte-a-enlever.ville-echirolles.fr

Hors ligne

 

#4 Mon 27 March 2006 17:41

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: VB et Etiquettes

Bonjour,

Je pense que le problème vient du test suivant :
If [Arche5_BatiCV.NomBATI]  = "" Then
...
end if

Essayez de compléter ce test avec la valeur " " (espace)
If [Arche5_BatiCV.NomBATI]  = "" or [Arche5_BatiCV.NomBATI]  = " " Then
...
end if

J'ai fait le test avec le code suivant, et cela m'a donné le résultat escompté :
-------------------------
Function FindLabel ( [Arche5_BatiCV.NomBATI],  [INSEE.LOG_TOTAL], [Arche5_BatiCV.Promoteur] )

strNomBati = [Arche5_BatiCV.NomBATI]
strPromoteur = [Arche5_BatiCV.Promoteur]
strLogTotal = [INSEE.LOG_TOTAL]

if strNomBati = "" or strNomBati = " " then
strLabel = strPromoteur & vbcr & "(" & strLogTotal  & " log)"
else
strLabel = strNomBati  & vbcr & "(" & strLogTotal  & " log)"
end if

  FindLabel = strLabel
End Function
-------------------------

Hors ligne

 

Pied de page des forums

Powered by FluxBB