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éfinition : Tableaux 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 :
tableau(5) 'correspond à la case dont le rang est 5 c'est à dire 18
tableau(8) = 1 'met le chiffre 1 dans la case de rang 8
i = 4
tableau(i) = 12 'met le chiffre 12 dans la case de rang 4
Définition : Déclaration
Dim NomVariable(taille) As type
Exemple :
Dim tableau(9) As Integer
Tableau de 10 entiers allant de la case 0 à la case 9
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.
Exemple : Remplir et Afficher un tableau de 10 nombres
Sub Exemple()
Dim tableau(9) As Integer 'tableau de 10 entiers
Dim i As Integer
Dim texte As String
For i = 0 To 9
tableau(i) = InputBox("entrez le chiffre de rang " & i)
Next i
texte = ""
For i = 0 To 9
texte = texte & tableau(i) & ","
Next i
MsgBox(texte)
End Sub
Méthode : Dé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
Sub ProgrammePrincipal()
Dim liste(9) As Integer
Call remplirTab(liste)
Call afficheTab(liste)
End Sub
Remplir
Sub remplirTab(tableau)
Dim i As Integer
For i = LBound(tableau) To UBound(tableau)
tableau(i) = InputBox("entrez le chiffre de rang " & i)
Next i
End Sub
Afficher
Sub afficheTab(tableau)
Dim i As Integer
Dim texte As String
texte = ""
For i = LBound(tableau) To UBound(tableau)
texte = texte & tableau(i) & ","
Next i
MsgBox(texte)
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éfinition : Tableaux multidimensionnels
Déclaration d'un tableau multidimensionnel
Dim tableau(5,3) as Integer 'tableau à 2 dimensions de 5 sur 3 entiers
tableau(3,1)=10
0 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|
0 | ? | ? | ? | ? | ? |
1 | ? | ? | ? | 10 | ? |
2 | ? | ? | ? | ? | ? |
Méthode : Dimensionnement dynamique
On peut dimensionner (ou redimensionner) un tableau dynamiquement.
Sub test()
Dim tableau()
a = inputBox("Donnez la taille du tableau");
ReDim tableau(a)
...
End Sub
Méthode : Range et tableau
On peut affecter le contenu de cellules à une variable.
Sub test()
Dim tableau()
Dim limiteBasseDim1 As Integer
Dim limiteBasseDim2 As Integer
Dim limiteHauteDim1 As Integer
Dim limiteHauteDim2 As Integer
tableau = Range("A1:C5").Value
limiteBasseDim1 = LBound(tableau, 1) 'vaut 1
limiteBasseDim2 = LBound(tableau, 2) 'vaut 1
limiteHauteDim1 = UBound(tableau, 1) 'vaut 5
limiteHauteDim2 = UBound(tableau, 2) 'vaut 3
Range("D3").Value = tableau(2, 1) '2ième ligne 1ère colonne
End Sub
Le tableau retourné est un tableau à deux dimensions (ligne, colonne).
Attention, il a ses deux dimensions qui commencent à l'indice 1.