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 03 May 2007 13:30

jamal83
Participant occasionnel
Date d'inscription: 16 Apr 2007
Messages: 20

probleme dans VBA

Bonjour tout le monde.



   Je travail sur une application dans VBA en ArcGis 9.1



   Je veux afficher le contenu d'un  tableau en utilisant la fonction Console.Write.Line. Le code utilisé est le suivant:



   Dim arr(5) As Integer

      Dim i As Integer

      For i = 0 To arr.GetUpperBound(0)

         arr(i) = i * i

      Next i



     For i = 0 To arr.GetUpperBound(0)

         Console.WriteLine("arr(" & i & ") = " & arr(i))

      Next i

  Mais il me signale l'erreur suivante lors de l'exection:

   erreur n 424

   objet requis

Y a quelqu'un qui peut m'aider à faire marcher ce code, ou me proposer une autre methode pour aficher le contenu d'un tablea dans VBA.

                                         Merci

Hors ligne

 

#2 Thu 03 May 2007 13:53

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

Re: probleme dans VBA

la fonction Ubound renvoie l'indice maxi dans la dimension spécifiée.

ce code fonctionne :

Code:

Sub toto()

Dim tt(5) As Integer
Dim i As Integer

For i = 1 To UBound(tt)
    tt(i) = i * i
Next i

For i = 1 To UBound(tt)
    MsgBox "tt(" & i & ") = " & tt(i)
Next i


End Sub

Hors ligne

 

#3 Thu 03 May 2007 14:13

jamal83
Participant occasionnel
Date d'inscription: 16 Apr 2007
Messages: 20

Re: probleme dans VBA

Merci ce code , marche. mais le probléme c'est que ce code affiche le contenu de chaque élément un par 1

Moi, je veux afficher tous les élément d'un tableau dans une seul fenetre sous la forme suivante
T(1)=
T(2)=
;
;
;
T(N)=

                            Merci pour votre aide

Hors ligne

 

#4 Thu 03 May 2007 14:23

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

Re: probleme dans VBA

essaye ça, pour l'affichage, on concatène tous les éléments du tableau dans une seule chaine

Code:

Sub toto()

Dim tt(5) As Integer
Dim i As Integer
Dim chaine as String

For i = 1 To UBound(tt)
    tt(i) = i * i
Next i

For i = 1 To UBound(tt)
    chaine=chaine & "tt(" & i & ") = " & tt(i) & chr(10)   'ici concaténation des éléments du tableau dans une seule chaine (chr(10) = caractère retour chariot)
Next i

MsgBox chaine

End Sub

Hors ligne

 

#5 Thu 03 May 2007 15:32

jamal83
Participant occasionnel
Date d'inscription: 16 Apr 2007
Messages: 20

Re: probleme dans VBA

Merci beaucoup c'est exactement ce que je cherche.

Maintenant, je cherche une fonction qui permet de classer les element d'un tableau dans l ordre decroissant

    Pouvez vous m'aider?

Hors ligne

 

#6 Thu 03 May 2007 15:56

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

Re: probleme dans VBA

ce code doit marcher
la fonction prend le tableau de valeurs en paramètre et renvoie le tableau trié

Code:

'tri un tableau de chaines par ordre décroissant
Function TriTab(t() As Integer) As Integer()

    Dim TabRes() As Integer
    Dim i As Integer, j As Integer
    Dim ttt As String

    ReDim TabRes(1 To UBound(t))
    For i = 1 To UBound(t)
        TabRes(i) = t(i)
    Next i
    
    For i = 1 To UBound(TabRes) - 1
        For j = i To UBound(TabRes)
            If TabRes(j) > TabRes(i) Then
                ttt = TabRes(i)
                TabRes(i) = TabRes(j)
                TabRes(j) = ttt
            End If
        Next j
    Next i

    TriTab = TabRes
    
End Function

Hors ligne

 

#7 Thu 03 May 2007 16:28

nicolas valls
Participant assidu
Date d'inscription: 28 Oct 2005
Messages: 154

Re: probleme dans VBA

je rajouterai an haut du module (avant toute procédure)
option compare text

Imaginons les mots suivant : Après, aller
Sans option compare text le classement donnera : Après , aller
Avec option compare text le classement donnera : aller, Après


Nicolas VALLS
Géomaticen
Cabinet Pierre GRILLET

Hors ligne

 

#8 Thu 03 May 2007 17:08

jamal83
Participant occasionnel
Date d'inscription: 16 Apr 2007
Messages: 20

Re: probleme dans VBA

Merci beaucoup pou votre aide

Hors ligne

 

Pied de page des forums

Powered by FluxBB