Aide Macro

Bonjour,

J'aurai besoins de votre Aide

En effet en premier lieu j'ai crée une Macro Colorisation des 0 que j'ai voulu etre tres rapide car habituellement

je travail sur une plage A1:ZZ20000

Aujourd'hui je voudrai remettre à transparent les fond bleue avec une autre Macro (code 42) mais oh surprise ma premiere macro

donne l'illusion que c'est un 42 mais s'en en est pas. j'ai voulu en savoir plus et il me remonte -4142 ?

Cordialement

5col.zip (13.63 Ko)

Bonjour,

Si tu posais les bonnes questions dès le départ...

1) Réécriture proprement de ta première procédure :

Sub S0()
    With ActiveSheet.Range("A1:K20").FormatConditions
        .Delete
        .Add(xlExpression, , "=A1=0").Interior.Color = RGB(83, 141, 213)
    End With
End Sub

et en supprimant ce qui était inutile...

(NB- Si j'interviens sur un fichier, je fais disparaître tout Select et consorts, indices de mauvais code ! )

2) La procédure inverse :

Sub RetraitFond()
    ActiveSheet.Range("A1:K20").FormatConditions.Delete
End Sub

Commentaires :

1) Etant donné que ta couleur résulte d'une MFC, l'ôter passe par la suppression de la MFC...

2) Si tu avais à détecter une couleur résultant de MFC, ce ne peut être par ...Interior.Color, mais par ...DisplayFormat.Interior.Color. Cependant tu ne pourrais la supprimer car ce n'est pas la couleur de la cellule ! Il faut agir à la source (MFC)...

3) Tu fais un mélange des genres de mauvais aloi avec l'utilisation simultanée de Color, et sous la forme de thèmes de couleur, d'une part, et ColorIndex !

Sans reprendre la théorie des couleurs, ton fichier étant xls, s'il doit être ouvert habituellement sur Excel 2003, il faut privilégier ColorIndex pour avoir une certitude sur les couleurs affichées. Jusqu'à cette version Excel ne peut afficher que les 56 couleurs de la palette (et n'en affiche pas d'autre...)

Si tu utilises ton fichier habituellement sur Excel 2007 ou supérieur, il faut privilégier Color, Excel affiche désormais toutes les couleurs... Le maintien en xls ne se justifie alors que pour une ouverture occasionnelle sur Excel 2003.

L'usage de l'enregistreur pour affecter des couleurs fait que selon que la couleur que tu utilises est liée à un thème ou non il te l'enregistrera avec ThemeColor + TintAndShade, et autres propriétés par défaut inutiles ou par le code couleur. ThemeColor ne fournit aucune nouvelle couleur, c'est une façon de les regrouper et d'y accéder. Comme personne n'utilise (sauf exception rare) de façon systématique des thèmes de couleur, la bonne solution est de la définir par la fonction RGB qui à partir des composantes rouge, vert, bleu renvoie le code de la couleur. Lorsqu'on choisit une couleur, il est facile d'aller consulter la valeur de ces composantes et d'utiliser RGB pour la définir. On y gagne en facilité d'emploi, homogénéité de définition et volume de code !

Cordialement.

9barachoie-col.zip (17.04 Ko)

Merci infiniment Mferrand pour ta patiente et tes explications

Ma Macro initial est plus complète que la recherche de 0 car en réalité il cherche des chaines de caractères

générés par un code erreur système Equipements Chaine de fabrication Aléatoires car de génération ou Equipementier

Multi National divers donc j'aurai jamais le même code erreur.

est-il possible d'adapter mon premier code pour qu'il mette 42 lors du MFC

ou sinon sur le deuxieme code de dire que si fond de celule plage donné est bleue42 alors mettre tranparent

Cordialement

Tu ne comprends pas ou c'est moi ! Le fichier que tu as fourni contenait une mise en place de MFC procédure que j'ai allégée et aussi adaptée au fichier fourni. Si les cellules contiennent autre chose mets cette autre chose dans ton fichier modèle, qu'on y voit clair.

Et d'autre part s'agissant d'une MFC, on ne peut faire disparaître la couleur en la changeant, on la fait disparaître en supprimant la MFC !

Je ne comprends pas en outre le rapport avec 42 ? La couleur de la palette qui y correspond n'a rien à voir avec le bleu que tu as choisi, d'ailleurs sa valeur RGB est (51, 204, 204) alors que ta couleur répond à la valeur RGB (83, 141, 213), la première est un turquoise, l'autre un bleu moyen.

Mais je le répète, la définition de la couleur ou sa reconnaissance ne sert à rien puisqu'il s'agit d'une MFC !

Cordialement.

Rechercher des sujets similaires à "aide macro"