IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

ArrayList et Type non défini par l'utilisateur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Par défaut ArrayList et Type non défini par l'utilisateur
    Bonjour,

    ArrayList ne semble pas interprété.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim tableau as ArrayList
    set tableau = new ArrayList
    me produit l'erreur type non défini par l'utilisateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Tableau as Object
    Set Tableau= CreateObject("System.Collections.ArrayList")
    AllerVersFonction (Tableau)
    function AllerVersFonction(t as Object)
    Dim i as integer
    for i =LBOUND(t) To UBOUND(t)
    ...
    next i
    AllerVersFonction=...
    end function
    m'introduit une panne sur la boucle du type que t doit être un tableau.

    C'est dommage que je ne puisse pas utiliser des méthodes particulières à ArrayList comme indexOf, ...

    Pourquoi? Que se passe-t-il?

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    A ma connaissance il n'y a pas d'ArrayList en VBA.

    Pour avoir le comportement accès par indice et par clé (pour le indexOf) tu peux utiliser le type Dictionary.
    Pour utiliser ce type depuis VBA, ajoute la référence Microsoft Scripting Runtimedepuis l'éditeur VBA, sous le menu Outil -> Référence.

    L'utilisation fonctionnerait ensuite comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Option Explicit
    Sub TestEquivalentArrayList()
        Dim Tableau As Dictionary
        Set Tableau = New Dictionary
        Tableau.Add "k1", "f"   'ajout de clé / valeur
        Tableau.Add "k2", "ff"  'ajout de clé / valeur
        Tableau.Add "k3", "fff" 'ajout de clé / valeur
        Call AllerVersFonction(Tableau)
        Debug.Print Tableau("k3")   'equivalent indexof
    End Sub
     
    Function AllerVersFonction(t As Dictionary) As String
        Dim i As Integer
        For i = 0 To t.Count - 1
            Debug.Print t.Keys(i)  'accès aux clés par indice
            Debug.Print t.Items(i) 'accès aux valeurs par indice
        Next i
        AllerVersFonction = t(1)
    End Function

Discussions similaires

  1. [Toutes versions] Type non défini par l'utilisateur
    Par Ouadhaj dans le forum VBA Access
    Réponses: 6
    Dernier message: 20/10/2014, 16h14
  2. Type défini par l'utilisateur non Défini
    Par jarault dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/04/2008, 07h53
  3. [VBA] Type non défini par l'utilisateur.
    Par ip203 dans le forum Access
    Réponses: 5
    Dernier message: 07/04/2008, 14h38
  4. Réponses: 2
    Dernier message: 31/07/2007, 15h05
  5. Message erreur Type défini par l'utilisateur non défini
    Par Michel DELAVAL dans le forum Access
    Réponses: 2
    Dernier message: 27/06/2006, 16h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo