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
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" <michdenis@hotmail.com> a écrit dans le message de groupe de
discussion : ehhlaw7iKHA.2188@TK2MSFTNGP04.phx.gbl...
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" <thierryx.kolby@zlaposzte.nxet> a écrit dans le message de
groupe de discussion
: uAlSnh7iKHA.1420@TK2MSFTNGP05.phx.gbl...
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
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
en réalité j'ai + de 50 MEFC
éparpillés sur toute ma feuille
avec des cellules de comparaisons différentes et non adjacentes
en réalité j'ai + de 50 MEFC
éparpillés sur toute ma feuille
avec des cellules de comparaisons différentes et non adjacentes
en réalité j'ai + de 50 MEFC
éparpillés sur toute ma feuille
avec des cellules de comparaisons différentes et non adjacentes
"ThierryK" a écrit dans le message de
news:en réalité j'ai + de 50 MEFC
éparpillés sur toute ma feuille
avec des cellules de comparaisons différentes et non adjacentes
********************
Il suffit de nommer les 2 plages et comparer les 2 sommes obtenues
PS : Que les cellules d'une plage soient adjacentes ou pas n'a strictement
aucune importance pour nommer cette plage
Etc
"ThierryK" <thierryx.kolby@zlaposzte.nxet> a écrit dans le message de
news: eVII1I9iKHA.5608@TK2MSFTNGP05.phx.gbl...
en réalité j'ai + de 50 MEFC
éparpillés sur toute ma feuille
avec des cellules de comparaisons différentes et non adjacentes
********************
Il suffit de nommer les 2 plages et comparer les 2 sommes obtenues
PS : Que les cellules d'une plage soient adjacentes ou pas n'a strictement
aucune importance pour nommer cette plage
Etc
"ThierryK" a écrit dans le message de
news:en réalité j'ai + de 50 MEFC
éparpillés sur toute ma feuille
avec des cellules de comparaisons différentes et non adjacentes
********************
Il suffit de nommer les 2 plages et comparer les 2 sommes obtenues
PS : Que les cellules d'une plage soient adjacentes ou pas n'a strictement
aucune importance pour nommer cette plage
Etc
Si tu préfères, tu pourrais modifier cette section de
la procédure pour ceci :
'----------------------------------------------
For Each C In Col.Cells
C.Activate
With C.FormatConditions
If .Count > 0 Then
If Evaluate(.Item(1).Formula1) = True Then
Erreur = Erreur + 1
ReDim Preserve Tblo(1 To i + 1)
Tblo(i) = C.Address
i = i + 1
End If
End If
End With
Next
'----------------------------------------------
"michdenis" a écrit dans le message de groupe de
discussion :
Si ta plage n'est pas trop grande, tu peux utiliser quelque chose
comme ceci .
Dans une nouvelle feuille, tu auras le nombre d'erreurs ainsi que
l'adresse des cellules où l'erreur aura été trouvé.
'-------------------------------------------
Sub test()
Dim Rg As Range, C As Range, Col As Range
Dim A As String, X As Variant, i As Integer
Dim Erreur As Integer, Tblo(), Sh As Worksheet
With Worksheets("Feuil1") ' Nom à adapter
.Activate
Set Rg = .Range("A1:C10") 'Plage à adapter
End With
i = 1
For Each Col In Rg.Columns
For Each C In Col.Cells
C.Select
If C.FormatConditions.Count > 0 Then
A = Replace(C.FormatConditions(1).Formula1, "=", "")
X = Split(A, "<>")
If Range(X(0)) <> Range(X(1)) Then
Erreur = Erreur + 1
ReDim Preserve Tblo(1 To i + 1)
Tblo(i) = C.Address
i = i + 1
End If
End If
Next
Next
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Erreur").Delete
Application.DisplayAlerts = True
Set Sh = Worksheets.Add
With Sh
.Name = "Erreur"
.Range("A1") = Erreur
.Range("B1").Resize(UBound(Tblo)) = Application.Transpose(Tblo)
End With
End Sub
'-------------------------------------------
Si tu préfères, tu pourrais modifier cette section de
la procédure pour ceci :
'----------------------------------------------
For Each C In Col.Cells
C.Activate
With C.FormatConditions
If .Count > 0 Then
If Evaluate(.Item(1).Formula1) = True Then
Erreur = Erreur + 1
ReDim Preserve Tblo(1 To i + 1)
Tblo(i) = C.Address
i = i + 1
End If
End If
End With
Next
'----------------------------------------------
"michdenis" <michdenis@hotmail.com> a écrit dans le message de groupe de
discussion :
6001811E-3C5B-49D6-9587-81FE0A85A390@microsoft.com...
Si ta plage n'est pas trop grande, tu peux utiliser quelque chose
comme ceci .
Dans une nouvelle feuille, tu auras le nombre d'erreurs ainsi que
l'adresse des cellules où l'erreur aura été trouvé.
'-------------------------------------------
Sub test()
Dim Rg As Range, C As Range, Col As Range
Dim A As String, X As Variant, i As Integer
Dim Erreur As Integer, Tblo(), Sh As Worksheet
With Worksheets("Feuil1") ' Nom à adapter
.Activate
Set Rg = .Range("A1:C10") 'Plage à adapter
End With
i = 1
For Each Col In Rg.Columns
For Each C In Col.Cells
C.Select
If C.FormatConditions.Count > 0 Then
A = Replace(C.FormatConditions(1).Formula1, "=", "")
X = Split(A, "<>")
If Range(X(0)) <> Range(X(1)) Then
Erreur = Erreur + 1
ReDim Preserve Tblo(1 To i + 1)
Tblo(i) = C.Address
i = i + 1
End If
End If
Next
Next
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Erreur").Delete
Application.DisplayAlerts = True
Set Sh = Worksheets.Add
With Sh
.Name = "Erreur"
.Range("A1") = Erreur
.Range("B1").Resize(UBound(Tblo)) = Application.Transpose(Tblo)
End With
End Sub
'-------------------------------------------
Si tu préfères, tu pourrais modifier cette section de
la procédure pour ceci :
'----------------------------------------------
For Each C In Col.Cells
C.Activate
With C.FormatConditions
If .Count > 0 Then
If Evaluate(.Item(1).Formula1) = True Then
Erreur = Erreur + 1
ReDim Preserve Tblo(1 To i + 1)
Tblo(i) = C.Address
i = i + 1
End If
End If
End With
Next
'----------------------------------------------
"michdenis" a écrit dans le message de groupe de
discussion :
Si ta plage n'est pas trop grande, tu peux utiliser quelque chose
comme ceci .
Dans une nouvelle feuille, tu auras le nombre d'erreurs ainsi que
l'adresse des cellules où l'erreur aura été trouvé.
'-------------------------------------------
Sub test()
Dim Rg As Range, C As Range, Col As Range
Dim A As String, X As Variant, i As Integer
Dim Erreur As Integer, Tblo(), Sh As Worksheet
With Worksheets("Feuil1") ' Nom à adapter
.Activate
Set Rg = .Range("A1:C10") 'Plage à adapter
End With
i = 1
For Each Col In Rg.Columns
For Each C In Col.Cells
C.Select
If C.FormatConditions.Count > 0 Then
A = Replace(C.FormatConditions(1).Formula1, "=", "")
X = Split(A, "<>")
If Range(X(0)) <> Range(X(1)) Then
Erreur = Erreur + 1
ReDim Preserve Tblo(1 To i + 1)
Tblo(i) = C.Address
i = i + 1
End If
End If
Next
Next
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Erreur").Delete
Application.DisplayAlerts = True
Set Sh = Worksheets.Add
With Sh
.Name = "Erreur"
.Range("A1") = Erreur
.Range("B1").Resize(UBound(Tblo)) = Application.Transpose(Tblo)
End With
End Sub
'-------------------------------------------
Si tu préfères, tu pourrais modifier cette section de
la procédure pour ceci :
'----------------------------------------------
For Each C In Col.Cells
C.Activate
With C.FormatConditions
If .Count > 0 Then
If Evaluate(.Item(1).Formula1) = True Then
Erreur = Erreur + 1
ReDim Preserve Tblo(1 To i + 1)
Tblo(i) = C.Address
i = i + 1
End If
End If
End With
Next
'----------------------------------------------
"michdenis" a écrit dans le message de groupe de
discussion :
Si ta plage n'est pas trop grande, tu peux utiliser quelque chose
comme ceci .
Dans une nouvelle feuille, tu auras le nombre d'erreurs ainsi que
l'adresse des cellules où l'erreur aura été trouvé.
'-------------------------------------------
Sub test()
Dim Rg As Range, C As Range, Col As Range
Dim A As String, X As Variant, i As Integer
Dim Erreur As Integer, Tblo(), Sh As Worksheet
With Worksheets("Feuil1") ' Nom à adapter
.Activate
Set Rg = .Range("A1:C10") 'Plage à adapter
End With
i = 1
For Each Col In Rg.Columns
For Each C In Col.Cells
C.Select
If C.FormatConditions.Count > 0 Then
A = Replace(C.FormatConditions(1).Formula1, "=", "")
X = Split(A, "<>")
If Range(X(0)) <> Range(X(1)) Then
Erreur = Erreur + 1
ReDim Preserve Tblo(1 To i + 1)
Tblo(i) = C.Address
i = i + 1
End If
End If
Next
Next
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Erreur").Delete
Application.DisplayAlerts = True
Set Sh = Worksheets.Add
With Sh
.Name = "Erreur"
.Range("A1") = Erreur
.Range("B1").Resize(UBound(Tblo)) = Application.Transpose(Tblo)
End With
End Sub
'-------------------------------------------
Si tu préfères, tu pourrais modifier cette section de
la procédure pour ceci :
'----------------------------------------------
For Each C In Col.Cells
C.Activate
With C.FormatConditions
If .Count > 0 Then
If Evaluate(.Item(1).Formula1) = True Then
Erreur = Erreur + 1
ReDim Preserve Tblo(1 To i + 1)
Tblo(i) = C.Address
i = i + 1
End If
End If
End With
Next
'----------------------------------------------
"michdenis" <michdenis@hotmail.com> a écrit dans le message de groupe de
discussion :
6001811E-3C5B-49D6-9587-81FE0A85A390@microsoft.com...
Si ta plage n'est pas trop grande, tu peux utiliser quelque chose
comme ceci .
Dans une nouvelle feuille, tu auras le nombre d'erreurs ainsi que
l'adresse des cellules où l'erreur aura été trouvé.
'-------------------------------------------
Sub test()
Dim Rg As Range, C As Range, Col As Range
Dim A As String, X As Variant, i As Integer
Dim Erreur As Integer, Tblo(), Sh As Worksheet
With Worksheets("Feuil1") ' Nom à adapter
.Activate
Set Rg = .Range("A1:C10") 'Plage à adapter
End With
i = 1
For Each Col In Rg.Columns
For Each C In Col.Cells
C.Select
If C.FormatConditions.Count > 0 Then
A = Replace(C.FormatConditions(1).Formula1, "=", "")
X = Split(A, "<>")
If Range(X(0)) <> Range(X(1)) Then
Erreur = Erreur + 1
ReDim Preserve Tblo(1 To i + 1)
Tblo(i) = C.Address
i = i + 1
End If
End If
Next
Next
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Erreur").Delete
Application.DisplayAlerts = True
Set Sh = Worksheets.Add
With Sh
.Name = "Erreur"
.Range("A1") = Erreur
.Range("B1").Resize(UBound(Tblo)) = Application.Transpose(Tblo)
End With
End Sub
'-------------------------------------------
Si tu préfères, tu pourrais modifier cette section de
la procédure pour ceci :
'----------------------------------------------
For Each C In Col.Cells
C.Activate
With C.FormatConditions
If .Count > 0 Then
If Evaluate(.Item(1).Formula1) = True Then
Erreur = Erreur + 1
ReDim Preserve Tblo(1 To i + 1)
Tblo(i) = C.Address
i = i + 1
End If
End If
End With
Next
'----------------------------------------------
"michdenis" a écrit dans le message de groupe de
discussion :
Si ta plage n'est pas trop grande, tu peux utiliser quelque chose
comme ceci .
Dans une nouvelle feuille, tu auras le nombre d'erreurs ainsi que
l'adresse des cellules où l'erreur aura été trouvé.
'-------------------------------------------
Sub test()
Dim Rg As Range, C As Range, Col As Range
Dim A As String, X As Variant, i As Integer
Dim Erreur As Integer, Tblo(), Sh As Worksheet
With Worksheets("Feuil1") ' Nom à adapter
.Activate
Set Rg = .Range("A1:C10") 'Plage à adapter
End With
i = 1
For Each Col In Rg.Columns
For Each C In Col.Cells
C.Select
If C.FormatConditions.Count > 0 Then
A = Replace(C.FormatConditions(1).Formula1, "=", "")
X = Split(A, "<>")
If Range(X(0)) <> Range(X(1)) Then
Erreur = Erreur + 1
ReDim Preserve Tblo(1 To i + 1)
Tblo(i) = C.Address
i = i + 1
End If
End If
Next
Next
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Erreur").Delete
Application.DisplayAlerts = True
Set Sh = Worksheets.Add
With Sh
.Name = "Erreur"
.Range("A1") = Erreur
.Range("B1").Resize(UBound(Tblo)) = Application.Transpose(Tblo)
End With
End Sub
'-------------------------------------------