Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

vérifier si MEFC appliqué sur feuille

17 réponses
Avatar
ThierryK
Bonjour à toutes & à tous
et tous mes voux de santé, bonheur et prospérité pour cette nouvelle année

sur une feuille, j'ai de nombreuses Mise En Forme Conditionnelles (MEFC)
pour contrôler les erreurs:

exemple: MEFC pour les 2 cellules A1 & B1:
si A1<>B1 alors Format texte en gras et motif rouge

en théorie s'il n'y a pas d'erreur sur ma feuille, aucune MEFC ne devrait
s'appliquer.

mais comment vérifier qu'aucune MEFC n'est appliqué sur toute ma feuille?

en vous remerciant d'avance pour votre aide et vos conseils

ThierryK

Windows XP Pro SP3
Office 2003

10 réponses

1 2
Avatar
Corona
Bonjour,
Edition/Atteindre (ou F5) cliquer sur Cellules.... et sélectionner
ensuite formats conditionnels
Philippe Tulliez

ThierryK a écrit :
Bonjour à toutes & à tous
et tous mes voux de santé, bonheur et prospérité pour cette nouvelle année

sur une feuille, j'ai de nombreuses Mise En Forme Conditionnelles (MEFC)
pour contrôler les erreurs:

exemple: MEFC pour les 2 cellules A1 & B1:
si A1<>B1 alors Format texte en gras et motif rouge

en théorie s'il n'y a pas d'erreur sur ma feuille, aucune MEFC ne
devrait s'appliquer.

mais comment vérifier qu'aucune MEFC n'est appliqué sur toute ma feuille?

en vous remerciant d'avance pour votre aide et vos conseils

ThierryK

Windows XP Pro SP3
Office 2003


Avatar
Corona
Désolé, j'ai mal lu la question. Ma réponse ne correspond pas à ce que
tu cherches.
Philippe

ThierryK a écrit :
Bonjour à toutes & à tous
et tous mes voux de santé, bonheur et prospérité pour cette nouvelle année

sur une feuille, j'ai de nombreuses Mise En Forme Conditionnelles (MEFC)
pour contrôler les erreurs:

exemple: MEFC pour les 2 cellules A1 & B1:
si A1<>B1 alors Format texte en gras et motif rouge

en théorie s'il n'y a pas d'erreur sur ma feuille, aucune MEFC ne
devrait s'appliquer.

mais comment vérifier qu'aucune MEFC n'est appliqué sur toute ma feuille?

en vous remerciant d'avance pour votre aide et vos conseils

ThierryK

Windows XP Pro SP3
Office 2003


Avatar
ThierryK
J'ai oublié de préciser que je souhaite vérifier en VBA

@+
cordialement

en vous remerciant d'avance pour votre aide et vos conseils

ThierryK

Windows XP Pro SP3
Office 2003 & 2007
Avatar
michdenis
Bonjour,

Dans ta question, tu ne définis pas ce que tu as défini
comme erreur dans tes mises en formes conditionnelles.

Ce qui suit devrait te donner le nombre d'erreurs contenues
dans la feuil1

Pour Excel, il y en a 6 types ...
#DIV/0! #N/A #NOM ? #NUL! #VALEUR!
#NOMBRE #REF!

Ce qui suit s'applique à toutes les erreurs sans
discrimination du type
'-----------------------------------
Sub test()
Dim A As Long, B As Long
Dim X As Range
On Error Resume Next
With worksheets("Feuil1").UsedRange
A = .SpecialCells(xlCellTypeFormulas, xlErrors).Cells.Count
B = .SpecialCells(xlCellTypeConstants, xlErrors).Cells.Count
End With
If A + B = 0 Then
MsgBox "Aucune erreur dans la plage"
Else
MsgBox A + B & " erreurs dénotées"
End If
End Sub
'-----------------------------------



"ThierryK" a écrit dans le message de groupe de discussion
:
Bonjour à toutes & à tous
et tous mes voux de santé, bonheur et prospérité pour cette nouvelle année

sur une feuille, j'ai de nombreuses Mise En Forme Conditionnelles (MEFC)
pour contrôler les erreurs:

exemple: MEFC pour les 2 cellules A1 & B1:
si A1<>B1 alors Format texte en gras et motif rouge

en théorie s'il n'y a pas d'erreur sur ma feuille, aucune MEFC ne devrait
s'appliquer.

mais comment vérifier qu'aucune MEFC n'est appliqué sur toute ma feuille?

en vous remerciant d'avance pour votre aide et vos conseils

ThierryK

Windows XP Pro SP3
Office 2003
Avatar
ThierryK
Bonjour michdenis
et merci de t'intéresser à mon problème

en effet je n'ai pas été assez précis,

En A1 je fais la somme de x cellules "=somme("toutes les cellules
concernés")
en B1 je fais la somme de x AUTRES cellules "=somme("toutes les cellules
AUTRES concernés")

