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