2 listview dont 1 qui ne fonctionne pas

pascal21

XLDnaute Barbatruc
bonjour à tous
je n'arrive pas à faire la chose suivante:
dans un usf j'ai mis 2 listview
la 1ere copie les colonnes b,d,e,f,h à partir de la ligne 53
celle là fonctionne bien
la 2eme copie les colonnes i, j, k, l, m à partir de la ligne 53
là ça ne fonctionne pas
les tableaux copiés sont différents, c'est pour cela que je ne les mets pas dans la même listview
Code:
Private Sub UserForm_Initialize()
    ' Initialisation du listview1
    '----------------------------------------listview1
    With ListView1
        With .ColumnHeaders
            ' Vider le listview
            .Clear
            
            'Ajouter les colonnes
            .Add , , "DATES", 100  'B
            .Add , , "EMPLOYES", 90, lvwColumnCenter     'C
            .Add , , "EVENNEMENTS", 170, lvwColumnCenter    'D
            .Add , , "BONUS", 50, lvwColumnCenter    'E
            .Add , , "MALUS", 50, lvwColumnCenter    'F
            .Add , , "EXTRA-BONUS", 70, lvwColumnCenter    'h
            
        End With
    
        .View = 3
        .Gridlines = True
        .FullRowSelect = True
        .HideColumnHeaders = False
        .LabelEdit = 1
    End With
 
    ' Afficher les données
    Call Affiche1
    '---------------------------------------------listview2
     With ListView2
        With .ColumnHeaders
            ' Vider le listview
            .Clear
            
            'Ajouter les colonnes
            .Add , , "EMPLOYES", 70  'i
            .Add , , "BONUS", 40, lvwColumnCenter     'j
            .Add , , "MALUS", 40, lvwColumnCenter    'k
            .Add , , "POINTS ACQUIS", 70, lvwColumnCenter    'l
            .Add , , "EXTRA-BONUS", 70, lvwColumnCenter    'm
            
        End With
    
        .View = 3
        .Gridlines = True
        .FullRowSelect = True
        .HideColumnHeaders = False
        .LabelEdit = 1
    End With
 
    ' Afficher les données
    Call Affiche2
  End Sub
  
Sub Affiche1()
    ' Afficher les données dans le listview
    Dim Lig As Long
    Dim derLig As Long
    Dim LigList As Long
    Dim laCle As String
    
    With Worksheets("TABLEAU")
        ' Dernière ligne en colonne b
        derLig = .Range("b" & Cells.Rows.Count).End(xlUp).Row
        If derLig < 53 Then derLig = 53
        
        ' Initialisation de la ligne dans le listview
        LigList = 1
        
        ' Boucle de la ligne 2 à la dernière
        For Lig = 53 To derLig
            laCle = "L" & Lig
                
            ' Remplir la première colonne
            ListView1.ListItems.Add , laCle, .Range("b" & Lig).Value
            'Remplissage colonnes 2 à 5
            ListView1.ListItems(LigList).ListSubItems.Add , , .Range("C" & Lig).Value
            ListView1.ListItems(LigList).ListSubItems.Add , , .Range("D" & Lig).Value
            ListView1.ListItems(LigList).ListSubItems.Add , , .Range("E" & Lig).Value
            ListView1.ListItems(LigList).ListSubItems.Add , , .Range("F" & Lig).Value
            ListView1.ListItems(LigList).ListSubItems.Add , , .Range("H" & Lig).Value
            
          LigList = LigList + 1
        Next Lig
    End With
    End Sub
   '---------------------------------------------------------------------

