Format conditionnel d'une colonne appartenant à une cellule détectée
Bonjour,
Sous VBA, je recherche un moyen de réaliser un format conditionnel de plusieurs colonnes contenant sur une ligne donnée un texte précis.
Dans l'illustration, par exemple, toute colonne ayant le texte "toto 4" dans la ligne 7 aura pour condiction fonctionnelle "couleur x".
J'arrive à réaliser quelques fonctions sur VBA mais pas à mixer l'ensemble de ces codes.
Edit :
Voici le code que je n'arrive pas à débugger.
Private Sub Worksheet_Activate()
Dim Cel As Range
Dim db As Databar
Set db = Cel.Columns.FormatConditions.AddDatabar
With db
For Each Cel In Range("A4:CC4")
If Cel.Value = "Delta" Then
.BarColor.Color = vbGreen
.BarFillType = xlDataBarFillGradient
.BarBorder.Type = xlDataBarBorderSolid
.BarBorder.Color.Color = vbGreen
.AxisPosition = xlDataBarAxisAutomatic
.AxisColor.Color = vbRed
With .NegativeBarFormat
.ColorType = xlDataBarColor
.Color.Color = vbRed
.BorderColorType = xlDataBarColor
.BorderColor.Color = vbRed
End With
End If
Next Cel
End With
End Sub
En vous remerciant par avance,
Bonjour,
Je m'excuse par avance de relancer le sujet sans réponse datant du 17 avril. Je pense que je ne suis pas très loin du bon code mais je n'ai pas trouvé ce qui bloque. C'est dans le cadre d'un fichier de travail.
Merci à vous,
A défaut d'avoir une réponse, même une idée d'orientation, je vous laisse tout de même une solution alternative si jamais vous tombez dans ce même cas :
- Renommer les colonnes concernées (exemple Colonne AM1 = Deltat1, Colonne BD1 = Delta2, etc.)
- Intégrer le code VBA en incluant les noms des colonnes au lieu d'une plage classique
Exemple :
Private Sub Worksheet_Activate()
Dim rg As Range
Dim db As Databar
'rename 2 targeted columns by "Delta1" and "Delta2"
Set rg = Range("Delta1,Delta2")
Set db = rg.FormatConditions.AddDatabar
With db
'positive bar formatted with green gradient & green border
.BarColor.Color = vbGreen
.BarFillType = xlDataBarFillGradient
.BarBorder.Type = xlDataBarBorderSolid
.BarBorder.Color.Color = vbGreen
'the axis positioned automatically and coloured red
.AxisPosition = xlDataBarAxisAutomatic
.AxisColor.Color = vbRed
'the negative bar formatted with a red gradient and red border
With .NegativeBarFormat
.ColorType = xlDataBarColor
.Color.Color = vbRed
.BorderColorType = xlDataBarColor
.BorderColor.Color = vbRed
End With
End With
End Sub
Cet exemple compare un format conditionnel de type "Data Bars" rouge/vert sur l'ensemble des valeurs des 2 colonnes renommées Delta1 et Delta 2.
L'avantage : Si vous ajouter/supprimer des colonnes avant celles-ci, ça n'impacte pas le ciblage des colonnes.
Au moins, si ça peut servire à quelqu'un....