Transférer Item d'une ListBox à une ListView
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:
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:
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:
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 |