Changement de couleur conditionnel à
Bonjour Messieurs,
J'ai un fichier avec des formules indirect et j'aimerais que lorsqu'une valeur est affiché en J10 les couleurs des cellules de R10:S10 change. Grace à l'enregistreur de Macro j'ai réussi à avoir la formule suivante;
With Selection.Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 90
.Gradient.ColorStops.Clear
End With
With Selection.Interior.Gradient.ColorStops.Add(0)
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0.349009674367504
End With
With Selection.Interior.Gradient.ColorStops.Add(1)
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.349009674367504
End With
Range("R10:S10").Select
With Selection.Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 270
.Gradient.ColorStops.Clear
End With
With Selection.Interior.Gradient.ColorStops.Add(0)
.ThemeColor = xlThemeColorDark2
.TintAndShade = 0
End With
With Selection.Interior.Gradient.ColorStops.Add(1)
.ThemeColor = xlThemeColorDark2
.TintAndShade = -0.498031556138798
End With
Toutefois je n'arrive pas à faire en sorte que cela s'applique seulement lorsque ma valeur est vrai, j'ai essayé ceci;
If Range("J10=G120") Then
Pourriez-vous me donner un coup de main?
Merci d'avance et bonne journée
Bonjour,
Pour que le traitement soit effectué à la condition que J10 et G120 aient la même valeur :
If Range("J10") = Range("G120") Then
With Range("R10:S10")
With .Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 270
.Gradient.ColorStops.Clear
End With
With .Interior.Gradient.ColorStops.Add(0)
.ThemeColor = xlThemeColorDark2
.TintAndShade = 0
End With
With .Interior.Gradient.ColorStops.Add(1)
.ThemeColor = xlThemeColorDark2
.TintAndShade = -0.498031556138798
End With
End With
End IfA+
Bonsoir Frangy,
en réalité G120 n'est pas une cellule mais bien une valeur en J10. Si je comprends bien la formule que tu m'as fourni?
Merci beaucoup.
Non, la ligne de code
If Range("J10") = Range("G120") Then
compare les valeurs des cellules J10 et G120.
Si l'égalité est vérifiée, la mise en forme est réalisée.
A+
J10 est ma cellule et G120 est la valeur à traiter dans cette même cellule.
Merci
Je ne suis pas sûr de te comprendre
La condition est donc :
If Range("J10").value = "G120" Then
A+
Bonjour Frangy,
j'ai essayé et cela ne fonctionne malheureusement, je ne suis pas sur d'avoir la bonne entête de Sub...??? J'ai mis le fichier simplifié de mon projet pour aider un peu plus à la recherche de la solution.
Merci de ton aide c'est très apprécié
Effectivement, je comprends mieux avec le fichier.
Un essai ...
A+
Bonjour Frangy,
Un énorme Merci pour ton aide cela fonctionne à merveille voici la formule complète et final;
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$J$10" Then
If Target.Value = "G120" Then
With Range("R10:S10")
With .Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 270
.Gradient.ColorStops.Clear
End With
With .Interior.Gradient.ColorStops.Add(0)
.ThemeColor = xlThemeColorDark2
.TintAndShade = 0
End With
With .Interior.Gradient.ColorStops.Add(1)
.ThemeColor = xlThemeColorDark2
.TintAndShade = -0.498031556138798
End With
End With
End If
End If
If Target.Address = "$J$10" Then
If Target.Value = "G120" Then
With Range("R8:S8")
With .Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 90
.Gradient.ColorStops.Clear
End With
With .Interior.Gradient.ColorStops.Add(0)
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0.349009674367504
End With
With .Interior.Gradient.ColorStops.Add(1)
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.349009674367504
End With
End With
End If
End If
If Target.Address = "$J$10" Then
If Not Target.Value = "G120" Then
Range("R8:S9").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("R10:S10").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
End If
End Sub
Salut Frangy,
La formule fonctionne merveilleusement bien, maintenant je voulais rajouter une formule dans la séquence;
Range("P10").Select
With Selection.Validation
.Delete
[surligner].Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:= _
"=INDIRECT(""_""&C8&""_""&F10&""_""&H10&""_""&J10&""_""&SUBSTITUE(L10;""/"";"""")&""_""&SUBSTITUE(SUBSTITUE(N10;""/"";"""");"" "";""""))"[/surligner]
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Lorsque j'enregistre une macro cela fonction, mais lorsque je l'imbrique dans la formule entière que tu m'as fourni il m'affiche le débogueur automatiquement et highlighted
Je suis incapable de zipper le fichier suffisamment pour l'attacher a nouveau au courriel.
Merci beaucoup de ton aide encore Frangy.
Frangy j'ai réussi en créant de nouveau "Nom" comme ceci;
With Range("P10").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="[color=#FF0000]=Sécurité[/color]"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End WithToutefois si tu as une solution de la manière précédente j'apprécierai énormément
Cordialement.
Frangy j'ai réussi en créant de nouveau "Nom" comme ceci;
With Range("P10").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Sécurité"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End WithToutefois si tu as une solution de la manière précédente j'apprécierai énormément
Cordialement.
Bonjour,
Tu peux utiliser le code suivant :
Dim Texte As String
Texte = "_" & Range("C8") & "_" & Range("F10") & "_" & Range("H10") & "_" & Range("J10") & "_" & Replace(Range("L10"), "/", "") & "_" & Replace(Replace(Range("N10"), "/", ""), " ", "")
With Range("P10").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=" & Texte
End WithAttention toutefois à vérifier la présence du nom dans le gestionnaire de noms.
_Pompe_Discontinu_Simple_G120_1AC240V_16 n'existait pas dans ton exemple
A+
Bonjour Frangy,
Je viens à l'instant de faire le test et malheureusement cela ne fonctionne pas. Il m'affiche une erreur au niveau du .Add;
Range("P10").Select
Dim Texte As String
Texte = "_" & Range("C8") & "_" & Range("F10") & "_" & Range("H10") & "_" & Range("J10") & "_" & Replace(Range("L10"), "/", "") & "_" & Replace(Replace(Range("N10"), "/", ""), " ", "")
With Range("P10").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=" & Texte
End WithJe me suis assurer de faire une sélection pour être certain d'avoir un résultat avec mes "noms" créés
C'est étrange j'ai réussi à faire fonctionner la formule en enlevant le "e" de Texte dans la phrase Dim Text As String, maintenant j'essaie d'applique cette même formule sur la cellule Q10 et il m'indique une erreur sur cette même phrase, c'est complexe...
' Introduction des formule mathématique dans P10
Range("P10").Select
Dim Text As String
Texte = "_" & Range("C8") & "_" & Range("F10") & "_" & Range("H10") & "_" & Range("J10") & "_" & Replace(Range("L10"), "/", "") & "_" & Replace(Replace(Range("N10"), "/", ""), " ", "")
With Range("P10").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=" & Texte
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
' Introduction des formule mathématique dans Q10
Range("Q10").Select
Dim Texte As String
Texte = "_" & Range("C8") & "_" & Range("F10") & "_" & Range("H10") & "_" & Range("J10") & "_" & Replace(Range("L10"), "/", "") & "_" & Replace(Replace(Range("N10"), "/", ""), " ", "") & "_" & Range("P10")
With Range("Q10").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=" & Texte
End WithJe n'y comprends plus rien
J'ai trouvé, la raison était que 2 fois le même nom pour une même String...
Frangy encore un énorme merci de tout ton aide TRÈS TRÈS TRÈS apprécié.
Au plaisir d'avoir besoin de ton aide à nouveau