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 :

Taille des tableaux et Ubound


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut Taille des tableaux et Ubound
    La fonction Ubound rend la taille d'un tableau mais lorsque celui-ci est vide, la fonction rend une erreur. Je voudrais pourtant utiliser une fonction pour tester la taille de mes tableaux dynamiques, et ce quelque soit leur type de données associé, en particulier pour des tableaux de types différents, définis par l'utilisateur.

    Une alternative à Ubound que j'ai trouvée est le code suivant :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Public type1
    ...
    End type1
    ...
    ...
    Public typeN
    ...
    End typeN
    
    
    Dim table1() As type1
    ...
    Dim tableN() As typeN
    
    
    Public Function Bound(... table As ...) As Integer
        Dim IsArrayEmpty As Boolean
        On Error Resume Next
        Err.Clear
        table = UBound(table)
        IsArrayEmpty = (Err.Number = 9)
        Err.Clear
        If IsArrayEmpty = True Then
            Bound = 0
        Else
            Bound = table
    End Function
    Mon problème est que je n'arrive pas à bien déclarer le paramètre de la fonction, sachant que je veux que ma fonction fonctionne pour tous mes tableaux table1(),...tableN() quelque soit son type ! Mes différents essais avec Array, ou autre rendent une erreur ! Merci de votre aide !

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Dans la sub appelante, tu déclares le type de la variable Table, dimensionnée ou non, ça dépend de ta façon de la remplir.
    Dans la fonction tu mets... rien du tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function Bound(table) As Integer
    Table est déjà déclarée.
    Mets Option Explicit avant ton code, tu t'apercevras qu'il ne manque aucune déclaration

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option explicit
     
    Sub TailleDuTableau()
    Dim LeTableau
    LeTableau = Array("un", "deux", "trois", "quatre", "cinq", "six")
    MsgBox Bound(LeTableau)
    End Sub
     
    Function Bound(Tableau) As Integer
    Bound = UBound(Tableau)
    End Function
    A+

    NB - la dimension du tableau commence à 0

  3. #3
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut
    Merci pour cette réponse.
    En fait, mes types de données sont définis par l'utilisateur. Quand je déclare sas rien, sans As et sans ByRef ou ByVal, j'obtiens une erreur de la forme :
    "Erreur de compilation:

    Seuls les types définis par l'utilisateur et qui sont définis dans les modules d'objets publics peuvent être convertis depuis ou vers un variant, ou passés à des fonctions à liaison tardive."
    Et je ne comprend pas pourquoi ça ne compile pas.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Désolé, j'avais shunté la fin de ton explication
    en particulier pour des tableaux de types différents, définis par l'utilisateur.
    Regarde à Byval et à ByRef, dans l'aide, les explications que tu y trouveras seront plus claires que les miennes
    A+

  5. #5
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut
    Apparemment, ça ne marcherait pas en tant que structures de données. Il faudrait les définir en temps que classes ou autre... Tant pis !

Discussions similaires

  1. Problème de capacité : taille des tableaux
    Par driss80 dans le forum Fortran
    Réponses: 4
    Dernier message: 09/04/2009, 17h58
  2. Taille maximale des tableaux
    Par elieto dans le forum Mathématiques
    Réponses: 2
    Dernier message: 19/03/2009, 23h41
  3. Taille des tableaux par "autofit"
    Par loupgarou dans le forum VBA Word
    Réponses: 20
    Dernier message: 19/09/2008, 09h19
  4. Taille maximale des tableaux
    Par arthy dans le forum Fortran
    Réponses: 6
    Dernier message: 29/03/2008, 00h11
  5. [Tableaux] Taille des variables
    Par Teoftene dans le forum Langage
    Réponses: 5
    Dernier message: 06/03/2008, 22h56

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