Bonjour le forum,

J'ai un petit problème pour modifier la ligne sélectionnée d'une listview via des Textbox.

Je m'explique, j'ai une base de donnée de 9 Colonnes sur un nombre de ligne indéfini se situant sur une feuille de mon classeur. J'ai besoin d'une Listview pour rendre plus clair la lecture et la modification de ma base de données.

Ayant 9 Colonnes dans mon classeur, j' ai donc 9 Colonnes dans la Listview. et 9 Textbox dans mon userform pour modifier les données. Elles se nomme Textbox 1 à 9.
Lorsque je clic sur une ligne j'arrive a alimenter mes Textbox pour les modifier, mais le problème est comme dit plus haut je n'arrive pas à renvoyer celle ci dans ma Listview et dans ma BD

Pour importer les données j'utilise:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub UserForm_initialize()
Dim NBentree As Integer
 
NBentree = Sheets("Recettes - Dépenses").Cells(65535, 3).End(xlUp).Row
 
Call Remplir_Combobox
 
With Listview1
   .View = lvwReport
   .FullRowSelect = True
   .Gridlines = True
 
    .ColumnHeaders.Add , , Cells(2, 1), 50
    .ColumnHeaders.Add , , Cells(2, 2), 50
    .ColumnHeaders.Add , , Cells(2, 3), 50
    .ColumnHeaders.Add , , Cells(2, 4), 150
    .ColumnHeaders.Add , , Cells(2, 5), 50
    .ColumnHeaders.Add , , Cells(2, 6), 300
    .ColumnHeaders.Add , , Cells(2, 7), 50
    .ColumnHeaders.Add , , Cells(2, 8), 50
    .ColumnHeaders.Add , , Cells(2, 9), 50
End With
 
End Sub
et

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub Remplir_Combobox()
 
Dim SourceSheet
Dim Liste_Niv1, Dico_01 As Variant
Dim Cellule, Nblg As Integer
 
Set SourceSheet = ActiveWorkbook.Sheets("Recettes - Dépenses")
Set Dico_01 = CreateObject("scripting.dictionary")
 
Dico_01.RemoveAll
Nblg = SourceSheet.Cells(65535, 3).End(xlUp).Row
 
On Error Resume Next
 
For Cellule = 3 To Nblg
   Dico_01.Add SourceSheet.Cells(Cellule, 4).Value, 0
Next Cellule
 
On Error GoTo 0
 
Liste_Niv1 = Dico_01.keys
 
With ComboBox1
   .Clear
   .AddItem "TOUS"
   For Cellule = 0 To UBound(Liste_Niv1)
      If Liste_Niv1(Cellule) <> "" Then .AddItem Liste_Niv1(Cellule)
   Next Cellule
End With
ComboBox1.Text = "TOUS"
 
Set SourceSheet = Nothing
Set Dico_01 = Nothing
End Sub
Pour rapatrier la ligne selectionnée j'utilise :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Private Sub Listview1_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim Cellule As Integer
For Cellule = 1 To 9 Step 1
   If Cellule = 1 Then
      Me.Controls("TextBox" & Cellule).Text = Listview1.ListItems(Item.Index).Text
   Else
      Me.Controls("TextBox" & Cellule).Text = Listview1.ListItems(Item.Index).ListSubItems(Cellule - 1).Text
   End If
Next Cellule
 
End Sub
Pour exporter les données, j'ai essayé avec un bout de code trouvé sur le net qui est :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub CommandButton3_Click()
With Sheets("Recettes - Dépenses")
    For i = 1 To 10
        .Cells(Ligne, i) = Controls("TextBox" & i + 1)
    Next
End With
With ListView1
    .ListItems.Item(Idx) = TextBox2
    For i = 1 To 9
        .ListItems(Idx).SubItems(i) = Controls("TextBox" & i + 2)
    Next
End With
For j = 1 To 9
    Controls("TextBox" & j) = ""
Next
 
End Sub
et la plus rien!!! Pourriez vous m'aider?
Récapitulatif:
- Créer une Listview dans un Userform -> OK
- Créer un Filtre pour filtrer les données de la Listview -> OK
- Importer la Ligne sélectionner dans des textbox pour modifier celle ci -> OK
- Renvoyer les Données Modifier ou en ajouter dans la Listview et ma BD ->

Merci d'avance