0

Tuto les Tableaux Dynamiques

Les tableaux dynamique ou tableau mémoire sont utiles pour traiter les données directement en memoire et ainsi réduire le temps d’execution d’une fonction , limités l’accés aux fichiers, a une base..etc
Par exemple si vous devez lire un fichier texte pour rechercher une information plusieurs fois , il suffit de le « monter en mémoire » une fois pour ensuite y accéder autant de fois que vous le désirez sans re-ouvir le fichier.

Les tableau mémoire sont plus qu’une variable, on va dire une « très grosse » variable pouvant contenir plusieurs données d’un seul type, chaque une de ses données étant repérer par un indice (ou index).

Ils peuvent être de 1 à  plusieurs dimension.

 un tableau commence toujours par l’index 0

Déclaration d’un tableau mémoire vide d’une dimension :

dim tab() as string

On peut ensuite le redimensionner suivant nos besoin,
Dans notre cas nous allons remplir un tableau de 10 éléments comprenant les nombre paire compris entre 0 et 20

On redimensionne donc notre tableau

Redim tab(10)

pour remplir notre tableau  nous allons aller de  2 a 20  en comptant de 2 en 2

 

for i=2 to 20  step 2 'step 2 nous allons  de 2 en 2 (nombres pairs)
 tab(i)=i  'au premier tour i vaut 2, puis 4, puis 6 ....etc
next

'le resultat dans tab() est 
tab(0)=2 ; tab(1)=4 ; tab(2)=6....tab(9)=20 (il y a bien 10 éléments)

à la fin de la boucle, nombre vaudra : « 2-4-6-8-10-12-14-16-18-20″

Nous allons ensuite afficher notre tableau, pour cela nous allons faire une boucle qui commence à 0 (souvenez vous , 0 est le premier indice du tableau), jusqu’à la limite du tableau (ubound(tab))

 

for i= 0 to ubound(tab) -1
 nombre = nombre & tab(i) & "-" 
next i

Redimension d’un tableau

il est possible de redimensionner un tableau en utilisant l’instruction redim, seulement si un tableau contient des donnée cette instruction aura pour effet de les supprimer ,

Exemple :

redim tab(20), va redimensionner notre tableau de 10 élément à 20 éléments , mais va supprimer tout ce qu’il contient.

pour éviter cela , il suffit de combiner Redim avec preserve comme ceci

redim Preserve tab(20) va garder nos 10 éléments et va rajouter 10 espace mémoire supplémentaire

nous pouvons maitenant rajouter par exemple :

tab(10)=22 : tab(11)=24….etc tab(19)=30

 

Imaginons que nous souhaitons supprimer tout les nombre inférieur a 10

voici une petite fonction bien utile , puisque qu’au fur et à mesure qu’elle supprime un élément elle redimentionne automatiquement le tableau

Public Sub Supprime(ByRef tableau() As string, element As integer)
Dim i As Integer
     For i = element To UBound(tableau) - 1
        tableau(i) = tableau(i + 1)
     Next
ReDim Preserve tableau(UBound(tableau) - 1)
End Sub

donc pour notre exemple, nous allons parcourir le tableau pour rechercher si l’élément est inférieur à 10 auquel cas on le supprime du tableau

Pour faire une recherche dans un tableau, on doit le parcourir par une boucle du début à la fin

dim i as integer
For i = 0 to ubound(tab)
   if tab(i)<10 then
       supprime(tab,i)
   end if
next i

La fonction split

La fonction split(machaine, monseparateur) permet de découper une chaîne suivant un séparateur donné et de la mettre automatiquement dans un tableau dynamique.

soit un une variable « phrase » contenant une chaine, nous voulons extraire chaque mot qui sont séparer par des espace

dim phrase as string ="je suis membre vb de tresorsdevie.free.fr",
dim tabmot=split(chaine," ")

split va redimensionner automatiquement notre tableau et mettre chaque mot dans un index soit:

tabmot(0)="je"
tabmot(1)="suis"
tabmot(2)="membre"
tabmot(3)="vb"
tabmot(4)="de"
tabmot(5)="tresorsdevie.free.fr"

Sur les tableaux à 2 dimensions (matrice), le premier indice représente les lignes, le deuxième les colonnes

dim tab(3,2) as string  ’ (4 lignes sur 3 colonnes)

 

tab(0,0) tab(0,1) tab(0,2)
tab(1,0) tab(1,1) tab(1,2)
tab(2,0) tab(2,1) tab(2,2)
tab(3,0) tab(3,1) tab(3,2)

exemple de données

prenom age lieu
selkis 36 corse
mathieu 30 paris
charles 25 nice

si l’on veut maintenant connaitre les informations de la personne qui habite paris, on va rechercher le lieu et afficher le prénom et l’age:

dim i as integer
dim prenom, age as string
for i=0 to ubound(tab) -1
  if tab(i,2)=paris then
      prenom=tab(i,0)
      age=tb(i,1)
next

messagebox.show prenom & " " age

You must be logged in to post a comment.