Arrays : fonctions natives d'excel
Vous pouvez télécharger le classeur fc-pap-arrays qui illustre les exemples présentés sur les pages pas à pas traitant des arrays
Attention, le code présenté dans ce tutoriel et dans le classeur exemple a été écrit et vérifié avec la version 2010 d'excel. Certaines propriétés peuvent ne pas fonctionner avec des versions antérieures, et avec les versions Mac d'excel antérieures à 2011.
Merci d'utiliser les commentaires pour poser des questions directement en rapport avec CE tutoriel EXCLUSIVEMENT et de poser les questions sur vos développements particuliers sur le forum microsoft answers excel.
Array
IsArray
Erase
Boucler
Split et Join
Filter
Array
Nous avons déjà vu cette instruction sur la page d'introduction. Elle permet d'énumérer les éléments d'un array pour le remplir. L'array ainsi créé est toujours de tpe variant.
Dim Tblo(4)
Tblo=array("lundi", "mardi", "mercredi", "jeudi")IsArray
Cette fonction renvoie vrai ou faux. Elle permet de tester si une variable est un tableau ou pas.
Dim Tblo debug.print IsArray(Tblo) renvoie vrai
Erase
Permet en cours de procédure d'effacer le contenu d'un array. La place mémoire n'est pas libérée. Les dimensions de l'array sont conservées.
Dim Tblo(3) Tblo(1) = "janvier" Tblo(2) = "février" Tblo(3) = "mars" Debug.Print Tblo(2) 'renvoie février Erase Tblo Debug.Print Tblo(2) 'renvoie ""
Boucler sur les éléments d'un array
On peut utiliser deux syntaxes :
La première est plus rapide que la seconde mais elle ne permet que de LIRE, pas de modifier les éléments d'un array.
Elle a aussi l'avantage d'être plus légère en écriture.
For Each élément In Tblo Total = Total + élément Next
For i = LBound(Tblo) To UBound(Tblo) Total = Total + Tablo(i) Next
Split et Join
La fonction split (apparue avec excel 2000) permet de séparer les différents éléments d'une chaîne de caractères séparés par un élément repérable : espace, ponctuation, signe quelconque.
Inversement, la fonction join permet de concaténer les éléments d'un array.
Comme la fonction array, split créé un array de type VARIANT, même si tous les éléments ne sont que des textes ou des nombres. Déclarer cet array autrement que variant renvoie une erreur.
L'array créé par la fonction split est toujours de dimension 1.
Sub splitarray() Dim Tblo Dim MaPhrase As String, Inverse As String Dim i As Integer MaPhrase = "Il fait froid et sec ce matin" Tblo = Split(MaPhrase, " ") 'l'array Tblo créé a toujours 0 comme limite inférieure, même si option base 1 est inscrit en tête de module 'si on veut renverser les mots de la phrase on boucle sur les éléments de l'array en commençant par le dernier For i = UBound(Tblo) To LBound(Tblo) Step -1 Inverse = Inverse & " " & Tblo(i) Next i Debug.Print Inverse End Sub
Et pour transformer un array en une chaîne de caractères, la fonction inverse : Join
L'array doit être à une dimension seulement.
Sub joinarray()
Dim Tblo
Dim MaPhrase As String
Tblo = Array("Le", "petit", "lapin", "blanc")
MaPhrase = Join(Tblo, " ")
Debug.Print MaPhrase
End SubFilter
Cette fonction fort utile permet de rechercher la présence d'un élément dans un array.
Attention, l'array est obligatoire ment à 1 dimension seulement.
Filter(SourceArray, match, [include, [compare]])
SourceArray indique l'array dans lequel on effectue la recherche
Si SourceArray n'est pas un Array ou est un array à 2 dimensions, la fonction renvoie une erreur.
Match : ce que l'on cherche
Include : argument facultatif, vrai par défaut, renvoie un array contenant les éléments de SourceArray répondant au critère de recherche. Faux renvoie un array des éléments ne contenant PAS l'élément recherché.
Compare : argument faculatif, indique comment l'élément doit être recherché.
- 0 : VbBinaryCompare, effectue une comparaison binaire. Distingue les majuscules et les minuscules
- 1 VbTextCompare, effectue une comparaison de texte. C'est la valeur par défaut. Ne fait pas la distinction entre majuscules et minuscules.
Sub arrayfilter()
Dim Tblo
Dim arr
Dim N
Tblo = Array("LUNDIS", "MARDIS", "mercredis", "dimanches")
arr = Filter(Tblo, "DIS", True, 1)
For N = LBound(arr) To UBound(arr): Debug.Print arr(N): Next N
End Sub
Mots clefs associés à cette page : fonction, array
- Vous devez vous identifier ou créer un compte pour écrire des commentaires
