#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: 186
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 SubHors 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: 186
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 SubHors 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: 186
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 FunctionHors 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
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


