Macro mise en forme conditionnelle

  • Initiateur de la discussion Initiateur de la discussion boyz
  • 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 !

boyz

XLDnaute Nouveau
Bonjour bonjour,

Je suis face à une petite difficulté. Je souhaite réaliser une mise en forme conditionnelle via une macro. Je dispose en faite d'un tableau dans lequel via un formulaire j'ajoute des lignes et selon la ligne la mise en forme peut changer de plus elles ne sont pas réparties à intervalle régulier d'ou une macro.

Je souhaiterais pour mon exemple que lorsque la cellule A1 = "X" que la cellule se colore en rouge idem pour B1, C1.... J1.

J'ai tenté une macro mais je bloque à ligne 6 : Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=F9=""X""" et plus particulièrement sur le "F9". Je souhaiterais que cette valeur soit égale à ActiveCell.Offset(0,v) comme ça la valeur cible à laquelle doit être égale la mise en forme conditionnelle se déplace.

Pour finir lorsque j’exécute la macro pour i =0 ça marche mais pour i=1, il y un bug à la ligne : Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority avec le message suivant : :🙁 l'indice n'appartient pas à la selection. Si quelqu'un sait pourquoi je suis preneur.

Merci à vous.

Je vous joints au besoin mon fichier exemple

Code:
Sub Mise_en_forme()
'macro 2

Dim i, n&, v&

n = "0" 'nombre de colone avant le 1èere colone à mettre en forme

  For i = 0 To 10
  v = n + i
   Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=F9=""X"""
   ActiveCell.Offset(0, v).Select
   Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
   With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
   Next i
End Sub
 

Pièces jointes

Re : Macro mise en forme conditionnelle

Bonjour à tous
essaye ceci
Code:
Sub Test()

    Cells.FormatConditions.Delete
    Range("A1:J1").FormatConditions.Add Type:=xlTextString, String:="x", _
        TextOperator:=xlContains
    Range("A1:J1").FormatConditions(Range("A1:J1").FormatConditions.Count).SetFirstPriority
    With Range("A1:J1").FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
    End With
    Range("A1:J1").FormatConditions(1).StopIfTrue = False
End Sub
 
Re : Macro mise en forme conditionnelle

Bonjour,

Merci pour ta réponse en reprenant ta syntaxe, j'ai réussi à obtenir ce que je souhaitais

Voici le code pour ceux qui en auraient besoin :

Code:
Sub Test()
Dim i, n&, v&
  
  n = "0"
  For i = 0 To 10
  v = n + i
  ActiveCell.Offset(0, v).FormatConditions.Delete
 ActiveCell.Offset(0, v).FormatConditions.Add Type:=xlTextString, String:="x", _
        TextOperator:=xlContains
  ActiveCell.Offset(0, v).FormatConditions(ActiveCell.Offset(0, v).FormatConditions.Count).SetFirstPriority
    With ActiveCell.Offset(0, v).FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
    End With
   ActiveCell.Offset(0, v).FormatConditions(1).StopIfTrue = False
   Next i
End Sub
 
Dernière édition:
- 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

Discussions similaires

Réponses
25
Affichages
602
Réponses
9
Affichages
580
Réponses
2
Affichages
102
Réponses
6
Affichages
158
Réponses
5
Affichages
235
Retour