Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/09/2011, 11h18   #1
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Par défaut Remplissage d'un tableau - erreurs

Bonjour à tous ,

Je suis en galère depuis plusieurs jours sur une macro utilisant des tableaux.

Pour comprendre, voici mon bout de code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Dim DerL As Variant
Dim LN(18, 33) As Variant
Dim D As Variant
Dim Tbl As Variant
 
With Worksheets("Sept")
    DerL = .Range("A20").End(xlUp).Row
    Set Tbl = .Range("A2:AF19")
    For Each D In Tbl
        LN(D.Row, D.Column) = D.Interior.Color
    Next D
End With
J'ai une erreur à la fin de la boucle For Each : L'indice n'appartient pas à la sélection.
Qu'est-ce que cela signifie ? Quelqu'un peut m'éclairer ?

Merci d'avance,

Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 11h24   #2
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Par défaut Réponse

Je viens de trouver mon erreur.

Le tableau LN était trop petit par rapport au tableau Tbl. Il m'a donc simplement fallu accorder la taille des deux.

Désolée...

Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 11h31   #3
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Par défaut M'enfin,

Finalement j'aurais qd même besoin de votre aide !

Je n'arrive pas à remplir mon tableau.
J'ai l'impression qu'il ne me le remplit pas à la ligne
Code :
Set Tbl = .Range("A2:AF19")
.

Et de ce fait, j'ai une erreur dans ce code :
Code :
1
2
3
4
5
6
7
8
9
10
 
    With ListView1
        .ListItems.Clear
        For L = 1 To UBound(Tbl, 1)
            .ListItems.Add , , Tbl(L, 1)
            For c = 2 To UBound(Tbl, 2)
                .ListItems(.ListItems.Count).ListSubItems.Add , , Tbl(L, c)
            Next
        Next
    End With
Il me dit "incompatibilité de type" à la ligne
Code :
For L = 1 To UBound(Tbl, 1)
Quelqu'un saurait-il me dire ?


Merci d'avance
Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 11h33   #4
Membre éprouvé
 
Homme Franck PRESSE
Inscription : août 2010
Messages : 202
Détails du profil
Informations personnelles :
Nom : Homme Franck PRESSE
Âge : 38
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : août 2010
Messages : 202
Points : 444
Points : 444
Bonjour,
Tout d'abord milles excuses car je n'ai pas d'explication à apporter.....
Cependant, ton code fonctionnera si tu remplaces :
Code :
Dim LN(18, 33) As Variant
par :
Code :
Dim LN(19, 33) As Variant
Une autre petite correction à apporter concernant DerL. Cette variable "représente" un nombre entier. Tu le sais. Donc il vaux mieux la déclarer en tant que "Entier" plutôt que "Variant".
Remplace donc :
par :
Code :
Dim DerL As Integer 'ou Long si le nombre de lignes est appelé à dépasser 32767...
__________________
Cordialement,
Franck P.


Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...
pijaku est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/09/2011, 11h41   #5
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Merci Pijaku pour tes conseils.

En fait, j'ai un peu tricher mais j'ai remplacé par un entier (20 entre autre) et par un autre (34) et ça fonctionne.

M'enfin, si quelqu'un peut m'éclairer, je suis preneuse
Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 11h42   #6
Membre éprouvé
 
Homme Franck PRESSE
Inscription : août 2010
Messages : 202
Détails du profil
Informations personnelles :
Nom : Homme Franck PRESSE
Âge : 38
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : août 2010
Messages : 202
Points : 444
Points : 444
Citation:
Envoyé par Cocotte278 Voir le message
Je n'arrive pas à remplir mon tableau.
J'ai l'impression qu'il ne me le remplit pas à la ligne
Code :
Set Tbl = .Range("A2:AF19")
.
Il me dit "incompatibilité de type" à la ligne
Code :
For L = 1 To UBound(Tbl, 1)
Quelqu'un saurait-il me dire ?
Merci d'avance
J'ai surtout l'impression que tu te mélanges les pédales dans tes variables...

