Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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 Thu 13 May 2010 12:12

zaynabe
Participant occasionnel
Date d'inscription: 13 May 2010
Messages: 12

[arcgis9.3] remplir listbox à partir d'une séléction sur la carte

bonjour tout le monde
je viens de m'inscrire sur ce forum et comme un message d'entrée, je vous expose un problème sur les listbox sur vba arcgis espérant que vous puissiez m'aider!!
voilà, je travaille sur une carte sur arcmap, j'ai une barre d'outil dont laquelle se trouve un commandButton, qui permet, une fois qu'on clique dessus, de lancer ou d'appeler un formulaire
dans ce formulaire, il ya une zone listbox. 
dans cette listbox, je veux afficher ou récuperer les ObjectID (identifiants) de mes entités que j'ai selectionné sur la carte (selection à la souris).
je veux encore préciser que les objectID de mes entités sont stockés dans la table attributaire de ma couche.
et mes couches sont organisées dans une géodatabase access (c'est organisé en jeux de classes d'entités et classes d'entités)!!!
merci et j'espère que j'aurais des réponses à mes questions

Hors ligne

 

#2 Fri 14 May 2010 10:24

zaynabe
Participant occasionnel
Date d'inscription: 13 May 2010
Messages: 12

Re: [arcgis9.3] remplir listbox à partir d'une séléction sur la carte

bonjour
personne n'a de réponse pour ma question!!!
un petit bout de code ou une orientation seront les bien venus!!!!
bonne journée

Hors ligne

 

#3 Fri 14 May 2010 11:47

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

Re: [arcgis9.3] remplir listbox à partir d'une séléction sur la carte

Je tente de t'expliquer la demarche :
-1 recuperer tes features selectionnés et les parcourir par une boucle
-2 remplir un Tableau (MyArray variable de type variant) avec les informations de features que tu parcours
dans ta boucle ne pas oublier de redimensionner ton tableau en fonction des besoins avec DIM et REDIM avec variable de comptage et le code suivant par exemple ReDim Preserve MyArray(7, MaLongueur)
-3 Vider ta liste avec MonForm.Controls(MonNomListe).Clear
-4 assigné le tableau a ta liste avec la syntace suivante MonForm.Controls(MonNomListe).Column() = MyArray

Voila rapidement
Bon courage


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

~Géomaticien Indépendant~

Hors ligne

 

#4 Fri 14 May 2010 12:05

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

Re: [arcgis9.3] remplir listbox à partir d'une séléction sur la carte

bonjour, un brin de code à tester

Code:

Public Sub test()

Dim pMxDoc As IMxDocument
Dim pmap As IMap
Dim pfield As IField
Dim pLayer As ILayer
Dim pFLayer As IFeatureLayer
Dim pFeatureClass As IFeatureClass

Set pMxDoc = ThisDocument
Set pmap = pMxDoc.FocusMap
Set pLayer = pMxDoc.SelectedLayer
Set pFLayer = pLayer
Set pFeatureClass = pFLayer.FeatureClass

Dim pFeatureSelection As IFeatureSelection
Dim pSelectionSet As ISelectionSet
Dim pFCursor As IFeatureCursor


'Récupère la sélection
Set pFeatureSelection = pFLayer

'Vérifie qu'il existe bien une entité de sélectionner
If pFeatureSelection.SelectionSet.Count < 1 Then
    MsgBox "Aucune entité sélection sur la couche " & pLayer.Name
Exit Sub
End If
    
'Récupère les entités sélectionnées
Set pSelectionSet = pFeatureSelection.SelectionSet
'
'Récupère un curseur sur les entités sélectionnées


MsgBox "Nombre d'ojets selectionnées " & pSelectionSet.Count()

'enumération de la selection
Dim pEnumIDs As IEnumIDs
Set pEnumIDs = pSelectionSet.IDs

Dim pRowBuffer As IRowBuffer
Dim pFeature As IFeature

Dim id As Long
id = pEnumIDs.Next 'je parcours l'enumération de la sélection


Do
    Set pFeature = pFeatureClass.GetFeature(id) 'j'accède à la classe feature par son id
    Set pRowBuffer = pFeature 'je me place sur Irowbuffer
    Value = pRowBuffer.Value(0)
    MsgBox Value 'place du champ 0= champ 1, 1 = champ 2,etc...
    
    ' commande pour ajouter la valeur pRowBuffer à la listbox
    UserForm1.ListBox1.AddItem Value
    id = pEnumIDs.Next
Loop Until id = -1

End Sub

et ce code peut être lancé à l'initialisation du formulaire à l'ecran
en appalement la fonction à l'ouverture
comme ceci

Code:

Private Sub UserForm_Initialize()
Call test
End Sub

En espérant que ça t'aide


A+

Hors ligne

 

#5 Mon 17 May 2010 13:36

zaynabe
Participant occasionnel
Date d'inscription: 13 May 2010
Messages: 12

Re: [arcgis9.3] remplir listbox à partir d'une séléction sur la carte

bonjour
merci à forestis et nicolas pour l'aide
je suis arrivée à afficher les identifiants des entités sélectionnées dans ma listbox
voici le code que j'ai utilisé

Code:

' Declarations
Dim pMxDoc As IMxDocument
Dim pMap As IMap
Dim pFeatLayer As IFeatureLayer
Dim pFeatSel As IFeatureSelection
Dim lstIDs As IEnumIDs
Dim Fid As Long 'OID d'une entité selectionnée
Dim i As Long


' Corps
Set pMxDoc = ThisDocument
Set pMap = pMxDoc.FocusMap

' Affectation de la couche contenant la selection
Set pFeatLayer = pMap.layer(i)

' Affectation de l'interface IFeatureSelection
Set pFeatSel = pFeatLayer

' Récupération des identifiants des entités sélectionnées
Set lstIDs = pFeatSel.SelectionSet.IDs

' Boucle sur les OID sélectionnés
For i = 0 To (pFeatSel.SelectionSet.Count - 1)
Fid = lstIDs.Next

' Action sur l'entité selectionnée
ListBox1.AddItem lstIDs.Next

Next i

GoTo ResetVar
Exit Sub

ResetVar:
Set pMxDoc = Nothing
Set pMap = Nothing
Set pFeatLayer = Nothing
Set pFeatSel = Nothing
Set lstIDs = Nothing

mais il ya un autre problème avec ce code: les identifiants s'affichent, mais en bas de la list, il ya des " -1 " qui s'affichent!!! je ne sais pas d'où ça vient!!
quelqu'un peut m'aider pour régler ce problème
merci

Hors ligne

 

#6 Mon 17 May 2010 14:16

Cornet Jérémie
Participant assidu
Lieu: Nouméa
Date d'inscription: 6 Apr 2008
Messages: 229

Re: [arcgis9.3] remplir listbox à partir d'une séléction sur la carte

Bonjour Zaynabe,

Je t'ai répondu sur
http://www.forumsig.org/showthread.php?t=27056

Quand tu fais un post sur les 2 forums, n'hésites pas à le dire et à mettre le lien pour éviter les double réponses et pour que les contributeurs des 2 forums ne répondent pas alors que ca a déjà été fait sur l'autre forum.

Bonne continuation !

Jérémie

Dernière modification par Cornet Jérémie (Mon 17 May 2010 14:17)

Hors ligne

 

#7 Mon 17 May 2010 16:04

zaynabe
Participant occasionnel
Date d'inscription: 13 May 2010
Messages: 12

Re: [arcgis9.3] remplir listbox à partir d'une séléction sur la carte

merci beaucoup jérémie
le programme marche bien maintenant
bonne journée

Hors ligne

 

Pied de page des forums

Powered by FluxBB