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é ?

#1 Mon 28 March 2011 10:26

plouplou
Participant occasionnel
Date d'inscription: 3 Mar 2010
Messages: 30

[ArcGis] Boucle, concaténation et incrémentation dans l'editeur VBA

Bonjour à tous,

J'ai essayé de me passer de votre aide pour régler ce problème, qui n'est qu'un simple problème de syntaxe, mais la je craque nerveusement ^^.

Donc voila le souci, j'ai une table "Arbres" où les arbres sont identifiés par un numéro de station. Une station comporte plusieurs arbres, et un arbre est relié à une seule station par le numéro de cette derniere.

Or, je voudrais que chaque arbre est un identifiant unique qui se composerait de son numéro de station d'un tiret puis d'un numéro de 1 à x que l'on incrémente.

j'ai donc créer un champ N_ arbre, dans lequel j'ai essayé de calculer ce numéro arbre via le calculateur de champ et ce code :

Code:

dim i as integer
dim j as string

i= [arbres.N_Station] 
j= [arbres.N_arbre] 

For i  = 0 To 9438
j= i &"-" + 1
Next i
end for

A chaque fois, j'ai le message d'erreur de syntaxe.
J'espère être quand même être pas loin du bon résultat ^^.

Merci d'avance pour vos réponses.

A +

Hors ligne

 

#2 Mon 28 March 2011 11:56

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

Re: [ArcGis] Boucle, concaténation et incrémentation dans l'editeur VBA

Bonjour, je perçois quelques erreurs dans votre code.

1er = vous utilisez deux fois la variable i pour définir à la fois votre champ [arbres.N_Station] et à la fois dans la boucle ("For i = 0 to...")
2ème = il n'est pas nécessaire de faire une boucle dans le calculateur de champ pour chaque ligne de la table. En effet le code sera exécuté ligne par ligne.
Il ne vous est pas pssible à ma connaissance de faire un calcul incrémental puisque le code est exécuté ligne par ligne. Pourquoi ne pas utiliser le champ FID.
3ème = dans votre variable 'j' vous effectuez un calcul ("... +1") ce qui en doit pas plaire à ArcGIS.

la première des choses est de ce mettre en mode avancé
Ensuite assurez-vous que vous deux champs sont bien du type que vous leur attribuez dans le code

Voici un exemple de code :

Code:

dim resultat as string

dim i as integer
dim j as integer
i= [arbres.N_Station] 
j= [FID] 

resultat = Cstr(i) & '_' & Cstr(j)

et puis

Code:

votre_champ = resultat

A+

Hors ligne

 

#3 Mon 28 March 2011 12:04

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

Re: [ArcGis] Boucle, concaténation et incrémentation dans l'editeur VBA

Il ne vous est pas pssible à ma connaissance de faire un calcul incrémental puisque le code est exécuté ligne par ligne.


Avec une variable "static", c'est possible, cf par exemple http://georezo.net/forum/viewtopic.php?id=70062


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#4 Mon 28 March 2011 12:24

plouplou
Participant occasionnel
Date d'inscription: 3 Mar 2010
Messages: 30

Re: [ArcGis] Boucle, concaténation et incrémentation dans l'editeur VBA

Bonjour et merci pour vos réponses.

Du coup, je vais essayer de m'inspirer de vos deux réponses pour calculer ce champ.

Merci encore

Dernière modification par plouplou (Mon 28 March 2011 12:27)

Hors ligne

 

Pied de page des forums

Powered by FluxBB