Plutôt que de corriger des bouts de code les uns après les autres, il serait préférable que tu nous dises exactement ce que tu souhaites réaliser, et, le cas échéant, que tu nous donnes l'intégralité du code concerné...
__________________
Cordialement,
Franck P.


Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...
pijaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 12h33   #7
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Ok. C'est vrai que je me mélange un peu.

Je voudrais transmettre ma mise en forme de mon tableur Excel dans une ListView (au moins la couleur de police).

Voici mon code :

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
 
Dim Tbl As Variant 'données feuille clients variables pour la feuille
Dim Col As Integer
Option Base 1
'Option Explicit
 
Private Sub ListView1_Click()
 
With Me.ListView1
L = .SelectedItem.Index
TextBox1 = .ListItems(L).Text
For c = 1 To 10
Me("TextBox" & c + 1) = .ListItems(L).ListSubItems(c).Text
Next c
End With
 
End Sub
 
Private Sub MultiPage1_Change()
 
End Sub
 
Private Sub UserForm_Initialize()
Dim DerL As Integer
Dim LN(20, 34) As Variant
Dim D As Variant
 
    ' Initialisation du listview (cette partie fonctionne)
    With ListView1
        With .ColumnHeaders
            ' Vider le listview
            .Clear
            'Ajouter les colonnes
            .Add , , "Prénom Nom", 100, lvwColumnCenter
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
        End With
 
        .View = 3                   ' type Report
        .Gridlines = True           ' affichage de lignes
        .FullRowSelect = True       ' sélection complète de la ligne
        .HideColumnHeaders = False  ' afficher les en-têtes de colonnes
        .LabelEdit = 1              ' ne pas autoriser la saisie
        .BackColor = RGB(230, 230, 255)
        .ForeColor = RGB(0, 0, 0)
        .Font.Size = 8
    End With
 
With Worksheets("Sept") 'C'est là que ça se gâte !
    DerL = .Range("A20").End(xlUp).Row
    Set Tbl = .Range("A2:AF19")
    For Each D In Tbl
        LN(D.Row, D.Column) = D.Interior.Color
    Next D
End With
 
IniListview
 
End Sub
 
Private Sub IniListview()
Dim L As Long, c As Long
Dim LN(20, 34) As Variant
 
 
    With ListView1
        .ListItems.Clear
        For L = 1 To 20
            .ListItems.Add , , Tbl(L, 1)
            For c = 2 To 34
                .ListItems(.ListItems.Count).ListSubItems.Add , , Tbl(L, c)
            Next
        Next
        For L = 1 To 20
            .ListItems.Add , , LN(L, 1)
            For c = 2 To 34
                'Rouge = LN(L, c) Mod 256
                'Vert = LN(L, c) / 256 Mod 256
                'Bleu = LN(L, c) / 256 / 256 Mod 256
                .ListItems(.ListItems.Count).ListSubItems.ForeColor = RGB(0, 0, 0)
            Next
        Next
    End With
 
End Sub
A la base, l'erreur qui me cause des ennuies c'est une erreur de compilation (membre de méthode ou de données introuvable) que la ligne de code
Code :
.ListItems(.ListItems.Count).ListSubItems.ForeColor = RGB(0, 0, 0)
...

Mais j'ai l'impression que mon tableau LN est vide...

Est-on sûr et certain que l'on peut "sauvegarder" dans une cellule ou un tableau (ensemble de cellules) la mise en forme d'une autre cellule ?

Code :
LN(D.Row, D.Column) = D.Interior.Color
Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 13h37   #8
Membre éprouvé
 
Homme Franck PRESSE
Inscription : août 2010
Messages : 202
Détails du profil
Informations personnelles :
Nom : Homme Franck PRESSE
Âge : 38
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : août 2010
Messages : 202
Points : 444
Points : 444
Attention, Loooooongue réponse...

Citation:
Ok. C'est vrai que je me mélange un peu.
Tu m'étonnes!!!
Citation:
Mais j'ai l'impression que mon tableau LN est vide...
Non ton tableau LN n'est pas vide.

