problème avec VBA et les codes couleurs

Adrienne56

XLDnaute Nouveau
Bonjour à tous,
J'ai un problème avec une macro excel : je dois calculer le nombre de cellules écrites en rouge (ce qui signifie que l'objectif n'est pas atteint) mais certaines cellules viennent d'une autre source, ce qui fait que la valeur de la couleur n'est pas "3" (rouge) mais -4105 qui signifie "automatique". Or, le noir, le bleu, le vert peuvent également être codés à -4105 si leur couleur est automatique. Coment différencier dans mon code, les couleurs réellement rouges ?
j'ai essayé en marquant tout bonnement "rouge" mais ça ne marche pas...

je précise que j'utilise "Cel.Font.ColorIndex" en déclarant cel comme "Dim Cel As Range"

donc la propriété que j'utilise est Font.ColorIndex (je balaie toute les cellule d'une plage...)
Merci par avance...
 

Catrice

XLDnaute Barbatruc
Re : problème avec VBA et les codes couleurs

Bonjour,

utilise plutot :
Cel.Font.Color

ColorIndex peut varier suivant les parametres personalisés
alors que Color renvoie la couleur RGB de la police.

Regarde également les fontions : QBColor et RGB
 
Dernière édition:

Adrienne56

XLDnaute Nouveau
Re : problème avec VBA et les codes couleurs

Bonjour,

utilise plutot :
Cel.Font.Color

ColorIndex peut varier suivant les parametres personalisés
alors que Color renvoie la couleur RGB de la police.

Regarde également les fontions : QBColor et RGB

je viens d'essayer, mais ça ne marche pas.

alors voilà le code que je viens de mettre, en modifiant donc "Color.Index" par "Color"
:

For Each Cel In Plage
If Cel.Value <> "" And Cel.Value <> "A" And Cel.Value <> "S" And Cel.Value <> "T" And Cel.Font.Color <> 3 Then
n3 = n3 + 1
End If
Next

merci encore
 
Dernière édition:

Catrice

XLDnaute Barbatruc
Re : problème avec VBA et les codes couleurs

Re,

As-tu regardé les fonctions dont j'ai parlé précédement ?...
Le Code 3 que tu testes est il bien le code de la couleur souhaitée ?

Les codes pour ColorIndex et Color sont différents ...
Pour le rouge par exemple Color = 255

La Macro "TrouveCode" te donne le code de la couleur (Color) de la police de la cellule active.

Voir l'exemple dans le fichier joint.
 

Pièces jointes

  • Classeur1.xls
    24.5 KB · Affichages: 120
  • Classeur1.xls
    24.5 KB · Affichages: 123
  • Classeur1.xls
    24.5 KB · Affichages: 110
Dernière édition:

Adrienne56

XLDnaute Nouveau
Re : problème avec VBA et les codes couleurs

Bonjour Adrienne, bienvenue sur XLD,

Pas claire votre affaire.

Un fichier joint montrant bien ce que vous voulez sera le bienvenu.

A+

En fait, mes données viennent de fichiers extérieurs. Lorsque je clique sur la propriété d'une cellule écrite en rouge, j'ai "couleur automatique", donc lorsque je recherche le code de la couleur, qui devrait être 3, j'ai -4105. même si je modifie la couleur via le format de cellule, elle reste colorée en rouge. (ce qui est très bien !) mais le code est celui du format de cellule...

Je crois que je ne suis pas très claire... :confused:
 

Adrienne56

XLDnaute Nouveau
Re : problème avec VBA et les codes couleurs

Re,

As-tu regardé les fonctions dont j'ai parlé précédement ?...
Le Code 3 que tu testes est il bien le code de la couleur souhaitée ?

Les codes pour ColorIndex et Color sont différents ...
Pour le rouge par exemple Color = 255

La Macro "TrouveCode" te donne le code de la couleur (Color) de la police de la cellule active.

Voir l'exemple dans le fichier joint.


j'ai essayé, je ne trouve que les cellules dont les propriétés de couleurs sont réellement définies en rouge, mais pas celles qui viennent "d'ailleurs" et qui sont bloquées sur la couleur rouge tout en indiquant une couleur "automatique"... (format de cellule ? des chiffres en dessous de zéro ?)
 

Adrienne56

XLDnaute Nouveau
Re : problème avec VBA et les codes couleurs

En fait, la cellule a été définie dans le format de cellule comme devant être écrite en rouge, sans tiret, si elle était inférieure à zéro. Ce qui me donne une cellule écrite en rouge tout à fait normale, sauf que la couleur est en "automatique"... et apparait en rouge...
 

Catrice

XLDnaute Barbatruc
Re : problème avec VBA et les codes couleurs

Re,

J'ai modifié mon fichier précédement posté pour peut etre mieux comprendre.
Il ajoute la valeur Color et ColorIndex en fonction des cellules scannées.
On voit que Color renvoie la valeur RGB de 0 à 16581375 (normalement) et ColorIndex un index de 1 à ~ 50 qui correspond à un index de ce qui est definit dans Outils/Options/Couleur et qui peut donc varier suivant les machines.
Toi, il faut que tu testes Color, c'est plus sur.
Mais il y a peut etre des nuances de rouges dans tes fichiers :D
 

Catrice

XLDnaute Barbatruc
Re : problème avec VBA et les codes couleurs

Aaaahhhhhh !

Ben c'est pas la couleur qu'il faut tester alors !
Mais la valeur !!
Si elle est supérieure à zero => action :)


For Each Cel In Plage
If Cel.Value <> "" And Cel.Value <> "A" And Cel.Value <> "S" And Cel.Value <> "T" And Cel > 0 Then
n3 = n3 + 1
End If
Next
 
Dernière édition:

Adrienne56

XLDnaute Nouveau
Re : problème avec VBA et les codes couleurs

non, en fait, ce n'est même pas ça... je suis décue.
Ces données viennent de l'extérieur, et même si on demande une couleur verte, marron ou n'importe quoi d'autre, elles restent colorées en rouge et gardent la valeur "couleur automatique. Je peux t'envoyer un bout de fichier avec ces fameuses cellules ? tu cliques, et tu vois qu'elles sont impossibles à changer...
 

Adrienne56

XLDnaute Nouveau
Re : problème avec VBA et les codes couleurs

voilà, les deux derniers chiffres (53.25 et 42.25) ont été rajoutés par moi et ont réellement la couleur rouge... mais les autres...
 

Pièces jointes

  • exemple de couleurs.xls
    16 KB · Affichages: 98

Catrice

XLDnaute Barbatruc
Re : problème avec VBA et les codes couleurs

Re,

C'est presque la meme chose.
C'est une mise en forme conditionnelle.
il faut tester :
For Each Cel In Plage
If Cel.Value <> "" And Cel.Value <> "A" And Cel.Value <> "S" And Cel.Value <> "T" And Cel > 75 Then
n3 = n3 + 1
End If
Next

On peut recupérer les informations de MFC par Macro mais ce n'est pas tres simple à decoder :
Sub Test2()
For Each X In Selection.FormatConditions
If X.Font.ColorIndex = 3 Then MsgBox X.Formula1 & " / " & X.Operator
Next
End Sub
 
Dernière édition:

Statistiques des forums

Discussions
312 220
Messages
2 086 376
Membres
103 198
dernier inscrit
CACCIATORE