tableau dynamique

tableau dynamique - VB/VBA/VBS - Programmation

Marsh Posté le 06-05-2003 à 14:27:07    

Bonjour a tous,  
Comment faire un tableau dynamique, de String.
Voila mon code, mais il ne l'accepte pas lors de la compilation, il me dit incompatibilité de type.
 
Dim tableau As Variant
 
tableau = ""

Reply

Marsh Posté le 06-05-2003 à 14:27:07   

Reply

Marsh Posté le 06-05-2003 à 14:28:03    

Excuser moi, j'ai oublié l'indice
 
Dim ...
 
tableau(0) = ""  
:pt1cable:

Reply

Marsh Posté le 06-05-2003 à 15:46:51    

1) tu peux parfaitement faire un  

Code :
  1. Dim MonTableau() As Integer


 
et le redimensionner après comme tu veux: l'avantage étant que ses éléments sont typés suivant ton désir.
 
2) Sinon pour une variable typée Variant comme tu l'as montré, tu fais directement un:
 

Code :
  1. Redim Preserve MonTableau(Compte)


 
L'avantage d'un tableau comme tu l'as défini est qu'il peut recevoir le résultat d'un appel à l'instruction Split, contrairement à une variable déclarée à mon point 1)
 
Donc si tu n'utilises pas le Split, je te conseille la première déclaration.
 
Ensuite, la clause Preserve est facultative à la première initialisation du tableau, mais indispensable dans une boucle pour préserver les données faisant déjà partie du tableau.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 06-05-2003 à 16:04:25    

C'est quoi le split?
Sinon, j'ai utilisé la premiere solution et ça marche. Juste une derniere question, comment je peux connaitre la longueur du tableau. En fait je je veux faire un parcour sur les elements du tableau:
For i = 1 to len(tableau())
   ...
next
 
Et ça marche pas, il ne comprend pas len(tableau()). Comment faire?

Reply

Marsh Posté le 06-05-2003 à 16:09:33    

Split: instruction qui convertit une chaîne en tableau, sachant que la chaîne contient un caractère spécial permettant de couper la chaîne en éléments.  L'instruction qui fait le contraire est Join.  Je te renvoie à l'aide pour les détails ;)
 
Len ne fonctionne que pour les strings.  Pour les tableaux, on prend LBound et UBound.  Ta boucle ressemblerait donc ceci:
 

Code :
  1. For Index = LBound(tableau) To UBound(tableau)


 


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 06-05-2003 à 16:12:09    

for i=lbound(montableau) to ubound(montableau)
...
next
 
lbound: borne inférieure du tableau
Ubound: borne supérieure du tableau
 
et jette un coup d'oeil à l'aide, c'est tout expliqué dedans.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 06-05-2003 à 16:37:48    

Merci les gars, mais ça ne marche pas tout a fais, ou est-ce que j'ai fais une erreur?
 
dim i as Integer
dim tableau() as String
 
for i = 1 to UBound(tableau)
 ...
next
 
il plante au niveau de Ubound en me disant:  
"L'indice n'appartient pas a la selection"

Reply

Marsh Posté le 06-05-2003 à 16:39:12    

c'est parce que tu n'a pas fait de redim sur ton tableau. la fonction Ubound renvoit une erreur quand on lui file un tableau dynamique non dimensionné en paramètre.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 06-05-2003 à 16:48:55    

Ok, et ça marche comment redim?

Reply

Marsh Posté le 06-05-2003 à 16:55:44    

toutoun88 a écrit :

Ok, et ça marche comment redim?


t'as pas l'aide dans ton VB ?
si c'est pas le cas, jett un oeil sur les [:msdn]
http://msdn.microsoft.com


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed