Bonjour,
Après avoir chercher un peu partour sur le forum et avoir essayé un bout de code trouvé sur un autre post, je lance un sos...
J'ai un tableau avec des cellules qui contiennent des mises en forme conditionnelles. Si les cases ne sont pas complétées correctement la cellule est en orange (code 45). J'aimerai savoir si le test est ok ou non.
En gros, je voudrais tester à l'enregistrement du fichier qu'il ne reste aucune cellule orange, c'est à dire cellule obligatoire non remplis.
J'ai testé la fonction evaluate() avec le code suivant trouvé sur le forum mais je n'arrive pas à la faire fonctionner...
En fait je ne rentre jamais dans la condition "If MFCobj.Type = xlCellValue Then"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 Public Sub NbRouge() Dim Plage As Range Dim Cel As Range Dim Compteur As Long Set Plage = Range("B4:B7") For Each Cel In Plage If Cel.FormatConditions.Count > 0 Then If MFC(Cel) = 45 Then Compteur = Compteur + 1 End If End If Next Cel 'Adapter l'adresse Range("A2") = Compteur End Sub Private Function MFC(RG As Range) As Integer Dim e As Long, i As Byte, Test As Boolean Dim MFCobj As FormatCondition For i = 1 To RG.FormatConditions.Count Set MFCobj = RG.FormatConditions(i) If MFCobj.Type = xlCellValue Then Select Case MFCobj.Operator Case xlEqual Test = RG = Evaluate(MFCobj.Formula1) Case xlNotEqual Test = RG <> Evaluate(MFCobj.Formula1) Case xlGreater Test = RG > Evaluate(MFCobj.Formula1) Case xlGreaterEqual Test = RG >= Evaluate(MFCobj.Formula1) Case xlLess Test = RG < Evaluate(MFCobj.Formula1) Case xlLessEqual Test = RG <= Evaluate(MFCobj.Formula1) Case xlNotBetween Test = (RG < Evaluate(MFCobj.Formula1) Or RG > Evaluate(MFCobj.Formula2)) Case xlBetween Test = (RG >= Evaluate(MFCobj.Formula1)) And (RG <= Evaluate(MFCobj.Formula2)) End Select If Test Then MFC = MFCobj.Interior.ColorIndex Exit Function End If End If Next i MFC = 0 End Function Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) NbRouge End Sub
car MFCobj.Type = 1 et xlCellValue = 2
un exemple de mise en forme conditionnelle sur la première cellule testée :
=SI(B4="";VRAI)
Cette cellule est vide donc la condition est vérifiée.
J'espère avoir été suffisamment clair
Merci d'avance pour votre aide.
Partager