Ce tutoriel montrera comment utiliser des tableaux dynamiques (redim et redim preserve) dans VBA.
Tableau dynamique
Tableaux dynamiques sont des tableaux qui peuvent changer de taille (par opposition à tableaux statiques, qui sont statiques).
Pour déclarer un tableau dynamique, vous déclarez le tableau, mais omettez la taille du tableau :
1 | Dim strNames() en tant que chaîne |
Ensuite, avant de pouvoir attribuer des valeurs à votre tableau, vous devez utiliser l'instruction ReDim pour définir le tableau à la taille souhaitée :
1 | ReDim strNames (1 à 3) |
Maintenant, chaque fois que vous souhaitez modifier la taille de votre tableau, utilisez simplement ReDim (ou ReDim Preserve comme nous le verrons ci-dessous).
Tableaux de variantes dynamiques
Remarque : les tableaux de variantes sont un peu différents. Avec les tableaux de variantes, vous n'avez pas besoin de définir la taille du tableau avec ReDim avant d'attribuer des valeurs.
12345678 | Sous TableauTest()'déclarer la variableDim varNames() en tant que variante'remplir le tableauvarNames() = Array("Fred", "Wilma", "Barney", "Betty")'retourner les valeursMsgBox Join(varNames, ",")Fin du sous-marin |
Redim contre Redim Preserve
Les ReDim l'instruction redimensionne un tableau, clairière toutes les valeurs existantes.
Les ReDim préserver l'instruction redimensionne un tableau, en gardant (« préserver ») toutes les valeurs existantes.
Utilisation de ReDim
En pratique, le redimensionnement d'un tableau avec ReDim ressemble à ceci :
123456789101112 | Sous TestReDim()'déclare le tableau de chaînesDim strNames() en tant que chaîne'redimensionner le tableau de chaînes pour pouvoir contenir 3 valeursReDim strNames (1 à 3)'remplir le tableau avec 3 nomsstrNames(1) = "Mel"strNames(2) = "Steve"strNames(3) = "Bob"'afficher le résultat dans la fenêtre immédiateDebug.Print Join(strNames, vbCrLf)Fin du sous-marin |
Utilisation de ReDim Preserve
Dans cet exemple, nous utiliserons ReDim pour définir le tableau dynamique initial, puis ReDim Preserve pour redimensionner le tableau, en gardant les valeurs d'origine :
1234567891011121314151617 | Sous TestReDim()'déclare le tableau de chaînesDim strNames() en tant que chaîne'redimensionner le tableau de chaînes pour pouvoir contenir 3 valeursReDim strNames (1 à 3)'remplir le tableaustrNames(1) = "Mel"strNames(2) = "Steve"strNames(3) = "Bob"'afficher le résultat dans la fenêtre immédiateDebug.Print Join(strNames, vbCrLf)'redim mais préserve les donnéesReDim Preserve strNames (1 à 4)strNames(4) = "Fred"'afficher le résultat dans la fenêtre immédiateDebug.Print Join(strNames, vbCrLf)Fin du sous-marin |
Si vous n'utilisez pas le PRÉSERVER instruction, vous perdriez les données qui se trouvaient précédemment dans le tableau.
Dans la fenêtre immédiate ci-dessus, le tableau a rempli Mel, Steve et Bob. Lorsqu'il a été à nouveau déclaré, il a supprimé ces valeurs et a renvoyé à la place 3 valeurs vides, puis la valeur « Fred ». Ceci est dû au PRÉSERVER déclaration étant omise.