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 :

Problème alimenter Listview


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2011
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 172
    Par défaut Problème alimenter Listview
    Bonjour forum,

    J'ai un problème, lorsque mon userform s'initialise, je désire alimenter une listview selon un tableau qui peut contenir différent nombre de variable.

    Voici mon 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
    With Me.ListView1
        With .ColumnHeaders
            .Clear
            .Add , , "Contrat", 30
            .Add , , "Nb jours", 30
            .Add , , "Départ.", 30
            .Add , , "Date Prod", 30
        End With
     
        If last > 2 Then
            j = 1
            For i = 3 To last
                .ListItems.Add j, , Sheets("Feuil1").Range("AL" & i).Value                  'Contrat
                .ListItems(j).ListSubItems.Add , , Sheets("Feuil1").Range("AM" & i).Value  'Nb jours
                .ListItems(j).ListSubItems.Add , , Sheets("Feuil1").Range("AO" & i).Value  'Produit
                .ListItems(j).ListSubItems.Add , , Sheets("Feuil1").Range("AP" & i).Value  'Date Prod
            j = j + 1
            Next i
        End If
    .View = lvwList
    End With
    1) Mes entêtes ne s'affiche pas
    2) La seule colonne qui s'affiche dans ma listview est la première colonne, donc seulement les contrats.

    Merci de votre aide

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    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
    Private Sub UserForm_Initialize()
    Dim Last As Long, i As Long, j As Long
    Dim Tb
     
    With Sheets("Feuil1")
        Last = .Cells(.Rows.Count, "AL").End(xlUp).Row
        If Last > 2 Then
            Tb = .Range("AL3:AP" & Last)
            With Me.ListView1
                .HideColumnHeaders = False
                .View = lvwReport
                .AllowColumnReorder = True
                .FullRowSelect = True
                With .ColumnHeaders
                    .Clear
                    .Add , , "Contrat", 50
                    .Add , , "Nb jours", 50
                    .Add , , "Départ.", 50
                    .Add , , "Date Prod", 50
                End With
                For i = 1 To UBound(Tb, 1)
                    j = j + 1
                    .ListItems.Add j, , Tb(i, 1)                    'Contrat
                    .ListItems(j).ListSubItems.Add , , Tb(i, 2)     'Nb jours
                    .ListItems(j).ListSubItems.Add , , Tb(i, 3)     'Produit
                    .ListItems(j).ListSubItems.Add , , Tb(i, 4)     'Date Prod
                Next i
            End With
        End If
    End With
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2011
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 172
    Par défaut
    Merci mercatog tout marche à la perfection

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    On aurait pu s'en passer de la variable j
    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
    Private Sub UserForm_Initialize()
    Dim Last As Long, i As Long
    Dim Tb
     
    With Sheets("Feuil1")
        Last = .Cells(.Rows.Count, "AL").End(xlUp).Row
        If Last > 2 Then
            Tb = .Range("AL3:AP" & Last)
            With Me.ListView1
                .HideColumnHeaders = False
                .View = lvwReport
                .AllowColumnReorder = True
                .FullRowSelect = True
                With .ColumnHeaders
                    .Add , , "Contrat", 50
                    .Add , , "Nb jours", 50
                    .Add , , "Départ.", 50
                    .Add , , "Date Prod", 50
                End With
                For i = 1 To UBound(Tb, 1)
                    .ListItems.Add i, , Tb(i, 1)               'Contrat
                    .ListItems(i).ListSubItems.Add , , Tb(i, 2)    'Nb jours
                    .ListItems(i).ListSubItems.Add , , Tb(i, 3)    'Produit
                    .ListItems(i).ListSubItems.Add , , Tb(i, 4)    'Date Prod
                Next i
            End With
        End If
    End With
    End Sub

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2011
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 172
    Par défaut
    OK merci beaucoup, mais j'ai une autre question.

    Je veux que lorsque quelqu'un selection un élément dans la listeview et click sur le bouton supprimé, l'élément s'éfface de ma feuille. Avant d'utiliser ton code ça fonctionnait, mais plus maintentant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    i = ListView1.SelectedItem.Index
    Set contrat = Sheets("Feuil1").Range("AL3:AL1000").Find(Me.ListView1.ListItems(i).Text)
    Range(Cells(contrat.Row, 38), Cells(contrat.Row, 42)).ClearContents
    Pourrais tu me dire pourquoi.

    Merci

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Regarde le commentaire si tu veux supprimer toute la ligne de Feuil1
    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
    Private Sub CommandButton1_Click()
    Dim c As Range
    Dim Contrat As String
    Dim i As Integer
     
    Contrat = Me.ListView1.SelectedItem.Text
    If Contrat <> "" Then
        i = Me.ListView1.SelectedItem.Index
        Set c = Sheets("Feuil1").Range("AL:AL").Find(Contrat, LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
            c.Resize(1, 5).ClearContents
            'c.EntireRow.Delete 'Pour supprimer toute la ligne
            Set c = Nothing
            Me.ListView1.ListItems.Remove i
        End If
    End If
    End Sub

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

Discussions similaires

  1. [C#]Problème de listview
    Par Fredo02 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 16/06/2007, 15h00
  2. Problème avec listview
    Par Svenna dans le forum Général VBA
    Réponses: 9
    Dernier message: 27/01/2007, 16h55
  3. Problème affichage ListView
    Par sorcer1 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/01/2007, 14h52
  4. Problème alimentation PC
    Par gandalf_le_blanc dans le forum Composants
    Réponses: 6
    Dernier message: 08/11/2005, 14h42
  5. [C#] Problème avec ListView
    Par yannick dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/06/2004, 17h29

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