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 :

Remplir une listview à partir d'un tableau Array


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Points : 8
    Points
    8
    Par défaut Remplir une listview à partir d'un tableau Array
    Bonjour,

    J'alimentais une listbox à l'aide d'un tableau Array (code ci-dessous) seulement j'aimerais utilisé une listview plutôt qu'une listBox. Et c'est là mon problème. Etant donné mes légères connaissance dans le language, je n'y arrive pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim aCC(0 To 2000, 0 To 50)
    m = 0
        For i = 2 To Range("A65536").End(xlUp).Row
            If Not Rows(i).Hidden Then
                    For t = 0 To Colonne + 1
                        aCC(m, t) = Cells(i, t + 1)
                    Next t
    m = m + 1
            End If
        Next i
     
    UserForm1.ListBox1.List() = aCC
    Ne marche pas avec :
    Userform1.ListView1.ListItems() = aCC

    Merci pour votre aide

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,

    Silkyroad a fait un bon tuto sur ce sujet, voici le lien:

    http://silkyroad.developpez.com/VBA/ListView/

    Bonne lecture.

    A+

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Merci pour le lien.
    Du coup, j'ai tenté cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    m = 0
        For i = 2 To Range("A65536").End(xlUp).Row
            If Not Rows(i).Hidden Then
                    For t = 0 To Colonne + 1
                        UserForm1.ListView1.ListItems(m).ListSubItems(t).Add = Cells(i, t + 1)
                    Next t
    m = m + 1
            End If
        Next i
    Mais j'ai une erreur de compilation au niveau de : ).Add = Cells

    Tu pourrais m'orienter sur mon erreur ?

  4. #4
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Re,
    J'ai pas vraiment le temps de tester mais de prime abord j'initialiserai m à 1 et pas à 0. Pareil pour t, je ne crois pas que les Items commencent à 0.

    Et pour être certain j'ajouterais le .value après cells (mais vraiment pour être certain)

    a+

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Si j'utilise cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm1.ListView1.ListItems(m).ListSubItems(t).Text = Cells(i, t + 1)
    J'obtiens une erreur : 35600 Index out of bounds

  6. #6
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    As tu créés tes colonnes comme décrit dans le tuto, mets le code entier qu'on voit ce qui ce passe, par contre moi j'ai vraiment plus le temps aujourd'hui désolé, faudra compter sur quelqu'un d'autre si t'es pressé.

    Sinon, utilise l'exemple du tuto que tu teste tel quel et ensuite tu intègre ta boucle.

    A+

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Non je ne suis pas pressé et tpujours prêt à apprendre !!

    Donc voila ce que j'ai ecris :

    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
    Private Sub CommandButton1_Click()
    Dim Ligne As Long
    Dim Colonne As String
     
    Ligne = ActiveCell.SpecialCells(xlCellTypeLastCell).Row 'Derniere remplie
    Colonne = ActiveCell.SpecialCells(xlCellTypeLastCell).Column    'colonne en nombre
    Colonne2 = Chr(ActiveCell.SpecialCells(xlCellTypeLastCell).Column + 64)    'colonne en lettre
     
    Set Plage = [_filterdatabase].Offset(1).Resize(, 1)
    Set Plage = Plage.Resize(Plage.Count - 1).SpecialCells(xlCellTypeVisible)
     
    UserForm1.ListView1.ListItems.Clear
    With UserForm1.ListView1
     
    'Remplissage de l'entête
            With .ColumnHeaders
                .Clear
                .Add , , "A", 213
                .Add , , "B ", 40, lvwColumnRight
                .Add , , "C", 50, lvwColumnRight
                .Add , , "D", 213
                .Add , , "E ", 40, lvwColumnRight
                .Add , , "F", 50, lvwColumnRight
                .Add , , "G", 213
                .Add , , "H ", 40, lvwColumnRight
                .Add , , "I", 50, lvwColumnRight
                .Add , , "J", 213
                .Add , , "K ", 40, lvwColumnRight
                .Add , , "L", 50, lvwColumnRight
            End With
     
    'Remplissage de la premiere colonne
    With .ListItems
        For i = 2 To Ligne
            If Not Rows(i).Hidden Then
                    .Add.Text = Sheets(1).Cells(i, 1)
            End If
        Next i
    End With
     
    'Remplissage des autres colonnes
    m = 1
    For i = 2 To Ligne
        If Not Rows(i).Hidden Then
            For t = 1 To Colonne
                UserForm1.ListView1.ListItems(m).ListSubItems.Add.Text = Sheets(1).Cells(i, t)
            Next t
        m = m + 1
        End If
    Next i
     
    End With
    End Sub
    Il m'affiche des trucs mais pas ce que je veux.
    En gros :
    1. Dans la listview il m'affiche uniquement les données de ma 1ere colonne (filtrée) excel mais dans la 1ere ligne listview !!

    2. les autres donnees des 11 autres colonnes excel n'apparaissent pas

    3. les données de la listview peuvent etre déplacé à l'aide du curseur de la souris.

    Ah oui et j'oublié : il ne m'affiche pas mes entêtes

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Bon bin c'est bon. je m'en suis sorti tout seul.
    Merci de m'avoir conseiller.

    ++

  9. #9
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut Bon boulot
    Citation Envoyé par Gecoo Voir le message
    Bon bin c'est bon. je m'en suis sorti tout seul.
    ...
    ++
    en plus tu me fais gagner du temps je venais de m'y repencher...

    N'hésites pas à mettre ton code et explication si ça peut en aider d'autre...

    A+

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

Discussions similaires

  1. [Débutant] Remplir une listview à partir d'un bouton de recherche
    Par NABZ27 dans le forum C#
    Réponses: 1
    Dernier message: 01/10/2014, 13h50
  2. Remplir une combobox à partir d'un tableau
    Par whitea dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/10/2013, 21h52
  3. [Débutant] Remplir une string à partir d'un tableau de string bouclé
    Par Zivor dans le forum C#
    Réponses: 3
    Dernier message: 27/05/2013, 11h01
  4. [XL-2007] Remplir une listview à partir d'une feuille de calcul ou de textbox
    Par rvtoulon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/10/2009, 23h43
  5. Remplir une plage à partir d'un tableau
    Par roudy78 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2007, 10h56

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