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 :

[XL-2007] Connaitre le nombre de colonne d'un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Points : 48
    Points
    48
    Par défaut [XL-2007] Connaitre le nombre de colonne d'un tableau
    Bonjour,

    Je voudrais connaître le nombre de colonnes de mon tableau. En effet, j'ai un tableau de Variant(), qui possède n ligne et n colonne.

    Ce tableau me sert a stocker des résultats de ligne de ma base de données. Je veux une fois l'algorithme de recherche terminé, mettre ces données dans une listView.

    mais pour que cela ne prenne pas trop de temps, je veux savoir combien il y a de colonnes dans ce tableau, car j'ai beau chercher sur les forum je ne trouve que des recherche sur comment compter le nombre d'éléments au sein d'un tableau.

    Par exemple : j'ai trouvé deux ligne dans ma base de données.je les stocks dans mon tableau dans 2 colonnes distinct. C'est deux ligne ont quinze éléments chacune. Moi ce que je voudrais trouver ce serai le deux et non les quinze éléments.


    merci de bien vouloir m'aider,

    Cordialement.

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    pour cela il faut que tu montre le code où tu instancies le tableau!

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Points : 48
    Points
    48
    Par défaut
    Voilà le code de recherche, en sachant que au dessus de la base de données (qui est en excel) j'ai 61 ligne que je ne traite pas.

    Merci de votre réponse et voici le code :
    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
    29
    30
        Sheets(k).Select
        'Tableau pour stocker les différentes lignes.
        Dim ligneTrouver() As Variant
        'on affecte le nombre de ligne  nbLigne
        nbLigne = CInt(WorksheetFunction.CountA(Range("B61:B400")))
        'On parcours la colonnes Bac. On commence à 62 car il a 61 lignes personnalisables
        For i = 62 To nbLigne + 62
                'On regarde si la valeur de la cellule est égale au paramètre rechercher
            If (resultat = Cells(i, 2).Value And LigneEteinte = False) Then
                'on augmente le compteur du tableau
                compteur = compteur + 1
                For j = 1 To 16
                    'On stocke la valeur de la cellule
                    If Not IsEmpty(Cells(i, j).Value) And Cells(i, 5).Value <> "éteint" Then
                    ligneTrouver(compteur, j - 1) = Cells(i, j).Value
                    End If
                    'MsgBox (ligneTrouver(1, j - 1))
                Next j
            ElseIf (resultat = Cells(i, 2).Value And LigneEteinte = True) Then
                 'on augmente le compteur du tableau
                 compteur = compteur + 1
                For j = 1 To 16
                    'On stocke la valeur de la cellule
                    If Not IsEmpty(Cells(i, j).Value) Then
                    ligneTrouver(compteur, j - 1) = Cells(i, j).Value
                    End If
                Next j
            End If
        Next i
        recherche = ligneTrouver
    Cordialement,

    Fyejumpy

  4. #4
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     For j = 1 To ActiveSheet.UsedRange.Columns.Count
                    'On stocke la valeur de la cellule
                    If Not IsEmpty(Cells(i, j).Value) And Cells(i, 5).Value <> "éteint" Then
                    ligneTrouver(compteur, j - 1) = Cells(i, j).Value
                    End If
                    'MsgBox (ligneTrouver(1, j - 1))
                Next j

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Points : 48
    Points
    48
    Par défaut
    Je crois que j'ai mal formulé mon problème ou je t'ai induis en erreur avec le code. Le code au dessus c'est une fonction qui va permettre de créer et de retourner mon tableau, ensuite dans un autre module je veux connaitre le nombre de colonnes de celui-ci pour ensuite optimiser mon code en le parcourant, lorsque que je rentre les infos dans mon listview.

    Voilà le code où j'insère les informations :
    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
     For k = 1 To nbOnglet - 1
                If ResultRecherche.recherche(saisieRecherche, k, LigneEteinte)(1, 1) = "" Then
                    tabList(k - 1).Le_LISTVIEW.ListItems.Add , , "Aucun bac"
                Else
                    'Endroit ou j'aurai besoin du nombre de colonnes (le i représente le nombre de résultat ou de lignes)
                    For i = 1 To 2
                        tabList(k - 1).Le_LISTVIEW.ListItems.Add , , (ResultRecherche.recherche(saisieRecherche, k, LigneEteinte)(1, 0))
                            For j = 2 To 15
                                  tabList(k - 1).Le_LISTVIEW.ListItems(i).ListSubItems.Add , , (ResultRecherche.recherche(saisieRecherche, k, LigneEteinte)(i, j - 1))
                            Next j
                            If tabList(k - 1).Le_LISTVIEW.ListItems(i).ListSubItems(1) = "" Then
                                With tabList(k - 1).Le_LISTVIEW
                                    .ListItems(i).ListSubItems.Clear
                                End With
                            End If
                        Next i
                        Call Interface.RedimListView(tabList(k - 1))
                End If
            Next k
    Merci encore d'avoir répondu et essayer de m'aider..

    Cordialement,

    Fyejumpy

  6. #6
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Avec la fonction UBound() :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    Sub Test1()
     
        Dim Tbl(1 To 2, 1 To 10, 1 To 20) As String
     
        MsgBox "1ère dimension : " & UBound(Tbl, 1) & vbCrLf & _
               "2ème dimension : " & UBound(Tbl, 2) & vbCrLf & _
               "3ème dimension : " & UBound(Tbl, 3)
     
    End Sub
     
    Sub Test2()
     
        Dim Tbl
     
        Tbl = Range("A1").CurrentRegion
     
        MsgBox "1ère dimension (lignes) : " & UBound(Tbl, 1) & vbCrLf & _
               "2ème dimension (colonnes) : " & UBound(Tbl, 2)
     
    End Sub
     
    Sub Test3()
     
        Dim Tbl(1 To 2, 1 To 10) As Integer
        Dim I As Integer
        Dim J As Integer
     
        'rempli le tableau
        For I = 1 To 2
     
            For J = 1 To 10
     
                Tbl(I, J) = I + J
     
            Next J
     
        Next I
     
        'transfère les valeurs dans la feuille active à partir de A1
        'la première dimension du tableau défini le nombre de lignes
        'et la seconde, le nombre de colonnes
        Range(Cells(1, 1), Cells(UBound(Tbl, 1), UBound(Tbl, 2))) = Tbl
     
        'si on inverse comme ceci :
        'Range(Cells(1, 1), Cells(UBound(Tbl, 2), UBound(Tbl, 1))) = Tbl
        'il est nécessaire de transposer le tableau et Excel possède une fonction pour celà :
        Range(Cells(1, 1), Cells(UBound(Tbl, 2), UBound(Tbl, 1))) = Application.Transpose(Tbl)
     
        MsgBox "1ère dimension : " & UBound(Tbl, 1) & vbCrLf & _
               "2ème dimension : " & UBound(Tbl, 2)
     
    End Sub
    Hervé.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Points : 48
    Points
    48
    Par défaut
    Merci hervé, je n'avais pas bien compris comment on utilisé c'est méthode.
    Tu as résolu mon soucis !

    Cordialement,

    Fyejumpy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/09/2009, 19h51
  2. connaitre le nombre de colonnes dans une feuille excel
    Par faten7 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/06/2008, 08h56
  3. connaitre le nombre d'enregistrement d'un tableau
    Par tribaleur dans le forum ASP
    Réponses: 4
    Dernier message: 06/06/2006, 12h41
  4. Réponses: 2
    Dernier message: 05/05/2006, 08h55
  5. [VBA-E] connaitre le nombre de ligne dans un tableau excel
    Par bigbarbe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/04/2006, 10h03

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