Modification données Listview

biloute91

XLDnaute Occasionnel
Bonjour à tous et toutes,

j'ai besoin de votre aide concernant l'utilisation des ListView.J'ai un USF qui recupere des données d'un tableau dans une listview et je souhaite à partir d'une TextBox du USF modifier une donnée dans la listview qui incrementera le tableau.

Voici mon code :
Code:
Option Explicit
Dim traitOK As Boolean

Private Sub CommandButton1_Click()
    Dim wsBD As Worksheet
    Dim derLig As Long
    Dim Lig As Long
    Dim Plage As Range
    Dim CritRente As String
    Dim CritStatut As String
    Dim CritDateDeb As String
    Dim CritDateFin As String
    Dim LigList As Long
    
    Set wsBD = Worksheets("RECENSEMENT")
    
    ' Dernière ligne dans la feuille BD
    derLig = wsBD.Range("G" & Cells.Rows.Count).End(xlUp).Row
    If derLig < 2 Then Exit Sub
    
    ' Définition de la plage en colonne A
    Set Plage = wsBD.Range("A2:A" & derLig)
    
    ' Définition des critères
        ' N° Rente
    CritRente = IIf(TextBox1.Value = "", "*", TextBox1.Value)
        ' Statut
     CritStatut = IIf(TextBox5.Value <> "", "*", TextBox5.Value)
        ' Date Début
    CritDateDeb = DTPicker5.Value
    If DTPicker5.Value = "" Or Not IsDate(DTPicker5.Value) Then
        CritDateDeb = Format(Application.WorksheetFunction.Min(Plage), "dd/mm/yyyy")
    End If
        ' Date Fin
    CritDateFin = DTPicker6.Value
    If DTPicker6.Value = "" Or Not IsDate(DTPicker6.Value) Then
        CritDateFin = Format(Application.WorksheetFunction.Max(Plage), "dd/mm/yyyy")
    End If
    CritDateFin = DateAdd("d", 1, CritDateFin)
    
    LigList = 1
    
    ' Vider la listview
    ListView1.listItems.Clear
    
    ' Boucle sur toutes les lignes
    For Lig = 2 To derLig
        ' Rechercher par rapport aux critères
        If CDate(wsBD.Range("G" & Lig).Value) >= CDate(CritDateDeb) And _
            CDate(wsBD.Range("G" & Lig).Value) < CDate(CritDateFin) And _
            CStr(wsBD.Range("A" & Lig).Value) Like CritRente And _
            CStr(wsBD.Range("H" & Lig).Value) Like CritStatut Then
            
            ' Remplir la première colonne
            ListView1.listItems.Add , , wsBD.Range("A" & Lig).Value
            'Remplissage colonnes 2 à 5
            ListView1.listItems(LigList).listSubItems.Add , , wsBD.Range("C" & Lig).Value
            ListView1.listItems(LigList).listSubItems.Add , , wsBD.Range("D" & Lig).Value
            ListView1.listItems(LigList).listSubItems.Add , , wsBD.Range("E" & Lig).Value
            ListView1.listItems(LigList).listSubItems.Add , , wsBD.Range("F" & Lig).Value
            ListView1.listItems(LigList).listSubItems.Add , , wsBD.Range("G" & Lig).Value
            ListView1.listItems(LigList).listSubItems.Add , , wsBD.Range("H" & Lig).Value
            LigList = LigList + 1
        End If
    Next Lig
  
End Sub

[COLOR="Red"]Private Sub CommandButton2_Click()

ListView1.listItems(1).listSubItems(6).Text = TextBox5.Value
 
 Unload Me
 End Sub[/COLOR]

Private Sub UserForm_Initialize()
    With Me
        With .ListView1
            With .ColumnHeaders
                .Clear
                .Add , , "Conseiller", 60
                .Add , , "Equipe", 60
                .Add , , "Client", 70
                .Add , , "N° Client", 50
                .Add , , "date de contact", 70
                .Add , , "date 1er rappel", 70
                .Add , , "Statut", 70
            End With
    
            .View = 3
            .Gridlines = True
            .FullRowSelect = True
            .HideColumnHeaders = False
            .LabelEdit = 1
        End With
    End With
    
    Frame1.Visible = False
    TextBox4.Enabled = False
