Bonjour à tous,
je me permets de solliciter votre aide, car j'ai épuisé les tests, je ne vois pas du tout le soucis.
Je dispose dans une feuille excel une base de données de contact personnel, dont les données démarrent à la ligne 12.
J'ai une colonne (la 17ème) qui donne le numéro de contact pour chaque ligne, c'est un numéro unique qui va de 1 jusqu'au nombre de contact.
Je travaille une listview, qui me prend toutes les colonnes et toutes les lignes. A chaque contact, j'ai donc dans ma liste view à la fin le numéro de "clé".
Je désire créer une fonction colorer() pour colorer le nom de famille des contacts en fonction du type (famille, pro, etc...).
A l'initialisation, ma listview contient toutes les données, donc la pas de problème. Sauf que j'ai des fonctions de filtre, et j'aimerai qu'à la fin de chaque fonction de filtre, je recolore l'affichage. Mettons que le filtre me renvoi 10 données sur un total de 500, cette fois l'index de listview ne correspond pas au numéro unique.
Dans ma fonction colorer, je cherche donc à récupérer la valeur de la clé de la ligne sélectionnée, afin de lui appliquer la bonne couleur.
Sauf que le "numcolonne" me renvoie une erreur 13 incompatibilité de type quand je l'applique dans le cells. J'ai fait une msgbox, j'ai bien la bonne valeur de ligne, j'ai vérifié le type, c'est bien numérique...
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 Sub colorer() Dim nb_ligne As Integer nb_ligne = ListView1.ListItems.Count Dim k, numcolonne As Integer For k = 1 To nb_ligne numcolonne = Int((CInt(ListView1.ListItems(k).ListSubItems(10)) + 11)) 'MsgBox (numcolonne) If Sheets("Liste").Cells(numcolonne, 16).Value = "PRO" Then ListView1.ListItems(k).ListSubItems(1).ForeColor = RGB(255, 142, 0) ListView1.ListItems(k).ListSubItems(1).Bold = True End If If Sheets("Liste").Cells(numcolonne, 16).Value = "Amis" Then ListView1.ListItems(k).ListSubItems(1).ForeColor = RGB(0, 142, 0) ListView1.ListItems(k).ListSubItems(1).Bold = True End If If Sheets("Liste").Cells(numcolonne, 16).Value = "Famille" Then ListView1.ListItems(k).ListSubItems(1).ForeColor = RGB(0, 0, 255) ListView1.ListItems(k).ListSubItems(1).Bold = True End If If Sheets("Liste").Cells(numcolonne, 16).Value = "Autres" Then ListView1.ListItems(k).ListSubItems(1).ForeColor = RGB(0, 120, 255) ListView1.ListItems(k).ListSubItems(1).Bold = True End If Next End Sub
je n'y comprends rien.
Merci infiniment !
Cordialement,
kenobiwan
Partager