Il est de bon ton de se souhaiter la bonne année. Mais vous, et vous seul, pourrez faire en sorte que cette année soit bonne, meilleure que celle qui vient de s'écouler. Apprenez à ne compter que sur vous, car personne n'est plus qualifié que vous-même pour bâtir, réparer ou améliorer votre propre vie. Personne ne fera les choses à votre place. D'ailleurs, tout ce que les autres peuvent faire, c'est souhaiter que vous le fassiez. Et ne croyez pas que tout ceux qui vous entourent vous apporteront des solutions : certains font juste partie de vos problèmes. Transformez vos résolutions en actes, et dans douze mois, retournez-vous et souriez-vous fièrement : C'était long. C'était difficile. Mais ça y est : 2017 était une bonne année, merci Moi.

Les tableaux

Lorsque vous avez besoin d'un emplacement pour mettre une seule voiture, il n'y à pas de problème : Vous louez un seul garage. Quand vous avez besoin d'une seule variable, pas de problème non plus. Mais si tout à coup vous avez 10 ou 50 voitures à caser, chacune dans un garage, vous pouvez recherchez 10 ou 50 garages différents, mais ce sera long et difficile. Vous allez plutôt essayer de louer un parking composé de garages les uns à côté des autres. 

Le parking aura un nom, et chaque garage le composant sera numéroté. En programmation, c'est pareil : Si vous avez besoin de plusieurs variables les unes à côté des autres (par exemple, la température du 1.1.2000, du 2.1.2000, du 3.1.2000, etc. jusqu'au 31 janvier), vous pourriez donc déclarer 31 variables qui s'appelleront par exemple 1Janvier, 2Janvier, 3Janvier, etc. jusqu'à 31Janvier... N'est-ce pas lourd ? 

En fait, on pourrait simplement faire comme le parking : C'est à dire déclarer une variable qui s'appellerait Janvier, et qui serait suivie d'un numéro pour savoir de quel jour il s'agit, comme ceci : Janvier[1], Janvier[2], etc. jusqu'à Janvier[31]. Cette variable Janvier s'appelle un TABLEAU. Il faut donc, dans ce cas, DECLARER un TABLEAU.


Exemple basique

Sub Tableau()
  Dim Armoire(3)
  Armoire(1) = "Assiette"
  Armoire(2) = "Verre"
  Armoire(3) = "Serviette"
  MsgBox Armoire(1)
  MsgBox Armoire(2)
  MsgBox Armoire(3)
End Sub


Exemple de tableau typé

Sub tableauV2()
  Dim Tableau(1 To 10) As Integer
  ' Tableau(3) = "test" Génère une erreur
  Tableau(4) = 775
End Sub


Il est possible de déclarer un tableau à un nombre d'éléments non défini, et ensuite, dynamiquement, lui donner des dimensions concrètes grâce à ReDim

Sub TableauV3()
  Dim Tableau()
  NombreCase = Val(InputBox("Combien d'éléments voulez-vous ?"))
  ReDim Tableau(15)
End Sub


Remplissage d'un tableau de taille personnalisée avec toujours 33 dans chaque élément

Sub TableauV4()
  Dim Etagere() As Integer
  Dim NombreCase As Integer
  NombreCase = Val(InputBox("Combien d'éléments voulez-vous ?"))
  ReDim Etagere(NombreCase)
  For compteur = 1 To NombreCase
    NombreCase (compteur = 33)
  Next
End Sub


Remplissage d'un tableau de taille personnalisée avec l'aide de l'utilisateur

Sub TableauV5()
  Dim Etagere() As Integer
  Dim NombreCase As Integer
  NombreCase = Val(InputBox("Combien d'éléments voulez-vous ?"))
  ReDim Etagere(NombreCase)
  For compteur = 1 To NombreCase
    NombreCase = InputBox("Entrez le nombre N°" & compteur & " : ")
  Next
End Sub


Même chose, avec ensuite affichage des choix de l'utilisateur

Sub TableauV6()
  Dim Etagere() As Integer
  Dim NombreCase As Integer
  NombreCase = Val(InputBox("Combien d'éléments voulez-vous ?"))
  ReDim Etagere(NombreCase)
  For compteur = 1 To NombreCase
    Etagere(compteur) = InputBox("Entrez le nombre N°" & compteur & " : ")
  Next
  For compteur = 1 To NombreCase
    Selection.TypeText Etagere(compteur)
    Selection.TypeParagraph
  Next
End Sub


Maintenant, en plus il donne le plus grand des chiffres

Sub TableauV7()
  Dim Etagere() As Integer
  Dim NombreCase As Integer
  NombreCase = Val(InputBox("Combien d'éléments voulez-vous ?"))
  ReDim Etagere(NombreCase)
  For compteur = 1 To NombreCase
    Etagere(compteur) = InputBox("Entrez le nombre N°" & compteur & " : ")
  Next
  For compteur = 1 To NombreCase
    Selection.TypeText Etagere(compteur)
    Selection.TypeParagraph
  Next
  Dim LePlusGrand As Integer
  LePlusGrand = 0
  For compteur = 1 To NombreCase
    If Etagere(compteur) > LePlusGrand Then 
      LePlusGrand = Etagere(compteur)
    End If
  Next
  Selection.TypeText "Le plus grand est " & LePlusGrand
End Sub

Exercice : Trouver également le plus petit et la moyenne de tous les nombres