[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:

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
 

Discussions similaires

Réponses
12
Affichages
537

Statistiques des forums

Discussions
311 740
Messages
2 082 049
Membres
101 882
dernier inscrit
XaK_