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

VB 6 et antérieur Discussion :

Ma listview affiche les données sur 3 colonnes


Sujet :

VB 6 et antérieur

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Ma listview affiche les données sur 3 colonnes
    Bonjour tout le monde,

    J'ai utilisé le code que nous avons appris en classe pour la création d'une listview, voici ce 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Public Sub RemplirListe(ByRef Ctrl As Control, ByRef Tableau As Variant)
        Dim Indice As Integer, Indice1 As Integer, Indice2 As Integer
        Dim iCol As Integer, i As Integer
     
        If (TypeOf Ctrl Is ComboBox) Or (TypeOf Ctrl Is ListBox) Then
            Ctrl.Clear
            If IsArray(Tableau) Then
                Indice1 = LBound(Tableau)
                Indice2 = UBound(Tableau)
            End If
            Indice1 = LBound(Tableau)
            Indice2 = UBound(Tableau)
            For Indice = Indice1 To Indice2
                Ctrl.AddItem "" & Tableau(Indice)
                Ctrl.ItemData(Ctrl.NewIndex) = Indice
            Next Indice
        ElseIf (TypeOf Ctrl Is ListView) Then
            Ctrl.ListItems.Clear
            If IsArray(Tableau) Then
                Indice1 = LBound(Tableau)
                Indice2 = UBound(Tableau)
            End If
            Indice1 = LBound(Tableau)
            Indice2 = UBound(Tableau)
            For Indice = Indice1 To Indice2
                With Ctrl.ListItems.Add
                    .Tag = Indice
                    If Not IsArray(Tableau(Indice)) Then
                        .Text = "" & Tableau(Indice)
                    Else
                        iCol = 0
                        For i = LBound(Tableau(Indice)) To UBound(Tableau(Indice))
                            If iCol = 0 Then
                                .Text = "" & Tableau(Indice)(i)
                            Else
                                .SubItems(iCol) = "" & Tableau(Indice)(i)
                            End If
                            iCol = iCol + 1
                            If iCol > Ctrl.ColumnHeaders.Count Then Exit For
                        Next i
                    End If
                End With
            Next Indice
        End If
    End Sub
    Je me demandais pourquoi il créait d'office trois colonnes ?

    Le code classe donc le nom des crus sur trois colonnes, comment est-il possible de dire :

    Colonne 1 : info A
    Colonne 2 : info B
    Colonne 3 : info C
    Merci d'avance pour l'aide.

    beegees

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Le code est très dense, ce qui ne facilite pas sa compréhension.
    D'après ce que j'en comprend, Tableau est un tableau de tableau (ce qui est très peu utilisé en VB)ou un tableau à une dimension.
    Je te propose une autre ecriture du même code limité à un tablea de tableau, qui je pense sera plus lisible

    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
    Dim lstItem as ListItem
    Dim PremLigne as Long
    Dim DernLigne as Long
    Dim PremCol as Long
    Dim DernCol as Long
    Dim Ligne as Long
    Dim Colonne as Long
     
    ...
     
        ElseIf (TypeOf Ctrl Is ListView) Then
            Ctrl.ListItems.Clear
            PremLigne = LBound(Tableau)
            DernLigne = UBound(Tableau)
            PremCol = Lbound(Tableau(PremLigne ))
            DernCol = Ubound(Tableau(DernLigne))
            For Ligne = PremLigne To DernLigne 
                Set lstItem = Ctrl.ListItems.Add
                lstItem.Tag = Indice
                lstItem.Text =  "" & Tableau(Ligne )(PremCol)
                iCol=1
                For Colonne = PremCol+1 to DernCol
                    lstItem.SubiTem(iCol) = Tableau(Ligne )(Colonne)
                    iCol= iCol +1
                Next Colonne 
             Next Ligne 
        End If

  3. #3
    Membre régulier Avatar de jfdmagic
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 181
    Points : 124
    Points
    124
    Par défaut
    je te propose ce code qui ne marche que si tu connais le nombre de colonnes à l'avance (ce qui est le cas si tu travailles avec une base de données qui est censé est fixe au niveau de sa structure)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'pour ajouter une colonne'
    ListView1.ColumnHeaders.Add , , "Colonne 1", (ListView1.Width * (0,10)), lvwColumnLeft
    ListView1.View = LvwReport
    '0,10 est la proportion de la longueur de ta liste de que tu accordes à la colonne ; tu peux utiliser d'autres alignements sauf pour la première qui est automatiquement à gauche'
    'Tu ajoutes autant de colonnes que tu veux'

Discussions similaires

  1. Afficher les données sur un formulaire popup avec highslide js
    Par BILANGA dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/06/2015, 19h58
  2. [XL-2010] Afficher les données sur un graphique tant qu'elle monte !
    Par Marleclerc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/08/2014, 20h51
  3. Afficher les données sur un formulaire
    Par tunis71187 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 27/08/2012, 10h19
  4. [PHP 5.0] Afficher les données sur trois colonnes
    Par dexter74 dans le forum Langage
    Réponses: 6
    Dernier message: 12/04/2009, 05h08
  5. [CR XI] section detail - afficher les données sur plusieurs colonnes
    Par Flamby38 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/09/2007, 15h44

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