Sub Affiche2()
    ' Afficher les données dans le listview
    Dim Lig2 As Long
    Dim derLig2 As Long
    Dim LigList2 As Long
    Dim laCle2 As String
    
    With Worksheets("TABLEAU")
        ' Dernière ligne en colonne i
        derLig2 = .Range("i" & Cells.Rows.Count).End(xlUp).Row
        If derLig2 < 53 Then derLig2 = 53
        
        ' Initialisation de la ligne dans le listview
        LigList2 = 1
        
        ' Boucle de la ligne 53 à la dernière
        For Lig2 = 53 To derLig
            laCle2 = "L" & Lig
                
            ' Remplir la première colonne
            ListView2.ListItems.Add , laCle2, .Range("i" & Lig2).Value
           
            ListView2.ListItems(LigList2).ListSubItems.Add , , .Range("j" & Lig2).Value
            ListView2.ListItems(LigList2).ListSubItems.Add , , .Range("k" & Lig2).Value
            ListView2.ListItems(LigList2).ListSubItems.Add , , .Range("l" & Lig2).Value
            ListView2.ListItems(LigList2).ListSubItems.Add , , .Range("m" & Lig2).Value
            
       LigList2 = LigList2 + 1
        Next Lig2
    End With
End Sub
voyez-vous ce qui cloche là dedans
merci
 
Dernière édition:

pascal21

XLDnaute Barbatruc
Re : 2 listview dont 1 qui ne fonctionne pas

fini par trouver les erreurs
ça se situait dans les derlig2 lig2 etc..... que je n'avait pas rectifiées au complet
maintenant si vous savez comment ne pas afficher les zéros dans les lignes où il n'y a rien d'inscrit ,je suis preneur
je parle des lignes de la listview bien sur
 
C

Compte Supprimé 979

Guest
Re : 2 listview dont 1 qui ne fonctionne pas

Salut Pascal21,

Pour moi, il suffit de faire un test avant d'ajouter les valeurs dans la ListView

Code:
Private Sub UserForm_Initialize()
    ' Initialisation du listview1
    '----------------------------------------listview1
    With ListView1
        With .ColumnHeaders
            ' Vider le listview
            .Clear
            
            'Ajouter les colonnes
            .Add , , "DATES", 100  'B
            .Add , , "EMPLOYES", 90, lvwColumnCenter     'C
            .Add , , "EVENNEMENTS", 170, lvwColumnCenter    'D
            .Add , , "BONUS", 50, lvwColumnCenter    'E
            .Add , , "MALUS", 50, lvwColumnCenter    'F
            .Add , , "EXTRA-BONUS", 70, lvwColumnCenter    'h
            
        End With
    
        .View = 3
        .Gridlines = True
        .FullRowSelect = True
        .HideColumnHeaders = False
        .LabelEdit = 1
    End With
 
    ' Afficher les données
    Call Affiche1
    '---------------------------------------------listview2
     With ListView2
        With .ColumnHeaders
            ' Vider le listview
            .Clear
            
            'Ajouter les colonnes
            .Add , , "EMPLOYES", 70  'i
            .Add , , "BONUS", 40, lvwColumnCenter     'j
            .Add , , "MALUS", 40, lvwColumnCenter    'k
            .Add , , "POINTS ACQUIS", 70, lvwColumnCenter    'l
            .Add , , "EXTRA-BONUS", 70, lvwColumnCenter    'm
            
        End With
    
        .View = 3
        .Gridlines = True
        .FullRowSelect = True
        .HideColumnHeaders = False
        .LabelEdit = 1
    End With
 
    ' Afficher les données
    Call Affiche2
  End Sub
  
Sub Affiche1()
    ' Afficher les données dans le listview
    Dim Lig As Long
    Dim derLig As Long
    Dim LigList As Long
    Dim laCle As String
    
    With Worksheets("TABLEAU")
        ' Dernière ligne en colonne b
        derLig = .Range("b" & Cells.Rows.Count).End(xlUp).Row
        If derLig < 53 Then derLig = 53
        
        ' Initialisation de la ligne dans le listview
        LigList = 1
        
        ' Boucle de la ligne 2 à la dernière
        For Lig = 53 To derLig
            laCle = "L" & Lig
            [COLOR=green][B]' Tester la cellule de la colonne "B" ou une autre
