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
Partager