Si tu permets on va reprendre depuis le début, enfin là ou ça commence à "déconner".
Code :
1
2
3
4
5
6
7
With Worksheets("Sept") 'C'est là que ça se gâte !
    DerL = .Range("A20").End(xlUp).Row
    Set Tbl = .Range("A2:AF19")
    For Each D In Tbl
        LN(D.Row, D.Column) = D.Interior.Color
    Next D
End With
1- DerL ne sert à rien ===> On supprime
2- les lignes :
Code :
1
2
Set Tbl = .Range("A2:AF19")
    For Each D In Tbl
nous indique que Tbl et D sont tous deux des Objets "Range". Déclare les donc comme tels.
3- LN(D.Row, D.Column) pour D allant de A2 à AF19 nous donne un tableau comme suit :
LN(2, 1) = blabla
LN(2, 2) = bla bla
Or, il s'avère que les indices des tableaux débutent à 0. Ce qui veux dire que ta variable tableau LN, se remplit automatiquement de "rien" pour toutes ses valeurs de LN(0, 0) à LN(2, 1).
Pour modifier cela, (c'est important de le faire pour la erstitution des données), change la ligne :
Code :
LN(D.Row, D.Column) = D.Interior.Color
par :
Code :
LN(D.Row - 2, D.Column - 1) = D.Interior.Color
La restitution dans le listview.
Tu appelles une autre procédure (IniListview) pour la restitution des données. Or il y a forcément des données communes aux deux procédures (IniListview et UserForm_Initialize). Donc les variables communes doivent être déclarées en tête de module. Pour ne pas compliquer, j'ai intégré la restitution des données dans la procédure Initialise.
Ton code :
Code :
1
2
3
4
5
6
7
8
With ListView1
        .ListItems.Clear
        For L = 1 To 20
            .ListItems.Add , , Tbl(L, 1)
            For c = 2 To 34
                .ListItems(.ListItems.Count).ListSubItems.Add , , Tbl(L, c)
            Next
        Next
1- Et pourtant tu le dis bien... "J'ai l'impression que mon tableau LN est vide".
Non ton tableau LN n'est pas vide, mais pour remplir ta listview, tu n'utilises pas LN, mais ta variable de type range : Tbl........
Marche pas!
2- Pour ajouter à ta listview le contenu de ta variable tableau LN, il convient de boucler, non pas sur la listview, mais sur les éléments de ton tableau. Soit :
Code :
1
2
3
4
5
6
7
8
9
With ListView1
    .ListItems.Clear
    For L = 0 To UBound(LN, 1)
        .ListItems.Add , , LN(L, 0)
        For c = 1 To UBound(LN, 2)
            .ListItems(.ListItems.Count).ListSubItems.Add , , LN(L, c)
        Next
    Next
End With
Voici donc le code, corrigé, de ta procédure UserForm_Initialize :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Private Sub UserForm_Initialize()
Dim Tbl As Range, D As Range
Dim LN(19, 33)
Dim L As Integer, c As Integer
 
With ListView1
        With .ColumnHeaders
            ' Vider le listview
            .Clear
            'Ajouter les colonnes
            .Add , , "Prénom Nom", 100 ', lvwColumnCenter
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
        End With
 
        .View = 3                   ' type Report
        .Gridlines = True           ' affichage de lignes
        .FullRowSelect = True       ' sélection complète de la ligne
        .HideColumnHeaders = False  ' afficher les en-têtes de colonnes
        .LabelEdit = 1              ' ne pas autoriser la saisie
        .BackColor = RGB(230, 230, 255)
        .ForeColor = RGB(0, 0, 0)
        .Font.Size = 8
    End With
 
With Worksheets("Sept")  'C'est là que ça se gâte !
    Set Tbl = .Range("A2:AF19")
    For Each D In Tbl
        LN(D.Row - 2, D.Column - 1) = D.Interior.Color
    Next D
End With
 
With ListView1
    .ListItems.Clear
    For L = 0 To UBound(LN, 1)
        .ListItems.Add , , LN(L, 0)
        For c = 1 To UBound(LN, 2)
            .ListItems(.ListItems.Count).ListSubItems.Add , , LN(L, c)
        Next
    Next
 
'For L = 1 To 20
'    .ListItems.Add , , LN(L, 1)
'    For c = 2 To 34
'        'Rouge = LN(L, c) Mod 256
'        'Vert = LN(L, c) / 256 Mod 256
'        'Bleu = LN(L, c) / 256 / 256 Mod 256
'        .ListItems(.ListItems.Count).ListSubItems.ForeColor = RGB(0, 0, 0)
'    Next
'Next
End With
 
End Sub
Remarque : Ton code ne fait pas ce que tu souhaites faire :
Code :
Je voudrais transmettre ma mise en forme de mon tableur Excel dans une ListView (au moins la couleur de police).
Or là, il ne fait pas de coloriage, mais remplit tes cellules du listview avec le nombre correspondant à la couleur de fond de tes cellules feuille "Sept"...

Essaye déjà d'intégrer tout ce code, et reviens pour faire un peu de coloriage avec tonton Francky
__________________
Cordialement,
Franck P.


Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...
pijaku est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/09/2011, 14h03   #9
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Oh, merci Frank pour ta looooongue réponse
J'ai bien compris ce qu etu m'as expliqué !!! Merci beaucoup

Alors, pour avoir la couleur de police plutôt que le fond, je propose d'utiliser Reste à trouver comment mettre de la couleur dans ma ListView.

Utiliser le ForeColor ?!
Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 15h23   #10
Membre éprouvé
 
Homme Franck PRESSE
Inscription : août 2010
Messages : 202
Détails du profil
Informations personnelles :
Nom : Homme Franck PRESSE
Âge : 38
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : août 2010
Messages : 202
Points : 444
Points : 444
Citation:
Alors, pour avoir la couleur de police plutôt que le fond, je propose d'utiliser
Ca c'est facile...
Citation:
Reste à trouver comment mettre de la couleur dans ma ListView.
Utiliser le ForeColor ?!
Le problème est que le ColorIndex est numérique 1, 2, 3 ... 56 mais le ForeColor est de type : RGB(0, 0, 0)...
Ca ne fonctionne donc pas.
La preuve le code ne colorie rien du tout :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Private Sub UserForm_Initialize()
Dim Tbl As Range, D As Range
Dim LN(19, 33)
Dim Couleurs(19, 33)
Dim L As Integer, c As Integer
 
With ListView1
        With .ColumnHeaders
            ' Vider le listview
            .Clear
            'Ajouter les colonnes
            .Add , , "Prénom Nom", 100 ', lvwColumnCenter
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
        End With
 
        .View = 3                   ' type Report
        .Gridlines = True           ' affichage de lignes
        .FullRowSelect = True       ' sélection complète de la ligne
        .HideColumnHeaders = False  ' afficher les en-têtes de colonnes
        .LabelEdit = 1              ' ne pas autoriser la saisie
        .BackColor = RGB(230, 230, 255)
        .ForeColor = RGB(0, 0, 0)
        .Font.Size = 8
    End With
 
With Worksheets("Sept")  'C'est là que ça se gâte !
    Set Tbl = .Range("A2:AF19")
    For Each D In Tbl
        'Stocke les couleurs de police
        Couleurs(D.Row - 2, D.Column - 1) = D.Font.ColorIndex
        'Stocke le contenu des cellules
        LN(D.Row - 2, D.Column - 1) = D.Value
    Next D
End With
 
With ListView1
    .ListItems.Clear
    For L = 0 To UBound(LN, 1)
        .ListItems.Add , , LN(L, 0)
        For c = 1 To UBound(LN, 2)
            .ListItems(.ListItems.Count).ListSubItems.Add , , LN(L, c)
        Next
    Next
    For L = 0 To UBound(LN, 1)
        For c = 1 To UBound(LN, 2)
            .ListItems(L + 1).ListSubItems(c).ForeColor = Couleurs(L, c)
        Next
    Next
 
'For L = 1 To 20
'    .ListItems.Add , , LN(L, 1)
'    For c = 2 To 34
'        'Rouge = LN(L, c) Mod 256
'        'Vert = LN(L, c) / 256 Mod 256
'        'Bleu = LN(L, c) / 256 / 256 Mod 256
'        .ListItems(.ListItems.Count).ListSubItems.ForeColor = RGB(0, 0, 0)
'    Next
'Next
End With
 
End Sub
A moins de pouvoir convertir du ColorIndex en RGB, mais ça je ne sais pas faire.....

Bon, en attendant qu'une "tête" de ce forum trouve la bonne solution, je te livre mon "usine à gaz"...
Cette procédure n'a qu'un seul avantage pour elle, ... elle a le mérite de fonctionner!...

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
Private Sub UserForm_Initialize()
Dim Tbl As Range, D As Range
Dim LN(19, 33)
Dim Couleurs(19, 33)
Dim L As Integer, c As Integer
Dim Coul(56)
 
Coul(0) = RGB(0, 0, 0)
Coul(1) = RGB(255, 255, 255)
Coul(2) = RGB(255, 0, 0)
Coul(3) = RGB(0, 255, 0)
Coul(4) = RGB(0, 0, 255)
Coul(5) = RGB(255, 255, 0)
Coul(6) = RGB(255, 0, 255)
Coul(7) = RGB(0, 255, 255)
Coul(8) = RGB(128, 0, 0)
Coul(9) = RGB(0, 128, 0)
Coul(10) = RGB(0, 0, 128)
Coul(11) = RGB(128, 128, 0)
Coul(12) = RGB(128, 0, 128)
Coul(13) = RGB(0, 128, 128)
Coul(14) = RGB(192, 192, 192)
Coul(15) = RGB(128, 128, 128)
Coul(16) = RGB(153, 153, 255)
Coul(17) = RGB(153, 51, 102)
Coul(18) = RGB(255, 255, 204)
Coul(19) = RGB(204, 255, 255)
Coul(20) = RGB(102, 0, 102)
Coul(21) = RGB(255, 128, 128)
Coul(22) = RGB(0, 102, 204)
Coul(23) = RGB(204, 204, 255)
Coul(24) = RGB(0, 0, 128)
Coul(25) = RGB(255, 0, 255)
Coul(26) = RGB(255, 255, 0)
Coul(27) = RGB(0, 255, 255)
Coul(28) = RGB(128, 0, 128)
Coul(29) = RGB(128, 0, 0)
Coul(30) = RGB(0, 128, 128)
Coul(31) = RGB(0, 0, 255)
Coul(32) = RGB(0, 204, 255)
Coul(33) = RGB(204, 255, 255)
Coul(34) = RGB(204, 255, 204)
Coul(35) = RGB(255, 255, 153)
Coul(36) = RGB(153, 204, 255)
Coul(37) = RGB(255, 153, 204)
Coul(38) = RGB(204, 153, 255)
Coul(39) = RGB(255, 204, 153)
Coul(40) = RGB(51, 102, 255)
Coul(41) = RGB(51, 204, 204)
Coul(42) = RGB(153, 204, 0)
Coul(43) = RGB(255, 204, 0)
Coul(44) = RGB(255, 153, 0)
Coul(45) = RGB(255, 102, 0)
Coul(46) = RGB(102, 102, 153)
Coul(47) = RGB(150, 150, 150)
Coul(48) = RGB(0, 51, 102)
Coul(49) = RGB(51, 153, 102)
Coul(50) = RGB(0, 51, 0)
Coul(51) = RGB(51, 51, 0)
Coul(52) = RGB(153, 51, 0)
Coul(53) = RGB(153, 51, 102)
Coul(54) = RGB(51, 51, 153)
Coul(55) = RGB(51, 51, 51)
 
With ListView1
        With .ColumnHeaders
            ' Vider le listview
            .Clear
            'Ajouter les colonnes
            .Add , , "Prénom Nom", 100 ', lvwColumnCenter
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
            .Add , , " "
        End With
 
        .View = 3                   ' type Report
        .Gridlines = True           ' affichage de lignes
        .FullRowSelect = True       ' sélection complète de la ligne
        .HideColumnHeaders = False  ' afficher les en-têtes de colonnes
        .LabelEdit = 1              ' ne pas autoriser la saisie
        .BackColor = RGB(230, 230, 255)
        .ForeColor = RGB(0, 0, 0)
        .Font.Size = 8
    End With
 
With Worksheets("Sept")  'C'est là que ça se gâte !
    'DerL = .Range("A20").End(xlUp).Row
    Set Tbl = .Range("A2:AF19")
    For Each D In Tbl
        Couleurs(D.Row - 2, D.Column - 1) = D.Font.ColorIndex
        LN(D.Row - 2, D.Column - 1) = D.Value
    Next D
End With
 
With ListView1
    .ListItems.Clear
    For L = 0 To UBound(LN, 1)
        .ListItems.Add , , LN(L, 0)
        For c = 1 To UBound(LN, 2)
            .ListItems(.ListItems.Count).ListSubItems.Add , , LN(L, c)
            .ListItems(L + 1).ListSubItems(c).ForeColor = Coul(Couleurs(L, c))
        Next
    Next
End With
End Sub
Je suppose que l'on pourrait passer par une Function pour convertir, mais mes essais m'ont amené au message d'erreur : pile insuffisante.....
A suivre...
__________________
Cordialement,
Franck P.


Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...
pijaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 16h15   #11
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Euh...

Merci bcp pour ton code Frank !

Mais, la valeur de Couleurs(L, c) pour la première cellule est de -4105 et de ce fait, l'indice n'appartient pas à la sélection vu que ton tableau coul a une dimension de 56...
J'ai du louper quelque chose...

Sinon, oui, il y a des fonctions pour convertir les couleurs. J'ai jeté un oeil, j'essaie de comprendre...
Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 17h12   #12
Membre éprouvé
 
Homme Franck PRESSE
Inscription : août 2010
Messages : 202
Détails du profil
Informations personnelles :
Nom : Homme Franck PRESSE
Âge : 38
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : août 2010
Messages : 202
Points : 444
Points : 444
Excuse moi...

2 heures + 2 boîtes d'aspirine plus tard... Je me rends compte que j'ai utilisé Font.ColorIndex...
Au lieu de Font.Color!
Font.Color stocke la couleur RGB sous forme d'un entier Long, et donc fonctionne à la fois pour Font.Color et pour ForeColor...
Donc ton code (plus petit que le dernier) :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Private Sub UserForm_Initialize()
Dim Tbl As Range, D As Range
Dim LN(19, 33)
Dim Couleurs(19, 33)
Dim L As Integer, c As Integer
 
With ListView1
    With .ColumnHeaders
        ' Vider le listview
        .Clear
        'Ajouter les colonnes
        .Add , , "Prénom Nom", 100 ', lvwColumnCenter
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
        .Add , , " "
    End With
 
    .View = 3                   ' type Report
    .Gridlines = True           ' affichage de lignes
    .FullRowSelect = True       ' sélection complète de la ligne
    .HideColumnHeaders = False  ' afficher les en-têtes de colonnes
    .LabelEdit = 1              ' ne pas autoriser la saisie
    .BackColor = RGB(230, 230, 255)
    .ForeColor = RGB(0, 0, 0)
    .Font.Size = 8
End With
 
With Worksheets("Sept")  'C'est là que ça se gâte !
    Set Tbl = .Range("A2:AF19")
    For Each D In Tbl
        Couleurs(D.Row - 2, D.Column - 1) = D.Font.Color
        LN(D.Row - 2, D.Column - 1) = D.Value
    Next D
End With
 
With ListView1
    .ListItems.Clear
    For L = 0 To UBound(LN, 1)
        .ListItems.Add , , LN(L, 0)
        For c = 1 To UBound(LN, 2)
            .ListItems(.ListItems.Count).ListSubItems.Add , , LN(L, c)
            .ListItems(L + 1).ListSubItems(c).ForeColor = Couleurs(L, c)
        Next
    Next
End With
End Sub
1000 excuses pour le temps perdu à cause d'une bêtise...
__________________
Cordialement,
Franck P.


Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...
pijaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 08h54   #13
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Wow !!!

Merci bcp Tonton Francky !!!!

C'est presque ça ! Encore quelques réglages !
Je verrais ça demain

Bonne soirée

Non, en fait c'est carrément ça que je voulais !!!

Mille merci !!!
Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h48.


 
 
 
 
Partenaires

Hébergement Web