Mise en forme conditionnelle sur plage variable

Hello tout le monde,

Avant toute chose, je précise que je ne suis pas un expert VBA, j'y touche pour la première fois pour un petit projet perso.

Faisant du JDR, le but de mon classeur excel est de me simplifier la tache quand il s'agit de gérer un grand nombre d'ennemis.

Ainsi, dans la 1ère feuille, via un bouton, je peux générer 2 tableaux dont le nombre de ligne dépend d'un paramètre.

Mon soucis est au niveau du 2ème tableau qui me permet de saisir les dégâts subis et qui gère un calcul automatique du nombre de points de vie restant pour chaque ligne.

Ce que je souhaiterai faire, c'est ajouter une mise en forme conditionnelle pour afficher toute la ligne en rouge dès que ma colonne "PV restant" est à 0. Le problème c'est que la 1ère ligne de mon tableau est variable

Mon code générant les lignes est le suivant :

Sub insererEnnemis()

Dim v As Integer, i As Integer

On Error GoTo gestion_erreur

'ActiveWorkbook.Worksheets("Actions").Unprotect

'Récupération des paramètres'
Sheets("Param").Select
nbEnnemies = Cells(2, 1)
typeEnnemie = Range("D2")
pvMax = Range("G2")

'Affichage tableau attaque'

'Affichage nom'
Sheets("Actions").Select
Cells(4, 1).Select
ActiveCell.FormulaR1C1 = "Résultat"
ActiveCell.FormulaR1C1 = "Nom"
ModuleApparence.affichageTitres

ligneEnCours = 5
For i = 1 To nbEnnemies
    Sheets("Actions").Select
    'Nom ennemi'
    Cells(ligneEnCours, 1) = typeEnnemie & "_" & i
    'Le numéro est augmenté de 1 à chaque boucle'
    ligneEnCours = ligneEnCours + 1
Next i

Sheets("Actions").Select
Range(Cells(5, 1), Cells(5 + nbEnnemies - 1, 1)).Select
ModuleApparence.affichageEnnemies

'Affichage tableau vie'
ligneEnCours = 5 + nbEnnemies + 2
For i = 1 To nbEnnemies
    'Nom ennemi'
    Cells(ligneEnCours, 1) = typeEnnemie & "_" & i
    Cells(ligneEnCours, 2) = pvMax

    'Ajout de la formule de calcul des PV restants'
    Cells(ligneEnCours, 3).Select
    ActiveCell.FormulaR1C1 = _
        "=RC[-1]-(RC[1]+RC[2]+RC[3]+RC[4]+RC[5]+RC[6]+RC[7]+RC[8]+RC[9]+RC[10]+RC[11]+RC[12]+RC[13]+RC[14]+RC[15])"

    With ActiveCell.FormulaR1C1
     .FormatConditions.Delete
     .FormatConditions.Add Type:=xlExpression, Formula:="=RC=0"
     .FormatConditions.Interior.ColorIndex = 46
     End With

    'Le numéro est augmenté de 1 à chaque boucle'
    ligneEnCours = ligneEnCours + 1
Next i

'affichage titre vie/vie restante'
Cells(5 + nbEnnemies + 1, 2) = "PV"
Cells(5 + nbEnnemies + 1, 3) = "PV restant"
Range(Cells(5 + nbEnnemies + 1, 4), Cells(5 + nbEnnemies + 1, 15)).Select
Selection.Merge

Cells(5 + nbEnnemies + 1, 4) = "Degats"

Range(Cells(5 + nbEnnemies + 1, 2), Cells(5 + nbEnnemies + 1, 4)).Select
ModuleApparence.affichageEnnemies

'Affichage liste ennemie pour tableau vie'
Range(Cells(5 + nbEnnemies + 2, 1), Cells(5 + nbEnnemies + 2 + nbEnnemies - 1, 1)).Select
ModuleApparence.affichageEnnemies

Range(Cells(5 + nbEnnemies + 2, 2), Cells(5 + nbEnnemies + nbEnnemies + 1, 15)).Select
ModuleApparence.grilleCentre

'ActiveWorkbook.Worksheets("Actions").Protect

Cells(1, 1).Select

gestion_erreur:
Exit Sub
' En cas d'erreur on sort de la fonction

End Sub

Mais manifestement mon "With ActiveCell.FormulaR1C1" ne fonctionne pas. (pire, il bloque la génération des lignes)

Quelqu'un saurait'il comment appliquer une mise en forme conditionnelle sur une plage variable de cellules ?

Dans mon cas ça n'est qu'un détail cosmétique mais j'aimerais vraiment savoir comment on peut faire.

Pour ceux que ça intéresse, je vous joint mon fichier.

Merci d'avance pour vos réponses

14gestionhorde.xlsm (52.33 Ko)

bonjour

essaie ceci

 With ActiveCell
     .FormatConditions.Delete
     .FormatConditions.Add Type:=xlExpression, Formula:="=RC=0"
     .FormatConditions.Interior.ColorIndex = 46
 End With

Malheureusement ça ne fonctionne pas

Le "Formula:=" n'est pas reconnu (argument nommé introuvable)

re-bonjour,

essaie formula1

Cela ne fonctionne pas non plus. Avec "Formula1" j'ai le même soucis (à priori) qu'au départ : pas d'erreur de compile mais la génération de ligne se bloque dès la première

bonjour,

reçois-tu un message d'erreur ? lequel ? que veux-tu tester avec =rc=0 ? si tu n'as pas défini RC cette formule n'est pas valide.

Rechercher des sujets similaires à "mise forme conditionnelle plage variable"