[/B][/COLOR]            [B][COLOR=blue]If .Range("B" & Lig).Value <> "" Then
[/COLOR][/B]            ' Remplir la première colonne
            ListView1.ListItems.Add , laCle, .Range("b" & Lig).Value
            'Remplissage colonnes 2 à 5
            ListView1.ListItems(LigList).ListSubItems.Add , , .Range("C" & Lig).Value
            ListView1.ListItems(LigList).ListSubItems.Add , , .Range("D" & Lig).Value
            ListView1.ListItems(LigList).ListSubItems.Add , , .Range("E" & Lig).Value
            ListView1.ListItems(LigList).ListSubItems.Add , , .Range("F" & Lig).Value
            ListView1.ListItems(LigList).ListSubItems.Add , , .Range("H" & Lig).Value
            
          LigList = LigList + 1
          [B][COLOR=blue]End IF
[/COLOR][/B]        Next Lig
    End With
    End Sub
   '---------------------------------------------------------------------

Sub Affiche2()
    ' Afficher les données dans le listview
    Dim Lig2 As Long
    Dim derLig2 As Long
    Dim LigList2 As Long
    Dim laCle2 As String
    
    With Worksheets("TABLEAU")
        ' Dernière ligne en colonne i
        derLig2 = .Range("i" & Cells.Rows.Count).End(xlUp).Row
        If derLig2 < 53 Then derLig2 = 53
        
        ' Initialisation de la ligne dans le listview
        LigList2 = 1
        
        ' Boucle de la ligne 53 à la dernière
        For Lig2 = 53 To derLig
            laCle2 = "L" & Lig
           [COLOR=green][B] ' Tester la cellule de la colonne "I" ou une autre
[/B][/COLOR]            [COLOR=blue][B]If .Range("I" & Lig2).Value <> "" Then
[/B][/COLOR]            ' Remplir la première colonne
            ListView2.ListItems.Add , laCle2, .Range("i" & Lig2).Value
           
            ListView2.ListItems(LigList2).ListSubItems.Add , , .Range("j" & Lig2).Value
            ListView2.ListItems(LigList2).ListSubItems.Add , , .Range("k" & Lig2).Value
            ListView2.ListItems(LigList2).ListSubItems.Add , , .Range("l" & Lig2).Value
            ListView2.ListItems(LigList2).ListSubItems.Add , , .Range("m" & Lig2).Value
            
       LigList2 = LigList2 + 1
        [B][COLOR=blue]End If
[/COLOR][/B]        Next Lig2
    End With
End Sub

Voilà ;)
 

pascal21

XLDnaute Barbatruc
Re : 2 listview dont 1 qui ne fonctionne pas

bonjour bruno
je viens d'essayer mais ça ne fonctionne pas ,même en modifiant le <>"" par =0 ou encore >0
ou ça ne change rien ou, tout l'affichage s'en va
j'ai modifié les formules dans les feuilles pour qu'elles n'affichent pas de données si colonne i est vide
c'est un pansement sur une jambe de bois mais en attendant je n'ai plus les colonnes entières remplies de zéro
merci
 

pascal21

XLDnaute Barbatruc
Re : 2 listview dont 1 qui ne fonctionne pas

re-bonjour
maintenant, je cherche le moyen de réinitialiser (raffraichir) l'usf (le 1er qui me dit de le mettre au frigo, je le zappe lol!!!!)
les 2listview sont sur usf initialize
mais je vais me servir de la place qui me reste pour saisir des données
j'aurai donc un bouton pour valider ces données
elles (les données) s'inscriront dans la feuille "tableau" et l'usf devra donc se mettre à jour
je ne trouve pas le code qui permet de réinitialiser un usf déjà affiché
ça doit être tout bête mais là, je sèche
 

Statistiques des forums

Discussions
311 711
Messages
2 081 792
Membres
101 817
dernier inscrit
carvajal