Tableau

Les tableaux permettent de regrouper des données dans la même variable.

(Coordonnées de vecteurs, listes de nombres, listes de caractères, listes de mots, ...).

DéfinitionTableaux unidimensionnels

Rang

0

1

2

3

4

5

6

7

8

9

Valeur

5

19

65

12

765

18

76

1

45

4

Pour accéder à la valeur d'une case d'un tableau, il suffit de la désigner par son rang :

1
tableau(5) 'correspond à la case dont le rang est 5 c'est à dire 18
2
tableau(8) = 1 'met le chiffre 1 dans la case de rang 8
3
i = 4
4
tableau(i) = 12 'met le chiffre 12 dans la case de rang 4

DéfinitionDéclaration

1
Dim NomVariable(taille) As type

Exemple :

1
Dim tableau(9) As Integer

Tableau de 10 entiers allant de la case 0 à la case 9

1
Dim tableau(1 To 10) As String

Tableau de 10 chaînes de caractères commençant à l'indice 1 et terminant à l'indice 10.

ExempleRemplir et Afficher un tableau de 10 nombres

1
Sub Exemple()
2
Dim tableau(9) As Integer 'tableau de 10 entiers
3
Dim i As Integer
4
Dim texte As String
5
For i = 0 To 9
6
  tableau(i) = InputBox("entrez le chiffre de rang " & i)
7
Next i
8
texte = ""
9
For i = 0 To 9
10
  texte = texte & tableau(i) & ","
11
Next i
12
MsgBox(texte)
13
End Sub

MéthodeDécoupage en plusieurs sous-routines

Pour réaliser l'exercice précédent, on préférera le découper en trois sous-routines.

  • Un programme principal

  • Une sous-routine RemplirTab

  • Une sous-routine AfficheTab

Programme Principal

1
Sub ProgrammePrincipal()
2
Dim liste(9) As Integer
3
Call remplirTab(liste)
4
Call afficheTab(liste)
5
End Sub

Remplir

1
Sub remplirTab(tableau)
2
Dim i As Integer
3
For i = LBound(tableau) To UBound(tableau)
4
  tableau(i) = InputBox("entrez le chiffre de rang " & i)
5
Next i
6
End Sub

Afficher

1
Sub afficheTab(tableau)
2
Dim i As Integer
3
Dim texte As String
4
texte = ""
5
For i = LBound(tableau) To UBound(tableau)
6
  texte = texte & tableau(i) & ","
7
Next i
8
MsgBox(texte)
9
End Sub

tableau : pour le passage d'un tableau en paramètre on ne précise pas sa taille.

UBound : limite supérieure du tableau. Permet de traiter des tableaux de tailles différentes.

Lbound : limite inférieure du tableau.Par défaut les tableaux commencent à l'indice 0. Mais, on peut le modifier.

DéfinitionTableaux multidimensionnels

Déclaration d'un tableau multidimensionnel

1
Dim tableau(5,3) as Integer 'tableau à 2 dimensions de 5 sur 3 entiers
2
tableau(3,1)=10

0

1

2

3

4

0

?

?

?

?

?

1

?

?

?

10

?

2

?

?

?

?

?

MéthodeDimensionnement dynamique

On peut dimensionner (ou redimensionner) un tableau dynamiquement.

1
Sub test()
2
  Dim tableau()
3
  a = inputBox("Donnez la taille du tableau");
4
  ReDim tableau(a)
5
  ...
6
End Sub

MéthodeRange et tableau

On peut affecter le contenu de cellules à une variable.

1
Sub test()
2
  Dim tableau()
3
  Dim limiteBasseDim1 As Integer
4
  Dim limiteBasseDim2 As Integer
5
  Dim limiteHauteDim1 As Integer
6
  Dim limiteHauteDim2 As Integer
7
  tableau = Range("A1:C5").Value
8
  limiteBasseDim1 = LBound(tableau, 1) 'vaut 1
9
  limiteBasseDim2 = LBound(tableau, 2) 'vaut 1
10
  limiteHauteDim1 = UBound(tableau, 1) 'vaut 5
11
  limiteHauteDim2 = UBound(tableau, 2) 'vaut 3
12
  Range("D3").Value = tableau(2, 1) '2ième ligne 1ère colonne
13
End Sub

Le tableau retourné est un tableau à deux dimensions (ligne, colonne).

Attention, il a ses deux dimensions qui commencent à l'indice 1.