VBA couleur cellule

Bonjour,

J'ai le code ci-dessous mais il ne fonctionne pas :(

Je voudrais que le texte des cellules avec un fond gris soit violet. Sinon pour les autres fond de cellules je voudrais que le texte soit noir ...

Merci bcp pour votre aide !!!

Sub couleur()

If Range("C39:IT384").Interior.ColorIndex = 16 Then

Range("C39:IT384").Font.ColorIndex = 13

Else

Range("C39:IT384").Font.ColorIndex = 1

End If

End Sub

Salut,

tu ne peux pas tester d'un coup toutes les cellules il faut utiliser une boucle pour regarder chaque cellules une par une :)

A tester comme cela:

Sub couleur()

For Each cel In Range("C39:IT384")

If cel.Interior.ColorIndex = 16 Then

cel.Font.ColorIndex = 13

Else

cel.Font.ColorIndex = 1

End If

Next cel

End Sub

A+

Bonjour,

l'erreur vient du fait que vous faites le test sur la plage entière...
Il faut faire cellule par cellule. Une boucle Each qui permet de "tourner" sur une collection est ici adéquate et la collection sera la plage ciblée :

Application.ScreenUpDating = False
For Each Cel In Range("C9:IT384")
    If Cel.Interior.ColorIndex = 16 Then Cel.Font.ColorIndex = 13 Else Cel.Font.ColorIndex = 1
Next Cel
Application.ScreenUpDating = True

A vous de me dire... Application.ScreenUpDating = False permet d'accélérer le fonctionnement du code en arrêtant la mise à jour de l'écran. On le remet à l'issue afin de le faire, mais si c'est la fin de la sub alors il n'est pas utile de le faire car c'est remit en marche automatiquement.

@ bientôt

LouReeD

Pas assez rapide "mon vieux" ! Bonjour Gabin37 !

@ bientôt

LouReeD

Merci pour vos réponses !!! super rapide

Par contre ça ne fonctionne pas j'ai un message d'erreur "Variable non définie " pour cellule

Perso je n'ai pas utilisé cellule... Sinon vous pouvez ajouter : DIM Cel As Range en début de code.

@ bientôt

LouReeD

ça ne fonctionne pas. Tous les textes sont en noir alors que je voulais que les cellules grises soit en violet

N'écoutes pas ce vieux LouReed il perd la tête

Essayes plutôt en début de code

Dim cel As Object

A+

Sinon; vérifie que les cellules ont belle est bien le gris qui correspond à cel.Interior.ColorIndex = 16

3classeur1.xlsm (224.58 Ko)

merci mais les cellules grises sont en noir au lieu d'être en violet

même avec dim cel as object ça ne fonctionne pas ...

ça fonctionne merci bcp !!!!

Est-ce que c'est possible d'appliquer la macro pour tous les fichiers Excel ouvert et de la passer sur tous les onglets ?

merci bcp c'est une aide enorme

Bonsoir,

N'écoutes pas ce vieux LouReed il perd la tête

Essayes plutôt en début de code

Dim cel As Object

A+

la collection étant un Range, autant cibler le type de la variable en Range, non ? tout comme lorsque l'on fait une revue de collection des Sheets, on type la variable en Sheets. Dim Variable Object c'est globale... Alors dans ce cas autant laisser VBA gérer le type et mettre rien ou variant. Voir on supprime "Option Explicite" et on ne dimensionne pas les variables...

Pour ce qui est de la boucle sur les feuilles d'un classeur vous pouvez faire le même principe avec un objet de type Sheets :

Sub LRD()
    Dim Ws As Sheets, Cel As Range
    Application.ScreenUpdating = False
    For Each Ws In ActiveWorkbook.Sheets
        For Each Cel In Ws.Range("C9:IT384")
            If Cel.Interior.ColorIndex = 16 Then Cel.Font.ColorIndex = 13 Else Cel.Font.ColorIndex = 1
        Next Cel
    Next Ws
    Application.ScreenUpdating = True
End Sub

J'ai pas essayé mais à la lecture cela semble fonctionner, peut-être y a t il besoin de sélectionner la feuille...

@ bientôt

LouReeD

Super merci beaucoup ça fonctionne !

@ bientôt

LouReeD

Rechercher des sujets similaires à "vba couleur"