Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Prb de couleur dans les cellules

  • Initiateur de la discussion Fred - Le Magnifique
  • Date de début
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.
 
B

Bernard

Guest
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
 
F

Fred - Le Magnifique

Guest
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
 
B

Bernard

Guest
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
 
C

CHti160

Guest
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
 
C

CHti160

Guest
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
 
B

Bernard

Guest
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
 
F

Fred - Le Magnifique

Guest
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.
 
B

Bernard

Guest
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
 
F

Fred - Le Magnifique

Guest
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).
 
J

jp

Guest
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 ;-)) ..
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…