[VBA] Utilisation de Listview

Utilisation de Listview [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 02-10-2008 à 21:18:26    

:hello:  
 
Salut à tous !
Je reviens à la charge avec l'utilisation de l'outil Listview.
J'ai un tableau Excel avec 5 colonnes et 10 lignes.
Je souhaite alimenter une zone de liste dans une userform...
Quel est le code pour faire cela ???
J'ai vraiment du mal à trouver sur le net... :(
 
Merci pour votre aide... ;)


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 02-10-2008 à 21:18:26   

Reply

Marsh Posté le 12-10-2008 à 11:42:59    

UP
 
Y'a vraiment personne pour m'aider ???
 
 :cry:


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 12-10-2008 à 17:58:57    

UP (re) ! :D
 
Finalement, j'ai réussi à faire une Userform avec une ComboBox dans laquelle je sélectionne 1,2 ou 3 et selon le choix, la Listview en-dessous s'alimente des tableaux qui se trouvent dans la 1ère feuille, la 2ème ou la 3ème (AA, BB ou CC)...
J'utilise Change avec Combobox.
ça marche très bien...
 
Voici le bout de mon code :
 

Code :
  1. Private Sub ComboBox1_Change()
  2.     Dim Tableau, j&, y&
  3.    
  4.     If ComboBox1.Value = 1 Then
  5.         Sheets("AA" ).Select
  6.         Range("A1" ).Select
  7.         Selection.CurrentRegion.Select
  8.         Tableau = Selection.Value
  9.         Me.LISTELISTE1.View = lvwReport
  10.         Me.LISTELISTE1.ListItems.Clear
  11.         Me.LISTELISTE1.ColumnHeaders.Add 1, , "1er", 80, lvwColumnLeft
  12.         Me.LISTELISTE1.ColumnHeaders.Add 2, , "2ème", 80, lvwColumnRight
  13.         Me.LISTELISTE1.ColumnHeaders.Add 3, , "3ème", 80, lvwColumnRight
  14.         For y = UBound(Tableau, 1) To LBound(Tableau, 1) Step -1
  15.             Me.LISTELISTE1.ListItems.Add 1, , Tableau(y, 1)
  16.             Me.LISTELISTE1.ListItems(1).SubItems(1) = Tableau(y, 2)
  17.             Me.LISTELISTE1.ListItems(1).SubItems(2) = Tableau(y, 3)
  18.         Next y
  19.     End If
  20.    
  21.     If ComboBox1 = 2 Then
  22.         Sheets("BB" ).Select
  23.         Range("A1" ).Select
  24.         Selection.CurrentRegion.Select
  25.         Tableau = Selection.Value
  26.         Me.LISTELISTE1.View = lvwReport
  27.         Me.LISTELISTE1.ListItems.Clear
  28.         Me.LISTELISTE1.ColumnHeaders.Add 1, , "1er", 80, lvwColumnLeft
  29.         Me.LISTELISTE1.ColumnHeaders.Add 2, , "2ème", 80, lvwColumnRight
  30.         Me.LISTELISTE1.ColumnHeaders.Add 3, , "3ème", 80, lvwColumnRight
  31.         For y = UBound(Tableau, 1) To LBound(Tableau, 1) Step -1
  32.             Me.LISTELISTE1.ListItems.Add 1, , Tableau(y, 1)
  33.             Me.LISTELISTE1.ListItems(1).SubItems(1) = Tableau(y, 2)
  34.             Me.LISTELISTE1.ListItems(1).SubItems(2) = Tableau(y, 3)
  35.         Next y
  36.     End If
  37.    
  38.     If ComboBox1 = 3 Then
  39.         Sheets("CC" ).Select
  40.         Range("A1" ).Select
  41.         Selection.CurrentRegion.Select
  42.         Tableau = Selection.Value
  43.         Me.LISTELISTE1.View = lvwReport
  44.         Me.LISTELISTE1.ListItems.Clear
  45.         Me.LISTELISTE1.ColumnHeaders.Add 1, , "1er", 80, lvwColumnLeft
  46.         Me.LISTELISTE1.ColumnHeaders.Add 2, , "2ème", 80, lvwColumnRight
  47.         Me.LISTELISTE1.ColumnHeaders.Add 3, , "3ème", 80, lvwColumnRight
  48.         For y = UBound(Tableau, 1) To LBound(Tableau, 1) Step -1
  49.             Me.LISTELISTE1.ListItems.Add 1, , Tableau(y, 1)
  50.             Me.LISTELISTE1.ListItems(1).SubItems(1) = Tableau(y, 2)
  51.             Me.LISTELISTE1.ListItems(1).SubItems(2) = Tableau(y, 3)
  52.         Next y
  53.     End If
  54. End Sub


 
