[RESOLU]VBA MFC boucle for

alexvol

XLDnaute Nouveau
Bonjour,

après moultes recherches, je me décide à demander de l'aide...

J'ai une colonne de données pour laquelle je souhaiterai créer une mise en forme conditionnelle : si valeur égale à 1, en bleu, si valeur égale à 2 en rouge par exemple. Sans vba, très simple via l'interface classique. Mais j'ai des variables :
-> le nombre de données peut varier ;
-> le nombre de mise en forme peut aussi varier (1 à 10-20....).
Pour la variation du nombre de données, j'ai utilisé :
Code:
ligne = brulage.Range("a65536").End(xlUp).Row
With brulage.Range("g3:h" & ligne)
end with
C'est pour gérer le nombre de mise en forme que je sèche. J'ai tenté ceci :
Code:
ligne = brulage.Range("a65536").End(xlUp).Row
For i = 1 To nbre
    With brulage.Range("g3:h" & ligne)
         .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=" & i
         .FormatConditions(1).Interior.ColorIndex = i
    End With
Next i
Sauf que rien ne se passe. Quand je vais consulter les mises en forme conditionnnelle, il n'y en a aucune. Par contre si je remplace la variable i par un chiffre, quel qu'il soit, et que je commente les lignes "for..." et ""next i", cela fonctionne.

Est ce que quelqu'un aurait une idée ?

Merci par avance
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : VBA MFC boucle for

Bonjour.
Manque peut être un .FormatConditions.Delete devant.
Ça ne sert à rien de changer Interior.Color de la première après en avoir ajouté une cinquantième où elle n'est pas fixée.
 

alexvol

XLDnaute Nouveau
Re : VBA MFC boucle for

J'ai ajouté :
Code:
brulage.Range("g3:h" & ligne).FormatConditions.Delete
Cela donne donc :
Code:
ligne = brulage.Range("a65536").End(xlUp).Row
brulage.Range("g3:h" & ligne).FormatConditions.Delete
For i = 1 To nbre
    With brulage.Range("g3:h" & ligne)
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=" & i
        .FormatConditions(1).Interior.ColorIndex = i
    End With
Next i
brulage étant le nom de la feuille.

Mais l'effet est toujours le même, aucune MFC.

Le but est bien pour chaque cellule de la plage d'avoir 1 à plusieurs MFC en fonction de sa valeur.
 

Dranreb

XLDnaute Barbatruc
Re : VBA MFC boucle for

En tout cas ce n'est sûrement pas .FormatConditions(1).Interior.ColorIndex = i
La méthode Add de la collection FormatConditions renvoie d'ailleurs l'objet FormatCondition qu'elle ajoute. Vous devriez pouvoir faire comme ça :
VB:
Dim Plage As Range
Set Plage = brulage.[G3:H3].Resize(brulage.[A65536].End(xlUp).Row - 2)
Plage.FormatConditions.Delete
For i = 1 To nbre
    Plage.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="=" & i).Interior.ColorIndex = i
    Next i
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas