#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
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
---------------------
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