Chaque feuille contient un tableau de 3 colonnes sur un certains nombre de lignes.
LISTELISTE1 est la Listview dans ma Userform.
 
;)


Message édité par scaryfan le 12-10-2008 à 18:02:24

---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 26-10-2008 à 07:38:33    

UP  :D  
 
Je souhaiterais améliorer la lisibilité de ma listeview en fonction de certaines informations contenues dans mes tableaux.
Comme décrit ci-avant, j'ai 3 feuilles contenant chacunes un tableau de X lignes sur 3 colonnes.
Dans la 3ème colonne, j'ai une valeur qui est soit 1 soit 2...
En fonction de la valeur de cette colonne, comment faire pour que mes lignes soient de couleurs différentes (rouge pour 1 et vert pour 2 par exemple) ???
Quelqu'un a une idée ???  :whistle:


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 26-10-2008 à 08:38:16    

scaryfan a écrit :

UP  :D  
 
Je souhaiterais améliorer la lisibilité de ma listeview en fonction de certaines informations contenues dans mes tableaux.
Comme décrit ci-avant, j'ai 3 feuilles contenant chacunes un tableau de X lignes sur 3 colonnes.
Dans la 3ème colonne, j'ai une valeur qui est soit 1 soit 2...
En fonction de la valeur de cette colonne, comment faire pour que mes lignes soient de couleurs différentes (rouge pour 1 et vert pour 2 par exemple) ???
Quelqu'un a une idée ???  :whistle:


 
Finalement, j'ai quand même réussi à coloriser les caractères... mais pas la ligne...
Voici le code inséré à la fin de la macro juste avant le "End Sub" :

Code :
  1. For j = LISTELISTE1.ListItems.Count To 1 Step -1
  2.         Set MItem = LISTELISTE1.ListItems(j)
  3.         If MItem.SubItems(2) = 2 Then
  4.             With MItem
  5.                 .Bold = True
  6.                 .ForeColor = RGB(255, 51, 0)
  7.                 .ListSubItems(1).ForeColor = RGB(255, 51, 0)
  8.                 .ListSubItems(2).ForeColor = RGB(255, 51, 0)
  9.                 .ListSubItems(1).Bold = True
  10.                 .ListSubItems(2).Bold = True
  11.             End With
  12.         End If
  13.         If MItem.SubItems(2) = 1 Then
  14.             With MItem
  15.                 .Bold = True
  16.                 .ForeColor = RGB(51, 102, 0)
  17.                 .ListSubItems(1).ForeColor = RGB(51, 102, 0)
  18.                 .ListSubItems(2).ForeColor = RGB(51, 102, 0)
  19.                 .ListSubItems(1).Bold = True
  20.                 .ListSubItems(2).Bold = True
  21.             End With
  22.         End If
  23.     Next j
  24.    
  25.     LISTELISTE1.Refresh



---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 27-10-2008 à 08:49:28    

:cry:  
 
VBA m'énerve !!!
En fonction de la version Excel, ça marche ou ça ne marche pas...
Quand je lance ma macro avec Excel 2003 SP2, j'ai le message :
"Erreur de compilation : projet ou bibliothèque introuvable" et le débogueur pointe sur : "MItem" sur la ligne 2. (voir post précédent).
 
Quelqu'un aurait-il une soluce ???  ;)


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 27-10-2008 à 09:17:19    

:p  
 
J'ai trouvé la soluce tout seul !
En fait, selon la version Excel, il faut déclarer ou non la variable au début de la macro...
Sous Excel 2003, il faut la déclarer... et pas sous Excel 2000...  :o


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed