[RESOLU]_Procédure remplissage ListView avec paramètres USF, Nom listview?

Gdal

XLDnaute Nouveau
Bonjour tout le monde,

Je souhaite placer le code qui suit et qui fonctionne dans une procédure située dans une classe.
Public Sub RemplirListView(NomForm as xxxx, NomListView as xxx)

Code:
    Dim LstItem As ListItem
    Dim Entete As ColumnHeader
    Dim iLargeurListView As Integer
    Dim i As Integer
    Dim oRst As New ADODB.Recordset
    Dim iNbreChampDb As Integer
    
    ' Initialiser le contrôle listView
    Me.lstvRepertoire.ListItems.Clear
    Me.lstvRepertoire.ColumnHeaders.Clear
    ' Largeur du contrôle
    iLargeurListView = Me.lstvRepertoire.Width
    
    ' Charger la base
    Set oRst = clRepertoire.ChargerTous()
    ' Nombre de champs
    iNbreChampDb = oRst.Fields.Count - 1
    
    ' Création des entêtes
    For i = 0 To oRst.Fields.Count - 1
        Set Entete = Me.lstvRepertoire.ColumnHeaders.Add
            Entete.Text = Trim(oRst.Fields(i).Name & "")
            Entete.Width = iLargeurListView / (iNbreChampDb + 0.25)
        'If i = 0 Then Entete.Width = 0
    Next
    i = 1
    
    ' Chargement des enregistrements
    While Not oRst.EOF
        Set LstItem = Me.lstvRepertoire.ListItems.Add(1, , Trim(oRst(0) & ""))
        For i = 1 To oRst.Fields.Count - 1
            LstItem.ListSubItems.Add i, , Trim(oRst(i) & "")
        Next
        oRst.MoveNext
    Wend

Mais je n'arrive pas à passer le nom du formulaire et celui de la listview en paramètre...

Merci pour le coup de main,

Gwendal
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re : Procédure remplissage ListView avec paramètres USF, Nom listview?

Bonsoir Gwendal
Bonsoir le Forum

je ne pense pas avoir tout compris Lol
tu veux via une Fonction Passer en arguments le Nom d'une form (ex Userform1) et le Nom d'une listView (Ex LstV_Recherche ) de cette Forme
veux tu remplacer dans ton exemple la listView (lstvRepertoire) par une variable ?
met nous un fichier exemple sans données confidentielles de ce que tu as et de ce que tu veux (commentaires)
Merci par avance
Amicalement
Jean marie
 

Gdal

XLDnaute Nouveau
Re : Procédure remplissage ListView avec paramètres USF, Nom listview?

Salut,

tu veux via une Fonction Passer en arguments le Nom d'une form (ex Userform1) et le Nom d'une listView (Ex LstV_Recherche ) de cette Forme
veux tu remplacer dans ton exemple la listView (lstvRepertoire) par une variable ?
Oui, c'est ça.
Quelque chose du genre:
Code:
Public Sub RemplirListView(NomForm as xxxx, NomListView as xxx)

    Dim LstItem As ListItem
    Dim Entete As ColumnHeader
    Dim iLargeurListView As Integer
    Dim i As Integer
    Dim oRst As New ADODB.Recordset
    Dim iNbreChampDb As Integer
   
    ' Initialiser le contrôle listView
    NomForm.NomListView.ListItems.Clear
    NomForm.NomListView.ColumnHeaders.Clear
    ' Largeur du contrôle
    iLargeurListView = NomForm.lstvRepertoire.Width
   
    ' Charger la base
    Set oRst = clRepertoire.ChargerTous()
    ' Nombre de champs
    iNbreChampDb = oRst.Fields.Count - 1
   
    ' Création des entêtes
    For i = 0 To oRst.Fields.Count - 1
        Set Entete = NomForm.NomListView.ColumnHeaders.Add
            Entete.Text = Trim(oRst.Fields(i).Name & "")
            Entete.Width = iLargeurListView / (iNbreChampDb + 0.25)
        'If i = 0 Then Entete.Width = 0
    Next
    i = 1
   
    ' Chargement des enregistrements
    While Not oRst.EOF
        Set LstItem = NomForm.NomListView.ListItems.Add(1, , Trim(oRst(0) & ""))
        For i = 1 To oRst.Fields.Count - 1
            LstItem.ListSubItems.Add i, , Trim(oRst(i) & "")
        Next
        oRst.MoveNext
    Wend

End Sub

Merci,

Gwendal
 

ChTi160

XLDnaute Barbatruc
Re : Procédure remplissage ListView avec paramètres USF, Nom listview?

Re Lol
Donc le problème est ou ????
si tu veux passer la form qui s'appelle UsF1 en argument et le ListView LstV_Recherche

Code:
Public Function RemplirListView(ByRef NomForm as Object, Byref NomListView as Msform.listView)
......
End Function

et tu fais pour appeler la fonction

Code:
RemplirListView Usf1, LstV_Recherche

tu peux aussi simplifier ton code ainsi

Code:
Public Sub RemplirListView(NomForm as xxxx, NomListView as xxx)

    Dim LstItem As ListItem
    Dim Entete As ColumnHeader
    Dim iLargeurListView As Integer
    Dim i As Integer
    Dim oRst As New ADODB.Recordset
    Dim iNbreChampDb As Integer
   
    ' Initialiser le contrôle listView
    With NomForm.NomListView
         .ListItems.Clear
         .ColumnHeaders.Clear
    ' Largeur du contrôle
    iLargeurListView = .Width
   
    ' Charger la base
    Set oRst = clRepertoire.ChargerTous()
    ' Nombre de champs
    iNbreChampDb = oRst.Fields.Count - 1
   
    ' Création des entêtes
    For i = 0 To oRst.Fields.Count - 1
        Set Entete = .ColumnHeaders.Add
            Entete.Text = Trim(oRst.Fields(i).Name & "")
            Entete.Width = iLargeurListView / (iNbreChampDb + 0.25)
        'If i = 0 Then Entete.Width = 0
    Next
    i = 1
   
    ' Chargement des enregistrements
    While Not oRst.EOF
        Set LstItem = .ListItems.Add(1, , Trim(oRst(0) & ""))
        For i = 1 To oRst.Fields.Count - 1
            LstItem.ListSubItems.Add i, , Trim(oRst(i) & "")
        Next
        oRst.MoveNext
    Wend
 End With
End Sub
pas évident sans Fichier

Amicalement

Jean Marie
 
Dernière édition:

Gdal

XLDnaute Nouveau
Re : Procédure remplissage ListView avec paramètres USF, Nom listview?

Re,

Topissime!
Juste une correction: MSComctlLib.ListView
L'objet form n'est pas utile.
Code:
Public Sub RemplirLstv(NomForm As Object, ByRef NomLstView As MSComctlLib.ListView)

    ' Gestion des erreurs
    On Error GoTo ErrorHandler
    
    Dim LstItem As ListItem
    Dim Entete As ColumnHeader
    Dim iLargeurListView As Integer
    Dim i As Integer
    Dim oRst As New ADODB.Recordset
    Dim iNbreChampDb As Integer

    ' Initialiser le contrôle listView
    With NomLstView
         .ListItems.Clear
         .ColumnHeaders.Clear
    ' Largeur du contrôle
    iLargeurListView = .Width
   
    ' Charger la base
    Set oRst = ChargerTous
    ' Nombre de champs
    iNbreChampDb = oRst.Fields.Count - 1
   
    ' Création des entêtes
    For i = 0 To oRst.Fields.Count - 1
        Set Entete = .ColumnHeaders.Add
            Entete.Text = Trim(oRst.Fields(i).Name & "")
            Entete.Width = iLargeurListView / (iNbreChampDb + 0.25)
        'If i = 0 Then Entete.Width = 0
    Next
    i = 1
   
    ' Chargement des enregistrements
    While Not oRst.EOF
        Set LstItem = .ListItems.Add(1, , Trim(oRst(0) & ""))
        For i = 1 To oRst.Fields.Count - 1
            LstItem.ListSubItems.Add i, , Trim(oRst(i) & "")
        Next
        oRst.MoveNext
    Wend
    
    End With

    On Error GoTo 0
    Exit Sub

ErrorHandler:

    MsgBox "Erreur: " & Err.Number & vbCrLf & _
           "Description: " & Err.Description & vbCrLf & _
           "Procédure: RemplirLstv" & vbCrLf & _
           "Module de classe: Cl_Repertoire", _
           vbInformation, _
           "Erreur" & Err.Number
End Sub

Merci

Gwendal
 

ChTi160

XLDnaute Barbatruc
Re : Procédure remplissage ListView avec paramètres USF, Nom listview?

Bonjour Gwendal

A quoi te sert la Variable NomForm dans cette procédure
Arffff (je n'avais pas vu dans le post précédent qu'il ne servait a rien , donc pas besoin de le mettre en argument)

Bonne journée
Amicalement
Jean Marie
 
Dernière édition:

Statistiques des forums

Discussions
312 164
Messages
2 085 875
Membres
103 007
dernier inscrit
salma_hayek