Et si tout est bon, A1 = B1

mais s'il y a une faute de frappe (nombre incorrect) dans les cellules
qui composent le total affiché en A1 ou B1, je le contrôle par la MEFC

en MEFC j'ai mis pour A1 & B1 ¡<>B1 (avec motif rouge)
donc si A1 est différent de B1 le motif est rouge
et si A1 = B1 le motif est celui du format de la cellule (gris)


cette feuille est ensuite envoyée par mail,
mais avant expédition, je souhaiterai m'assurer (par VBA) qu'il n'y a pas de
cellule avec le motif de la MEFC en rouge
et cela sur toute la feuille (environ 50 MEFC)

penses-tu que c'est possible?

@+
cordialement


en vous remerciant d'avance pour votre aide et vos conseils

ThierryK

Windows XP Pro SP3
Office 2003
Avatar
michdenis
Dans ta situation, à l'évidence, tu ne parles pas
des erreurs générées par Excel.

Pour tester si une mise en forme conditionnelle est en
application sur la plage de cellules, tu dois tester chacune
des cellules de la plages de cellules affectées de cette mise
en forme conditionnelle pour vérifier si la condition stipulée
est effectivement vérifiée.

Exemple de code :
'-------------------------------------
Sub Test()
Dim C As Range, X As Integer

With Worksheets("Feuil1")
'Définir la plage
For Each C In .Range("A1:A50")
'Définir la ou les conditions de la MEFC
If C.Value <> C.Offset(, 1) Then
X = X + 1
End If
Next
End With
If X <> 0 Then
MsgBox X & " erreurs trouvées"
Else
MsgBox "Aucune erreur"
End If
End Sub
'-------------------------------------



"ThierryK" a écrit dans le message de groupe de discussion
:
Bonjour michdenis
et merci de t'intéresser à mon problème

en effet je n'ai pas été assez précis,

En A1 je fais la somme de x cellules "=somme("toutes les cellules
concernés")
en B1 je fais la somme de x AUTRES cellules "=somme("toutes les cellules
AUTRES concernés")

Et si tout est bon, A1 = B1

mais s'il y a une faute de frappe (nombre incorrect) dans les cellules
qui composent le total affiché en A1 ou B1, je le contrôle par la MEFC

en MEFC j'ai mis pour A1 & B1 ¡<>B1 (avec motif rouge)
donc si A1 est différent de B1 le motif est rouge
et si A1 = B1 le motif est celui du format de la cellule (gris)


cette feuille est ensuite envoyée par mail,
mais avant expédition, je souhaiterai m'assurer (par VBA) qu'il n'y a pas de
cellule avec le motif de la MEFC en rouge
et cela sur toute la feuille (environ 50 MEFC)

penses-tu que c'est possible?

@+
cordialement


en vous remerciant d'avance pour votre aide et vos conseils

ThierryK

Windows XP Pro SP3
Office 2003
Avatar
ThierryK
Michdenis
ok pour les cellules adjacentes
encore merci,

mais j'ai également d'autres cellules situés un peu partout sur ma feuille.

n'est il pas possible de définir plusieurs plages (non adjacentes)
et vérifier que la couleur de la MEFC (rouge) est appliquée dans chaque
cellule constituant les plages?


en vous remerciant d'avance pour votre aide et vos conseils

ThierryK



"michdenis" a écrit dans le message de groupe de
discussion :
Dans ta situation, à l'évidence, tu ne parles pas
des erreurs générées par Excel.

Pour tester si une mise en forme conditionnelle est en
application sur la plage de cellules, tu dois tester chacune
des cellules de la plages de cellules affectées de cette mise
en forme conditionnelle pour vérifier si la condition stipulée
est effectivement vérifiée.

Exemple de code :
'-------------------------------------
Sub Test()
Dim C As Range, X As Integer

With Worksheets("Feuil1")
'Définir la plage
For Each C In .Range("A1:A50")
'Définir la ou les conditions de la MEFC
If C.Value <> C.Offset(, 1) Then
X = X + 1
End If
Next
End With
If X <> 0 Then
MsgBox X & " erreurs trouvées"
Else
MsgBox "Aucune erreur"
End If
End Sub
'-------------------------------------



"ThierryK" a écrit dans le message de
groupe de discussion
:
Bonjour michdenis
et merci de t'intéresser à mon problème

en effet je n'ai pas été assez précis,

En A1 je fais la somme de x cellules "=somme("toutes les cellules
concernés")
en B1 je fais la somme de x AUTRES cellules "=somme("toutes les cellules
AUTRES concernés")

Et si tout est bon, A1 = B1

mais s'il y a une faute de frappe (nombre incorrect) dans les cellules
qui composent le total affiché en A1 ou B1, je le contrôle par la MEFC

