création d'une listview dans un usf

pascal21

XLDnaute Barbatruc
bonjour le forum
j'aimerais essayer d'intégrer un listview dans un usf
mais bien sur je n'arrive pas à coder pour que ça fonctionne
il faut que ça reprenne des données dans la feuille "data" dans une zone de cellules "D10:F50"
la ligne 10 contenant les entêtes
j'ai trouvé ce bout de code sur le net que j'ai essayé d'adapter mais j'ai une erreur 1004 "erreur définie par l'application ou par l'objet"
je vous mets le code si il vous faut un fichier je vous en mettrai un
Code:
Private Sub UserForm_Initialize()
    Dim Cell As Range
    Dim X As Byte
    Dim k As Integer
    k = Worksheets("data").Range("d65536").End(xlUp).Row

    With ListView1
        With .ColumnHeaders
            .Clear
            .Add , , Worksheets("data").Cells(4, 1), 100
            .Add , , Worksheets("data").Cells(4, 2), 70
            .Add , , Worksheets("data").Cells(4, 3), 70
            '.Add , , Worksheets("Feuil2").Cells(1, 4), 40
            '.Add , , Worksheets("Feuil2").Cells(1, 5), 80
            '.Add , , Worksheets("Feuil2").Cells(1, 6), 80
            '.Add , , Worksheets("Feuil2").Cells(1, 7), 80
            '.Add , , Worksheets("Feuil2").Cells(1, 8), 80
            '.Add , , Worksheets("Feuil2").Cells(1, 9), 70
           ' .Add , , Worksheets("Feuil2").Cells(1, 10), 60
        End With
        'Les autres lignes contiennent les données
        For Each Cell In Worksheets("data").Range("d11:d" & f)
            X = X + 1
            .ListItems.Add , , Cell
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 1)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 2)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 3)
            '.ListItems(X).ListSubItems.Add , , Cell.Offset(0, 4)
            '.ListItems(X).ListSubItems.Add , , Cell.Offset(0, 5)
            '.ListItems(X).ListSubItems.Add , , Cell.Offset(0, 6)
           ' .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 7)
            '.ListItems(X).ListSubItems.Add , , Cell.Offset(0, 8)
            '.ListItems(X).ListSubItems.Add , , Cell.Offset(0, 9)
        Next
    End With
End Sub
je pense que les erreurs viennent de ces lignes là
mais ça n'a peut être rien à voir
Code:
.ListItems(X).ListSubItems.Add , , Cell.Offset(0, 1)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 2)
            .ListItems(X).ListSubItems.Add , , Cell.Offset(0, 3)
.Add , , Worksheets("data").Cells(4, 1), 100
            .Add , , Worksheets("data").Cells(4, 2), 70
            .Add , , Worksheets("data").Cells(4, 3), 70
merci de votre aide
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour Pascal et bonne année :)

Un exemple. Dans Userform_Initialize()

VB:
With ListView1
  .Gridlines = True
  .FullRowSelect = True
  .View = lvwReport
  .ColumnHeaders.Add Text:="Réf Art.", Width:=1
  .ColumnHeaders.Add Text:=" Code Article", Width:=100
  .ColumnHeaders.Add Text:="Articles", Width:=184
  .ColumnHeaders.Add Text:="Fournisseurs", Width:=100
  .ColumnHeaders.Add Text:="Prix", Width:=70, Alignment:=fmAlignmentRight
  End With

Et pour récuperer les lignes dans la listview (un exemple de recherche avec combobox)

VB:
Private Sub CmbCategories_Click()
    Dim ItemCmde As ListItem

    On Error Resume Next

    If CmbCategories.Text <> "" Then
        ListView1.ListItems.Clear
        TxtNbc = ""
        Set plage = WsProd.[D1].CurrentRegion
        Set plage = plage.Offset(1).Resize(plage.Rows.Count - 1)
        Set cel = plage.Find(CmbCategories, , , xlWhole)
        If Not cel Is Nothing Then
            premaddress = cel.Address
            Set ItemProd = ListView1.SelectedItem
            rw = Application.Match(CmbCategories, WsProd.Columns(4), 0)
            TxtDate = Format(CDate(WsEnt.Cells(rw, 2)), "dd.mm.yyyy")
            Do
                Set ItemCmde = ListView1.ListItems.Add(Text:=cel.Offset(0, -3))
                ItemCmde.SubItems(1) = cel.Offset(0, -2)
                ItemCmde.SubItems(2) = cel.Offset(0, -1)
                ItemCmde.SubItems(3) = cel.Offset(0, 1)
                ItemCmde.SubItems(4) = Format(cel.Offset(0, 3), "0.00")
                TxtNbc = ListView1.ListItems.Count
                MontCat = Application.SumIf(plage.Offset(, 0), CmbCategories, plage.Offset(, 3))
                TxTMontants = Format(MontCat, "0.00.-")
                Set cel = plage.FindNext(cel)
            Loop While Not cel Is Nothing And cel.Address <> premaddress
        End If
    Else
        Exit Sub
        ListView1.ListItems.Clear
    End If
End Sub
 

Discussions similaires

Réponses
1
Affichages
167
Réponses
0
Affichages
152

Statistiques des forums

Discussions
312 209
Messages
2 086 273
Membres
103 168
dernier inscrit
isidore33