End Sub

Je pense que c'est au niveau de la partie rouge du code qu'il y a un pb

Merci pour votre aide
 

RENAUDER

Nous a quitté
Repose en paix
Re : Modification données Listview

Bonjour,
Code:
 With ListView1
        For i = 1 To ListView1.ListItems.Count
            If ListView1.ListItems(i).ListSubItems(6).Text = Me.TextBox1.Text Then
                ListView1.ListItems(i).ListSubItems(6).Text = "Je change"
                ' Mise à jour de la cellule concernée dans la Sheet
                Cells(i + 1, 7).Value = "Je change"
            Else
            End If
        Next i
    End With
 

biloute91

XLDnaute Occasionnel
Re : Modification données Listview

Bonjour Eric et merci pour ta reponse.
C'est presque ce que je voulais sauf à dire que la modification ne s'effectue pas dans la feuille où se trouve le tableau mais dans la feuille où se trouve le USF (j'avais omis de le préciser).
J'ai donc essayé d'adapter ton code de la maniere suivante :
Code:
With ListView1
        For i = 1 To ListView1.ListItems.Count
            If ListView1.ListItems(i).ListSubItems(6).Text = Me.ComboBox1.Text Then
                ListView1.ListItems(i).ListSubItems(6).Text = ComboBox1.Value
                ' Mise à jour de la cellule concernée dans la Sheet
               
                Worksheets("RECENSEMENT").Cells(i + 1, 8).Value = ComboBox1.Value
                
            Else
            End If
        Next i
    End With
La modification se fait dans la bonne feuille,dans la bonne colonne mais pas sur la ligne qui correspond à celle de la listview.

Merci de ton aide
 

PMO2

XLDnaute Accro
Re : Modification données Listview

Bonjour,

J'ai modifié la procédure "Private Sub CommandButton2_Click()".

A tester donc.

*************
Private Sub CommandButton2_Click()
Dim LS As ListSubItem
Dim T()
Dim i&
Dim wsBD As Worksheet
Dim derLig As Long

With ListView1
Set LS = .ListItems(.SelectedItem.Index).ListSubItems(6)
If LS.Text = TextBox5.Value Then Exit Sub
LS.Text = TextBox5.Value
ReDim T(1 To 1, 1 To .ListItems(1).ListSubItems.Count + 2)
T(1, 1) = .ListItems(.SelectedItem.Index)
For i& = 3 To UBound(T, 2)
T(1, i&) = .ListItems(.SelectedItem.Index).ListSubItems(i& - 2)
Next i&
End With
Set wsBD = Worksheets("RECENSEMENT")
derLig = wsBD.Range("G" & wsBD.Cells.Rows.Count).End(xlUp).Row
wsBD.Range(wsBD.Cells(derLig + 1, 1), wsBD.Cells(derLig + 1, UBound(T, 2))) = T
TextBox5.Value = ""
Call CommandButton1_Click

'Unload Me
End Sub
*************
Cordialement.

PMO
Patrick Morange
 

biloute91

XLDnaute Occasionnel
Re : Modification données Listview

avec un fichier joint réduit au minimum pour l'envoyer.
Patrick, ton code me recopie en fait la même ligne sur le tableau , j'ai donc deux lignes : une avec un resultat l'autre sans
 

Pièces jointes

  • rappel nep5.zip
    38.4 KB · Affichages: 220

PMO2

XLDnaute Accro
Re : Modification données Listview

Bonjour,

Si j'ai bien compris, vous voulez modifier la colonne "H" (Statut)
de la feuille "RECENSEMENT" à partir de la ListView de votre
UserForm.

Si c'est bien cela alors, ci-joint, un classeur zippé dans lequel
les modifications du code sont signalées par '//// pmo

Cordialement.

PMO
Patrick Morange
 

Discussions similaires

Statistiques des forums

Discussions
312 608
Messages
2 090 189
Membres
104 446
dernier inscrit
Phil A