Compléter mise en forme...

D

domino

Guest
Bonjour à toutes et à tous,
je voudrai savoir ci quelqu'un pourrait m'indiquer comment complété une macro(que j'ai recopier, étant novice dans ce domaine)sur une mise en forme conditionnel qui me colore une colonne.Mon problème est que je voudrais que la cellule qui est a sa droite reproduise la même mise en forme(couleur).
Exemple:A1 devient "bleu", B1 devient "bleu" aussi.
A2 devient"vert"alors "B2"devient "vert" aussi et ainsi dessuite.
C'est à dire recopier la mise en forme de la colonne A sur la colonne B.J'ai vu que c'était pas trop complexe par la "mise en forme conditionnel'd'excel mais j'ai plus de trois conditions ce qui m'a obligé à passer par une macro.
Merci d'avance pour tous renseignement.
Salut à tous.
 
@

@+Thierry

Guest
Bonsoir Domino, le Forum

Attention, ce qui suit n'est uniquement valable si on parle bien d'une macro ayant colorée les cellules de la colonne "A", si c'est par un format conditionnel c'est totalement différent et il n'y a pas besoin de macro.

Cette mise au point étant faite, voici une petite macro qui va remettre sur la colonne "B" la même couleur d'intérieur de Cellule et de Police et aussi la même Police, la même taille de Police, et les même attributs Gras ou Italic que les cellules de la même ligne en colonne "A"

Sub ReportColorIndex()
Dim Cell As Range

For Each Cell In Range("A1:A100") ' à adapter
With Cell.Offset(0, 1)
.Interior.ColorIndex = Cell.Interior.ColorIndex
With .Font
.Name = Cell.Font.Name
.Size = Cell.Font.Size
.ColorIndex = Cell.Font.ColorIndex
.Bold = Cell.Font.Bold
.Italic = Cell.Font.Italic
End With
End With
Next
End Sub

Bonne Soirée
@+Thierry
 
D

domino

Guest
Salut Thierry,
un grand merci pour ta solution qui marche impeccable.Je n'avais besoin que de mettre en forme la couleur, mais en mettant les apostrophes sur les autres critères ça me permet de les désactiver tout en les gardant en option, si j'en avait besoin une prochaine fois.Encore une fois merci, et bravo au passage pour ce forum que j'ai découvert depuis peu mais qui mérite une exellente note.
Salut et a+.
 
D

domino

Guest
Re salut Thierry,
pourrait tu me donner une infos supplémentaire en ce qui concerne ta macro pour quelle soit mis a jour automatiquement.Lorsque je rentre mes valeurs dans la macro de la colonne "A"la mise en forme ce fait automatiquement, mais la tienne je doit effectuer une reinitialisation.Merci d'avance.
Salut et à +.
 
@

@+Thierry

Guest
Bonjour Domino, le Forum

Il aurait été judiscieux de poster le code de la macro qui colorie ta colonne "A" afin de synchroniser les deux colonnes dans la même procédure...

Là tel quel on pourrait faire ceci dans le Private Module de la Feuille en Question :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
ReportColorIndex 'Appel de la macro que je t'ai donnée hier soir
End If
End Sub

Sinon moins lourd :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
With Target.Offset(0, 1)
.Interior.ColorIndex = Cell.Interior.ColorIndex
End With
End If
End Sub

Je suppose que ta macro de colorisation se trouve déjà dans la même évènementielle auquel cas, inclut le With / End with dans la macro existante (VBA refusera d'avoir deux Worksheet_Change) en dessous de la partie du code où tu colorises avec "Interior.ColorIndex"... (L'idéal serait de faire la cellule de colonne d'à coté dans la foulée)

Bonne Journée
@+Thierry
 
D

domino

Guest
Bonjour Thierry, et à tous
Voilà le code de ma macro qui me colorise la colonne "C"("A"était pour l'exemple).

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C2:C99")) Is Nothing Then 'Plage à modifie

Select Case Target.Value
Case Is = 2
Target.Interior.ColorIndex = 36
Case Is = "3"
Target.Interior.ColorIndex = 35
Case Is = "4"
Target.Interior.ColorIndex = 34
Case Is = "5"
Target.Interior.ColorIndex = 40
Case Is = "6"
Target.Interior.ColorIndex = 24
Case Is = ""
Target.Interior.ColorIndex = 2
''''Ajoute autant de Case... que tu veux

End Select
End If
End Sub
+ Après la macro que tu m'as fais parvenir adapté à "C".
J'ai essayer les 2exemples vite fait mais lorsque je veux rentrer le "with" comme tu me l'indique une boite d'erreur apparait.
Merci pour ton aide qui m'est fort utile.
Salut et bonne journée.
 
@

@+Thierry

Guest
Bonsoir Domino, le Forum

Oui c'est bien mieux en voyant ta macro de base !

Donc voici la portion de code modifiée pour s'adapter à tes besoins :

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TargetAddress As String

 If Not Application.Intersect(Target, Range("C2:C99")) Is Nothing Then
  TargetAddress = Target.Address & ":" & Target.Offset(0, 1).Address

   Select Case Target.Value
   Case Is = 2
    Range(TargetAddress).Interior.ColorIndex = 36
   Case Is = 3
    Range(TargetAddress).Interior.ColorIndex = 35
   Case Is = 4
    Range(TargetAddress).Interior.ColorIndex = 34
   Case Is = 5
    Range(TargetAddress).Interior.ColorIndex = 40
   Case Is = 6
    Range(TargetAddress).Interior.ColorIndex = 24
   Case Is = ""
    Range(TargetAddress).Interior.ColorIndex = 2
   ''''Ajoute autant de Case... que tu veux
   Case Else
    Range(TargetAddress).Interior.ColorIndex = 1 'Black is Black !
   End Select
 End If
End Sub

Voilà ce devrait être au poil !

A noter que si tu as besoin de colorier jusqu'à (par exemple) la colonne "G" il te suffira de modifier ceci :

TargetAddress = Target.Address & ":" & Target.Offset(0, 4).Address

Bonne soirée
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 342
Membres
103 524
dernier inscrit
Smile1813