en MEFC j'ai mis pour A1 & B1 ¡<>B1 (avec motif rouge)
donc si A1 est différent de B1 le motif est rouge
et si A1 = B1 le motif est celui du format de la cellule (gris)


cette feuille est ensuite envoyée par mail,
mais avant expédition, je souhaiterai m'assurer (par VBA) qu'il n'y a pas
de
cellule avec le motif de la MEFC en rouge
et cela sur toute la feuille (environ 50 MEFC)

penses-tu que c'est possible?

@+
cordialement


en vous remerciant d'avance pour votre aide et vos conseils

ThierryK

Windows XP Pro SP3
Office 2003


Avatar
Caetera
"ThierryK" a écrit dans le message de news:


mais avant expédition, je souhaiterai m'assurer (par VBA) qu'il n'y a pas de
cellule avec le motif de la MEFC en rouge
et cela sur toute la feuille (environ 50 MEFC)



Pourquoi ne pas comparer la somme des 2 plages plutôt que de passer en revue
chacune des cellules pour avoir une alerte ?

If Application.Sum(Range("plage1")) <> Application.Sum(Range("plage2")) Then
..............

Etc
Avatar
Corona
Bonsoir Thierry,
Nomme une cellule « TestMFC » quelques parts dans le classeur, ensuite
fait tourner cette macro.
J'ai tenté un petit test qui fonctionne à moitié mais je cherche les
causes des problèmes rencontrés.

Test réalisé sur une feuille avec des formats conditionnels avec une
seule condition et la sélection 'La formule est »
J'ai mis comme condition par exemple A10<>B10 et A15>20 cela fonctionne
parfaitement.
J'ai des problèmes avec une condition telle que =NBCAR(« A2 »)>0. En
effet la cellule « TestMFC ») reçoit le nom de la fonction en minuscule
malgré le UCASE() placé et le fait que j'ai bien mis la fonction en
majuscule dans la MFC.

J'ai du aussi forcé l'activation de la cellule car dans le cas contraire
formulaconditions(1).formula1 ne renvoie pas la formule correspondant à
la ligne

C'est très cochon comme code mais c'est en test.
Peut-être d'autres contributeurs pourront trouver les failles.

J'ai essayé d'utiliser une plage nommée pour y placer la formule cela
aurait été plus beau mais cela se plante et je n'ai pas cherché plus loin.

Philippe
===== lE CODE == ?Sub mefCheck()
Dim formule As String
Dim msg As String
Dim maCellule As Range
For Each maCellule In
ActiveCell.SpecialCells(xlCellTypeAllFormatConditions)
With maCellule
If .FormatConditions.Count Then
maCellule.Activate
formule = UCase(.FormatConditions(1).Formula1)
Range("TestMFC").Formula = formule '
UCase(.FormatConditions(1).Formula1)
On Error Resume Next ' Problème actuel avec fonction tel que nbcar()
If Range("TestMFC") = True Then
msg = msg & .Address & " " & .FormatConditions(1).Formula1 & vbCrLf
' Debug.Print .Address & " - " & formule & " - " & Range("TestMFC")
End If
End If
End With
Next
MsgBox "Problème(s)" & vbCrLf & msg
End Sub

ThierryK a écrit :
Bonjour à toutes & à tous
et tous mes voux de santé, bonheur et prospérité pour cette nouvelle année

sur une feuille, j'ai de nombreuses Mise En Forme Conditionnelles (MEFC)
pour contrôler les erreurs:

exemple: MEFC pour les 2 cellules A1 & B1:
si A1<>B1 alors Format texte en gras et motif rouge

en théorie s'il n'y a pas d'erreur sur ma feuille, aucune MEFC ne
devrait s'appliquer.

mais comment vérifier qu'aucune MEFC n'est appliqué sur toute ma feuille?

en vous remerciant d'avance pour votre aide et vos conseils

ThierryK

Windows XP Pro SP3
Office 2003


Avatar
ThierryK
Bonjour Caetera
et merci pour ton aide

en réalité j'ai + de 50 MEFC
éparpillés sur toute ma feuille

avec des cellules de comparaisons différentes et non adjacentes
donc la comparaison entre 2 cellules n'est pas évidente en VBA

@+
cordialement

ThierryK



"Caetera" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de groupe de
discussion :
"ThierryK" a écrit dans le message de
news:

mais avant expédition, je souhaiterai m'assurer (par VBA) qu'il n'y a pas
de cellule avec le motif de la MEFC en rouge
et cela sur toute la feuille (environ 50 MEFC)



Pourquoi ne pas comparer la somme des 2 plages plutôt que de passer en
revue chacune des cellules pour avoir une alerte ?

If Application.Sum(Range("plage1")) <> Application.Sum(Range("plage2"))
Then
..............

Etc





--
Bonjour à toutes & à tous



en vous remerciant d'avance pour votre aide et vos conseils

ThierryK

Windows XP Pro SP3
Office 2003 & 2007
1 2