Prb de couleur dans les cellules

  • Initiateur de la discussion Initiateur de la discussion Fred - Le Magnifique
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

Fred - Le Magnifique

Guest
Voila, j'ai enfin réussi à colorier mes cellule celon le texte que je tape dedans (Merci Jean-Marie).
Mon prb est que si je deside d'éffacé le contenu de la cellule, celle-ci reste de cette dernière couleur - comment faire pour q'elle reprenne la couleur par défaut ?

Merci.
 
Bonsoir Fred - Le Magnifique

Il suffit de monter une condition qui si elle n'est pas vrai remet le couleur de fond;

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [A1] = 5 Then
[A1].Interior.ColorIndex = 3
Else
[A1].Interior.ColorIndex = xlnone
End If
End Sub

cordialement

Bernard
 
desoler Bernard, mais je ne compred pas "monter une condition" ? Que veus-tu dire par la ?
J'ai copié tes lignes de commandes, mais cela ne fonctionne pas.
En fait quand je saisie du texte, ca me supprime mes couleurs mais reste bien comme le fond.

Merci
 
Re

C'est vrai que mon exemple n'est pas très parlant par le fait qu'il n'est qu'un exemple qui marche avec le chiffre 5.

La condition vrai : Si la cellule A1 contient 5 alors la mettre en rouge ;
La condition fausse : Si la cellule A1 ne contient pas 5 alors mettre la couleur de fond.

A+

Bernard
 
Salut à tous
je tente via le numero de la ligne decolorer si paire gris cleir
si impair gris foncé mais je ne sais pas faire via Cell.Row le test mais bon ça va venir la question est posée sur le"FORUM" il faut maintenant être patient
A+++
Jean Marie
 
re salut « à tous »
cà y est !!!!!!!!!!!!!!!!!!!!!!!J’ai trouvé
tu rajoutes dans la procédure
Private Sub Worksheet_Change(ByVal Target As Range)

For Each cell In Worksheets("Saisie").Range("maplage")
Select Case cell.Row Mod 2'<----------------------
Case Is = 0
cell.Interior.ColorIndex = 8
Case Is <> 0
cell.Interior.ColorIndex = 7
End Select
'<-----------------------
Select Case cell.Value
est cela te remet la couleur d'origine
A+++
Jean Marie
 
Re

Une variante à la macro de Chti160 qui suit la logique de ma seconde intervention :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
Dim Myplage As Range
Set Myplage = Sheets("Saisie").Range("A1:A20")
For Each cell In Myplage
If cell = "" Then
cell.Interior.ColorIndex = 0
Else
If cell.Row Mod 2 = 0 Then cell.Interior.ColorIndex = 8
If cell.Row Mod 2 <> 0 Then cell.Interior.ColorIndex = 7
End If
Next cell
End Sub

A+

Bernard
 
Désoler, mais je n'y arrive pas

Voila mon code, j'ai insérer le code de J-M, mais ca ne marche pas, et je n'y comprends encore moins qu'avant.

Je vous met le code, si quelqu'un a un peu de temps pour regarder ou je dois insérer le code.

_____________________________________________________________

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
Dim maplage As Range
Application.ScreenUpdating = False
If Intersect(Target, Range("Journees")) Is Nothing Then Exit Sub
For Each cell In Worksheets("Saisie").Range("Journees")
Select Case cell.Value
Case Is = "CP-1"
cell.Interior.ColorIndex = 4 '<---numéro de la couleur
Case Is = "CP"
cell.Interior.ColorIndex = 40
Case Is = "ARTT-1"
With cell.Interior
.ColorIndex = 27
'.Pattern = xlLightUp'<---------------là pour le motif
'.PatternColorIndex = 1<--------------là pour le motif
End With
Case Is = "ARTT"
cell.Interior.ColorIndex = 33
Case Is = "Anc"
cell.Interior.ColorIndex = 9 '----
Case Is = "CET"
cell.Interior.ColorIndex = 44
Case Is = "NON"
cell.Interior.ColorIndex = 10
Case Is = "Récup"
With cell.Interior
.ColorIndex = 16
.Pattern = xlLightUp '<-----idem
.PatternColorIndex = 1 '<----- idem
End With
Case Is = "Maladie"
cell.Interior.ColorIndex = 39
Case Is = "Férié"
cell.Interior.ColorIndex = 46
Case Is = "Formation"
With cell.Interior
.ColorIndex = 27
.Pattern = xlLightUp '<------idem
.PatternColorIndex = 1 '<------idem
End With
Case Is = "Inventaire"
cell.Interior.ColorIndex = 23
Case Is = "Admin"
cell.Interior.ColorIndex = 36
End Select
Next
Application.ScreenUpdating = True
End Sub

________________________________________________________________

Merci.
 
Bonsoir Fred - Le Magnifique

J'ai repris ta macro complètement. J'espère que cela te conviendra ?

Je voudrais te dire mais je pense que tu t'en ais aperçu de par toi même, en informatique deux règles : de la patience et de la patience !

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Maplage As Range
Dim Cell As Range
Dim CI As Byte
Application.ScreenUpdating = False
Set Maplage = Sheets("Saisie").Range("Journees")
If Not Intersect(Target, Maplage) Is Nothing Then
For Each Cell In Maplage
Select Case Cell
Case "CP-1": CI = 4
Case "CP": CI = 40
Case "ARTT-1": CI = 27
Case "ARTT": CI = 33
Case "Anc": CI = 9
Case "CET": CI = 44
Case "NON": CI = 10
Case "Récup": CI = 16
Case "Maladie": CI = 39
Case "Férié": CI = 46
Case "Formation": CI = 27
Case "Inventaire": CI = 23
Case "Admin": CI = 36
Case "": CI = 0
End Select
With Cell.Interior
.ColorIndex = CI
End With
Next Cell
End If
Application.ScreenUpdating = True
End Sub


Cordialement

Bernard
 
Merci de vos réponses... Merci Bernard pour cette dernière.

(1) Ca y'est, ca marche, je sais ca à été un peu facile de mettre le code sur le forum, mais en fait je ne comprend pas grand chose au VBA et surtout à Excel.

(2) Un tout petit probleme avec le code de Bernard, ca marche tres bien avec une couleur de fond uniforme, mais ma mise en page contient des nuances de deux couleurs uneligne sur deux.
Mais je m'en arrangerais.

Merci encore à tous (merci Bernard et Jean-Marie).
 
Bonjour , apres qq heures sur vb ... je lache ...

Voila je voudrais suivant l'exemple plus haut ..
1 detecter la couleurs de la case ... et appliquer une couleur de fonte ...

mais sa marcha pas mon truc :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Maplage As Range
Dim Cell As Range
Dim CI As Byte
Application.ScreenUpdating = False


Set Maplage = Sheets("Fabrication").Range("F1:F60")
If Not Intersect(Target, Maplage) Is Nothing Then
For Each Cell In Maplage
Select Case Cell
Case Cell.Interior.ColorIndex = 5: CI = 5
End Select
With Cell.Font
.ColorIndex = CI
End With
Next Cell
End If
Application.ScreenUpdating = True
End Sub

si qq pouvait eclairer ma lanterne ;-)) ..
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour