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 :

[VBA-E]Débutant Connaitre la taille d'un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 258
    Points : 108
    Points
    108
    Par défaut [VBA-E]Débutant Connaitre la taille d'un tableau
    bonjour,

    j'ai un tableau déclaré ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public branchs() As String
    J'aimerais savoir comment on peut connaitre le nb d'element du tableau, initialisé ou non.

    Merci

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    UBound?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub tableau()
    Dim letableau(2)
    MsgBox UBound(letableau)
    End Sub
    avec ça ça ça fonctionne, mais pas si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub tableau()
    Dim letableau()
    MsgBox UBound(letableau)
    End Sub
    parceque dans ce cas, l'indice n'appartient pas a la selection car si le tableau est vide, il est a -1 le ubound

  4. #4
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 258
    Points : 108
    Points
    108
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox ("nb bre" + UBound(branchs))
    'me renvoie 'Type mismatch'

    de plus; UBound ne fait pas partie des fonctions affichées quand je fais Ctrl+espace dans l'éditeur (peut etre que ca change rien mais bon).

    et sinon vous avez si on peut mettre facilement des commentaires sur pls lignes ?


    merci

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Remplace le + par un & (opérateur de concaténation).

    Pour les commentaires, il faut afficher le menu édition et regarder dans les icônes qu'il propose.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 258
    Points : 108
    Points
    108
    Par défaut
    Ca change effectivement
    => quel difference fais tu entre & et +?
    quel est le type de retour de la fnction UBound?

    Merci

    je continuerai cette conversation avec toi demain si nécessaire et si tu veux bien encore répondre.

    bonne soirée

  7. #7
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    5 + 5 = 10
    5 & 5 = "55"
    + additionne
    & concatène en convertissant les valeurs en chaîne de caractères

  8. #8
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 258
    Points : 108
    Points
    108
    Par défaut
    merci, c'est intéressant.

    J'ai malgré tout toujours un problème:
    'Subscript out of range' sur la ligne: 'If (UBound(branchs) > 0) Then'

    Voici les lignes de code qui pourront nous aider à résoudre ce problème:

    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
    Public branchs() As String
    Sub display_all()
    Dim i As Integer
    'branches if there are (3 max)
    For i = 0 To 2 ' branchs if there are are present in H4->J4
        If Cells(4, i + 8).Value = "" Then
            Exit For
        End If
        ReDim Preserve branchs(i)
        branchs(i) = Cells(4, i + 8).Value
        MsgBox ("BRANCH(i) = " + branchs(i)) 'OK ca fonctionne 
    Next
    If (UBound(branchs) > 0) Then
    MsgBox ("nb bre" & UBound(branchs))
    End If
    end sub

  9. #9
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 258
    Points : 108
    Points
    108
    Par défaut
    Nouvelle question, et dernière normalement:

    Comment savoir si un tableau a été initialisé?

    (car s'il ne l'est pas, UBound() foire ).

    Merci

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    ben tu t'arrange pour qu'il soit toujour positif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public branchs(1) As String
    Sub display_all()
    Dim i As Integer
    'branches if there are (3 max)
    For i = 1 To 3 ' branchs if there are are present in H4->J4
        If Cells(4, i + 7).Value = "" Then
    ps : c'est qu'une combine que j'aurais employé, je pretend pas pas que ce soit la regle pour gerer un tableau()

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    je prens même pas la peine de corriger ce que j'ai dis, je pense que c'est une bétise, sorry
    par contre je me suis penché sur ton code, je pense qu'il ne marche pas a cause de l'exit for. si tu teste la premiere cellule et qu'elle est vide, a cause du exit for, tu sore de la boucle, tu ne teste pas la deuxieme cellule, et tu prend l'instruction suivante sans avoir incrementé le ubound, et donc erreur.
    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
    Sub display_all()
    Dim branchs()
    Dim i As Integer
    'branches if there are (3 max)
    For i = 1 To 3 ' branchs if there are are present in H4->J4
        If Cells(4, i + 8).Value = "" Then
           ' Exit For ' ici c'est pas bon, je pense essaye sans
        End If
        ReDim Preserve branchs(i)
        branchs(i) = Cells(4, i + 7).Value
        MsgBox ("BRANCH(i) = " & branchs(i)) 'OK ca fonctionne
    Next
    If (UBound(branchs) > 0) Then
    MsgBox ("nb bre" & UBound(branchs))
    End If
    End Sub

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 28
    Points : 31
    Points
    31
    Par défaut
    Pour information une solution est donnée à ce problème dans le tutoriel de Silkyroad.
    Je sais que cette réponse apparaît un peu tard mais j'espère qu'elle pourra aider ceux qui comme moi se voient confrontés au test d'un tableau vide.

Discussions similaires

  1. [Tableaux] Comment connaitre la taille d'un tableau?
    Par Polaire76 dans le forum Langage
    Réponses: 2
    Dernier message: 21/11/2005, 17h34
  2. Connaitre la taille d'un tableau
    Par Natim dans le forum C++
    Réponses: 17
    Dernier message: 10/10/2005, 17h53
  3. Connaitre la taille d'un tableau dynamique
    Par lewellah dans le forum C
    Réponses: 2
    Dernier message: 23/09/2005, 18h37
  4. Connaitre la taille d'un tableau dyn
    Par seal3 dans le forum C++
    Réponses: 13
    Dernier message: 24/08/2005, 20h25
  5. [Tableau]comment connaitre la taille d'un tableau à 2 dimensions
    Par Kyti dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 22/04/2005, 10h27

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