CreateObject(“System.Collections.ArrayList”)

Introduction

“System.Collections.ArrayList” est un outil très puissant que je viens de découvrir pour gérer des listes de chaînes de texte (String). Cet objet possède des méthodes qui permettent de faire des tris en ordre alphabétique ou alphabétique inverse d’une façon simple.

Cet outil est similaire aux dictionnaires ( “Scripting.Dictionary”).

L’index du premier élément du tableau généré est 0.

Méthodes

Add Ajoute un élément dans le ArrayList
Clear Efface tous les éléments du ArrayList
Clone Crée une copie du ArrayList
Contains Détermine si le ArrayList contient un item. Renvoi Vrai ou Faux
IndexOf Renvoi l’index d’un élément à partir d’un index donné. Le premier élément du ArrayList possède l’index 0. Retourne -1 si l’élément n’est pas trouvé.

MonArrayList.IndexOf(“Marc,4″) recherche l’index de Marc à partir du 5e élément contenu dans le ArrayList (car le index du 1er élément = 0).

Sort Tri le ArrayList en ordre croissant
Remove Enlève un élément du ArrayList
Reverse Inverse l’ordre des élémnets du ArrayList (pour un tri en ordre décroissant, il faut d’abord faire un tri avec .Sort)
TrimToSize Défini la capacité du ArrayList au nombre d’éléments contenus

 

Propriétés

Capacity Défini ou Renvoi la capacité du ArrayList
Count Renvoi le nombre d’éléments contenu dans le ArrayList

 

Exemple 1

Nous avons une liste de noms dans notre feuille de calculs.

ArrayList

Le code ci-dessous montre comment :

  • Créer notre liste
  • Enlever des items dans notre liste
  • Trier en ordre alphabétique
  • Trier en ordre alphabétique inverse
  • Cloner notre liste

 

Ici, on voit le résultat de notre macro :

AL2

 

4 comments on “CreateObject(“System.Collections.ArrayList”)

  1. bonjour, un grand merci pour la présentation de cet outil qui me facilite la vie, et qui met les dictionnaires au placard dans la plupart des cas pour moi.

    un souci cependant :
    sur la version 2010 au boulot ça fonctionne, mais sur la version 2000 chez moi, la déclaration de l’objet provoque une erreur de type “Erreur Automation” (avec surlignement jaune de la ligne de déclaration CreateObject(“System.Collections.ArrayList”).

    est-ce une question de version d’Excel ? (pas compatible avec 2000) ou bien faut-il activer une option ? (genre macro complémentaire)

    • GCExcel on said:

      Bonjour,
      Je crois en effet qu’il s’agit de problème avec la version d’Excel.
      ArrayList est une classe de .NET Framework et par conséquent requiert le .NET Framework
      Il est possible que celui-ci ne soit pas disponible avec Excel 2000.

  2. bernard on said:

    Excellent, j’attends la suite ….

  3. Boisgontier on said:

    C’est un objet de System.Collections.ArrayList. Il n’est pas disponible sur toutes les versions.
    Il peut être remplacé par Dictionary (plus rapide)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Les balises HTML ne sont pas autorisés.