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 Mon 11 August 2003 15:44

M'Hamedi, Myriam
Invité

calculatrice

bonjour a tous ceux qui ont le courage de venir travailler (ou peut-etre la clim des bureaux est-elle une nouvelle motivation...)

je fais appel a vos competences VBA pour remplir automatiquement un champ en fonction des valeurs d'un autre champ.
Je voudrais que dans mon champ echelle s'affiche automatiquement l'echelle 1 : 125000 lorsque la valeur du champ secteur est VTN.
J'ai tente d'utiliser la calculatrice mais n'ayant aucune notion de VBA je patine.
Comment faire?

merci
Myriam M'HAMEDI
Administratrice SIG
Conseil General des Hautes-Pyrenees
Service Informatique / Cellule SIG
11, rue Gaston Manent
BP 1324
65013 TARBES Cedex 9

 

#2 Mon 11 August 2003 17:19

Matthieu Noucher
Invité

Re: calculatrice

Bonjour,

Si vous souhaitez utiliser l'outil calculatrice, je vous conseille d'aller voir l'exemple disponible dans le ArcObjects Developper Help en tapant dans l'index : Calculate values sample .

Par ailleurs, votre objectif n'etant pas de calculer une valeur mais plus simplement de mettre a jour (avec une valeur fixe) un champ en fonction d'un autre champ, une simple requete pour selectionner les enregistrements a mettre a jour peut suffire. Vous trouverez ci-dessous un extrait d'un programme qui doit fonctionner de maniere autonome (Si vous avez le moindre probleme, n'hesitez pas a me contacter).

Si quelqu'un a une solution encore plus simple ou des remarques sur le code, je suis preneur !

Je vous ai mis au debut du code les elements a parametrer.

Bonne programmation !

-----
Matthieu Noucher
http://matthieu.noucher.free.fr
-----

Code:

Sub MajChamp()

'-------------------------------------------------------
' Objectif :
' o Mise a jour automatique d'un champ
'
' Elements a parametrer :
' o N° de la couche dans la table des matiere (pFLayer)
' o Requete de selection (WhereClause)
' o Nom du champ a mettre a jour (indexID)
' o Nouvelle valeur a inserer (maNouvelleValeur)
'-------------------------------------------------------

' Declaration variables
Dim pFLayer As IFeatureLayer
Dim pFClass As IFeatureClass
Dim pMxDoc As IMxDocument
Dim pFeature As IFeature
Dim pFCursor As IFeatureCursor
Dim pQueryFilter As IQueryFilter
Dim indexChamp As Long

' Selection de la 1ere couche de la table des matieres
Set pMxDoc = ThisDocument
Set pFLayer = pMxDoc.FocusMap.Layer(0)
Set pFClass = pFLayer.FeatureClass

' On realise ici la requete
Set pQueryFilter = New QueryFilter
With pQueryFilter
  .WhereClause = TYPE = 104
End With

'On recupere l'index du champ qu'on va mettre a jour
indexChamp = pFClass.FindField( Route_Gabon )

Set pFCursor = pFClass.Search(pQueryFilter, False)
Set pFeature = pFCursor.NextFeature

' Boucle pour affecter a chaque element selectionne la meme valeur
While Not pFeature Is Nothing
  pFeature.Value(indexChamp) = maNouvelleValeur
  pFeature.Store
  Set pFeature = pFCursor.NextFeature
Wend

End Sub
 

#3 Mon 11 August 2003 17:41

Oliviertravaglini
Invité

Re: calculatrice

Bonjour,

Une fois que vous avez cochez la case advanced de la calculatrice tapez

Code:

If [secteur]= VTN then
  X= 1:125000
Else
  X=
End if

Puis dans la 2eme fenetre Echelle = tapez X tout simplement

Bon travail

Olivier Travaglini
RWB Ingenieurs-conseils SIA USIC SA
Chemin des Petits Esserts 14
CH-1053 Cugy VD (Switzerland)
http://www.rwb.ch

 

#4 Mon 11 August 2003 17:41

Wilfrid Faucher
Invité

Re: calculatrice

Si j'ai bien compris la question, la solution a votre besoin serait ceci :

- Faites un clic droit sur l'intitule du champ echelle pour afficher la boite de dialogue calculer les valeurs ,
- Cocher l'option Avance,
- Ecrire le texte suivant dans l'espace de code VBA,

Code:

Dim StrSecteur as string (si le champ echelle est bien de type texte)
Dim StrEchelle as string (si le champ secteur est de type texte)
StrSecteur = [secteur] (nom du champ secteur entre crochets)
If StrSecteur = VTN then
  StrEchelle= 1 : 125000
End If

- Ecrire SrtEchelle dans la zone de dessous.
- Cliquer sur OK

Wilfrid FAUCHER
Information Geographique -Mairie de Nice

 

#5 Tue 12 August 2003 09:00

Matthieu Noucher
Invité

Re: calculatrice

Oups, desole je croyais que vous souhaitiez automatiser la manip. par une macro....
Si vous voulez le faire a partir de l'interface les explications de Wilfrid sont largement suffisantes !

Mille excuses !!

-----
Matthieu Noucher
http://matthieu.noucher.free.fr
-----

 

Pied de page des forums

Powered by FluxBB