Bonjour à tous !

Etant nouveau sur le forum, je fais appelle à vous car j'ai besoin d'aide pour transférer item d'une listbox à une listview, je m'explique... Je ne connaissais pas le VBA et très mal Excel il y a un mois. Jusqu'à maintenant, j'ai réussi à me débrouiller seul et d'ailleurs pour cela je remercie grandement votre site, les personnes qui ont consacrées tout les tutoriels présents sur le VBA, ainsi que votre forum très actif ou j'ai pu piocher du code à droite à gauche. Mais maintenant je fais impasse sur certains détails qui me bloque et sans réponse sur la toile. Bref parenthèse fermée voilà ma demande :

Ce qui est fait :
  • 1. J'ai un tableau avec des données que je transfère sur une ListView qui est lui-même présent dans un UserForm
    Données sur le tableau : Phase - Activité - Reference - Description - etc... - Contrôle
    Données sur la ListView : Phase - Activité - Reference - Description - Contrôle

  • 2. De ma ListView je choisi les données dont j'ai besoin et que je transfère sur ma ListBox en déformant ces données. Pour ajouter ces données j'utilise soit un bouton, soit un double clique
    Données sur la ListBox (telle que je l'ai codé) : "Référence" & " - " & "Description"
  • 3. Les données de ma ListBox servent à crée une fiche sur une nouvelle feuille de mon excel etc...


Ce que j'aimerai :Quand on supprime un Item d'une ListBox, il puisse se rajouter dans ma ListView. Un transfère tout simplement.
Au passage, j'ai utilisé une ListView par rapport aux possibilité de colorier les lignes sur certaines données. Sinon j'aurai utilisé une listBox.


J'ai essayé de réactualiser ma ListView mais du coup tout les items réapparaissent y compris ceux qui sont présents dans la ListBox et c'est cela qui posent problème.

Grand merci d'avance de votre réponse !
PS : Si vous avez besoin de détails ok mais par soucis de confidentialité je ne pourrai pas transmettre certaines informations.

voilà les codes :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
'**********************************************************
'Bouton qui supprime les points choisis dans la ListBox
'**********************************************************
Private Sub CommandButton1_Click()
If ListBox430.Value <> "" Then
    ListBox430.RemoveItem ListBox430.ListIndex
End If
End Sub
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
35
36
37
38
39
40
41
42
43
44
45
46
47
'*******************************************************
'Procédure permettant d'actualiser (ou de rafraichir)
'les données de la ListView et mettre de la mise en
'forme conditionnelle
'*******************************************************
 
Private Sub Actualisation()
 
    'Déclaration des variables
    Dim Item As ListItem
    Dim Dernier_430 As Integer
    Dim i As Integer
    Dim Couleur As Variant
    Dim MonCritere As Variant
 
    ListView430.ListItems.Clear 'On vide le contenu de la liste à chaque chargement
    Dernier_430 = Sheets("Fiche de contrôle 430").Cells(Rows.Count, 1).End(xlUp).Row 'On cherche la dernière ligne du tableau
 
    'On boucle toutes les lignes et on charge les informations dans la liste View
    For i = 21 To Dernier_430
 
        'On definit le critère sur lequel la couleur sera appliquée
         MonCritereConforme = Sheets("Fiche de contrôle 430").Cells(i, 10) 'Test des points 430
         MonCritereNonConforme = Sheets("Fiche de contrôle 430").Cells(i, 11)
 
        If (MonCritereNonConforme >= 1) Then
            Couleur = RGB(192, 0, 0)
        ElseIf (MonCritereConforme >= 1) Then
            Couleur = RGB(0, 130, 4)
        Else: Couleur = RGB(0, 0, 0)
 
        End If
 
 
            'On affiche dans la ListView le contenue de la base de données
            Set Item = ListView430.ListItems.Add(Text:=Sheets("Fiche de contrôle 430").Cells(i, 1))
 
            Item.SubItems(1) = Sheets("Fiche de contrôle 430").Cells(i, 2)
            Item.ListSubItems(1).ForeColor = Couleur
            Item.SubItems(2) = Sheets("Fiche de contrôle 430").Cells(i, 3)
            Item.ListSubItems(2).ForeColor = Couleur
            Item.SubItems(3) = Sheets("Fiche de contrôle 430").Cells(i, 4)
            Item.ListSubItems(3).ForeColor = Couleur
            Item.SubItems(4) = Sheets("Fiche de contrôle 430").Cells(i, 9)
    Next i
 
End Sub
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
 
'*******************************************************
'Initialisation de la ListView au démarrage du formulaire
'*******************************************************
Private Sub userForm_Initialize()
'Initialisation au démarrage du formulaire
    With ListView430
 
        .LabelEdit = 1 'Empeche la modification de la 1er colonne
        .Gridlines = True 'Affiche ou pas les lignes
        .View = lvwReport 'Style du rapport
        .FullRowSelect = True 'Permet de sélectionner une ligne dans la liste
        'Création des en-têtes personnalisées avec leur largeur
        .ColumnHeaders.Add Text:="Phase", Width:=40
        .ColumnHeaders.Add Text:="Activite", Width:=80
        .ColumnHeaders.Add Text:="Reference", Width:=50
        .ColumnHeaders.Add Text:="Description", Width:=400
        .ColumnHeaders.Add Text:="Contrôle", Width:=40
 
    End With
 
    Call Actualisation 'On appel la procédure qui actualise la ListView   
 
End Sub