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