création d'une listview dans un usf

  • Initiateur de la discussion Initiateur de la discussion pascal21
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
280
Réponses
1
Affichages
475
Réponses
0
Affichages
387
Réponses
3
Affichages
610
  • Question Question
Microsoft 365 CSV en EXCEL
Réponses
1
Affichages
61
Retour