Compter le nombre de cellules de même couleur (suite)
6 réponses
michel-hirard
Bonjour,
Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur le
site, mais elle ne fonctionne pas.
Elle renvoie un message d'erreur de compilation avec "End If sans bloc If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en question:
Sub inventaireRouge()
sommeRouge = 0
compterRouge = 0
For Each cell In ActiveSheet.UsedRange
If cell.Interior.Color = vbRed Then
On Error Resume Next
sommeRouge = sommeRouge + cell.Value
On Error GoTo 0
compterRouge = compterRouge + 1
End If
Next
If compterRouge = 1 Then c = "cellule" Else c = "cellules"
MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge
end if
End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la somme
de leur contenu.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
papou
Bonjour Sub inventaireRouge() Dim CompterRouge As Long compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then compterRouge = compterRouge + 1 End If Next MsgBox compterRouge & " cellule(s) en rouge" End Sub
Cordialement Pascal
"michel-hirard" a écrit dans le message de news:cfi6f3$u0e$
Bonjour, Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur le site, mais elle ne fonctionne pas. Elle renvoie un message d'erreur de compilation avec "End If sans bloc If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en question:
Sub inventaireRouge() sommeRouge = 0 compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then On Error Resume Next sommeRouge = sommeRouge + cell.Value On Error GoTo 0 compterRouge = compterRouge + 1 End If Next If compterRouge = 1 Then c = "cellule" Else c = "cellules" MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge end if End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la somme
de leur contenu.
Merci, Michel
Bonjour
Sub inventaireRouge()
Dim CompterRouge As Long
compterRouge = 0
For Each cell In ActiveSheet.UsedRange
If cell.Interior.Color = vbRed Then
compterRouge = compterRouge + 1
End If
Next
MsgBox compterRouge & " cellule(s) en rouge"
End Sub
Cordialement
Pascal
"michel-hirard" <michel-hirard@wanadoo.fr> a écrit dans le message de
news:cfi6f3$u0e$1@news-reader5.wanadoo.fr...
Bonjour,
Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur le
site, mais elle ne fonctionne pas.
Elle renvoie un message d'erreur de compilation avec "End If sans bloc
If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en question:
Sub inventaireRouge()
sommeRouge = 0
compterRouge = 0
For Each cell In ActiveSheet.UsedRange
If cell.Interior.Color = vbRed Then
On Error Resume Next
sommeRouge = sommeRouge + cell.Value
On Error GoTo 0
compterRouge = compterRouge + 1
End If
Next
If compterRouge = 1 Then c = "cellule" Else c = "cellules"
MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge
end if
End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la
somme
Bonjour Sub inventaireRouge() Dim CompterRouge As Long compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then compterRouge = compterRouge + 1 End If Next MsgBox compterRouge & " cellule(s) en rouge" End Sub
Cordialement Pascal
"michel-hirard" a écrit dans le message de news:cfi6f3$u0e$
Bonjour, Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur le site, mais elle ne fonctionne pas. Elle renvoie un message d'erreur de compilation avec "End If sans bloc If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en question:
Sub inventaireRouge() sommeRouge = 0 compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then On Error Resume Next sommeRouge = sommeRouge + cell.Value On Error GoTo 0 compterRouge = compterRouge + 1 End If Next If compterRouge = 1 Then c = "cellule" Else c = "cellules" MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge end if End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la somme
de leur contenu.
Merci, Michel
dadda
Bonjour ; supprimer le dernier "end if". Quand vous écriver if et then sur la même ligne "end if" est de trop. Si vous voulez le conserver il faut revenir à la ligne après "then" Cordialement dadda
-----Message d'origine----- Bonjour, Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur le
site, mais elle ne fonctionne pas. Elle renvoie un message d'erreur de compilation avec "End If sans bloc If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en question:
Sub inventaireRouge() sommeRouge = 0 compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then On Error Resume Next sommeRouge = sommeRouge + cell.Value On Error GoTo 0 compterRouge = compterRouge + 1 End If Next If compterRouge = 1 Then c = "cellule" Else c = "cellules" MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge
end if End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la somme
de leur contenu.
Merci, Michel
.
Bonjour ;
supprimer le dernier "end if". Quand vous écriver if et
then sur la même ligne "end if" est de trop. Si vous
voulez le conserver il faut revenir à la ligne après "then"
Cordialement
dadda
-----Message d'origine-----
Bonjour,
Merci à Philippe pour sa réponse; j'avais déjà vu cette
procédure sur le
site, mais elle ne fonctionne pas.
Elle renvoie un message d'erreur de compilation avec "End
If sans bloc If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le
code en question:
Sub inventaireRouge()
sommeRouge = 0
compterRouge = 0
For Each cell In ActiveSheet.UsedRange
If cell.Interior.Color = vbRed Then
On Error Resume Next
sommeRouge = sommeRouge + cell.Value
On Error GoTo 0
compterRouge = compterRouge + 1
End If
Next
If compterRouge = 1 Then c = "cellule" Else c = "cellules"
MsgBox compterRouge & " " & c & " -- Total = " &
sommeRouge
end if
End Sub
Par ailleurs je souhaite compter le nombre de cellules et
non faire la somme
Bonjour ; supprimer le dernier "end if". Quand vous écriver if et then sur la même ligne "end if" est de trop. Si vous voulez le conserver il faut revenir à la ligne après "then" Cordialement dadda
-----Message d'origine----- Bonjour, Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur le
site, mais elle ne fonctionne pas. Elle renvoie un message d'erreur de compilation avec "End If sans bloc If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en question:
Sub inventaireRouge() sommeRouge = 0 compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then On Error Resume Next sommeRouge = sommeRouge + cell.Value On Error GoTo 0 compterRouge = compterRouge + 1 End If Next If compterRouge = 1 Then c = "cellule" Else c = "cellules" MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge
end if End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la somme
de leur contenu.
Merci, Michel
.
JpPradier
Bonjour Michel
Le dernier end if juste avant end sub est en trop. Pour ta 2e question, je ne comprends pas : la procédure fait les deux.
j-p
Bonjour Michel
Le dernier end if juste avant end sub est en trop.
Pour ta 2e question, je ne comprends pas : la procédure fait les deux.
Le dernier end if juste avant end sub est en trop. Pour ta 2e question, je ne comprends pas : la procédure fait les deux.
j-p
michel-hirard
OK, merci pascal, Simplement pourrais-tu me dire comment récupérer le résultat de la macro dans un cellule, de manière à le réexploiter par ailleurs. Merci,
"papou" <cestpasbonpapou@çanonplus44.fr> a écrit dans le message de news:
Bonjour Sub inventaireRouge() Dim CompterRouge As Long compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then compterRouge = compterRouge + 1 End If Next MsgBox compterRouge & " cellule(s) en rouge" End Sub
Cordialement Pascal
"michel-hirard" a écrit dans le message de news:cfi6f3$u0e$
Bonjour, Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur le site, mais elle ne fonctionne pas. Elle renvoie un message d'erreur de compilation avec "End If sans bloc If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en question:
Sub inventaireRouge() sommeRouge = 0 compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then On Error Resume Next sommeRouge = sommeRouge + cell.Value On Error GoTo 0 compterRouge = compterRouge + 1 End If Next If compterRouge = 1 Then c = "cellule" Else c = "cellules" MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge end if End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la somme
de leur contenu.
Merci, Michel
OK, merci pascal,
Simplement pourrais-tu me dire comment récupérer le résultat de la macro
dans un cellule, de manière à le réexploiter par ailleurs.
Merci,
"papou" <cestpasbonpapou@çanonplus44.fr> a écrit dans le message de
news:eX5DDcSgEHA.632@TK2MSFTNGP12.phx.gbl...
Bonjour
Sub inventaireRouge()
Dim CompterRouge As Long
compterRouge = 0
For Each cell In ActiveSheet.UsedRange
If cell.Interior.Color = vbRed Then
compterRouge = compterRouge + 1
End If
Next
MsgBox compterRouge & " cellule(s) en rouge"
End Sub
Cordialement
Pascal
"michel-hirard" <michel-hirard@wanadoo.fr> a écrit dans le message de
news:cfi6f3$u0e$1@news-reader5.wanadoo.fr...
Bonjour,
Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur le
site, mais elle ne fonctionne pas.
Elle renvoie un message d'erreur de compilation avec "End If sans bloc
If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en question:
Sub inventaireRouge()
sommeRouge = 0
compterRouge = 0
For Each cell In ActiveSheet.UsedRange
If cell.Interior.Color = vbRed Then
On Error Resume Next
sommeRouge = sommeRouge + cell.Value
On Error GoTo 0
compterRouge = compterRouge + 1
End If
Next
If compterRouge = 1 Then c = "cellule" Else c = "cellules"
MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge
end if
End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la
somme
OK, merci pascal, Simplement pourrais-tu me dire comment récupérer le résultat de la macro dans un cellule, de manière à le réexploiter par ailleurs. Merci,
"papou" <cestpasbonpapou@çanonplus44.fr> a écrit dans le message de news:
Bonjour Sub inventaireRouge() Dim CompterRouge As Long compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then compterRouge = compterRouge + 1 End If Next MsgBox compterRouge & " cellule(s) en rouge" End Sub
Cordialement Pascal
"michel-hirard" a écrit dans le message de news:cfi6f3$u0e$
Bonjour, Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur le site, mais elle ne fonctionne pas. Elle renvoie un message d'erreur de compilation avec "End If sans bloc If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en question:
Sub inventaireRouge() sommeRouge = 0 compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then On Error Resume Next sommeRouge = sommeRouge + cell.Value On Error GoTo 0 compterRouge = compterRouge + 1 End If Next If compterRouge = 1 Then c = "cellule" Else c = "cellules" MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge end if End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la somme
de leur contenu.
Merci, Michel
papou
Ben tu peux tout bêtement rajouter un ActiveCell.Value = compterrouge en lieu et place de msgbox... ça aura pour effet de mettre le résultat dans la cellule active, mais bon pas terrible :-( Et puis si tu veux faire plus élaboré tu la transformes en fonction en lui donnant deux paramètres, à savoir la plage où on compte la couleur et la cellule où on met le résultat Exemple : Function InventaireRouge(LaPlage as Range, Dest as Range) As Long ...et dans le code ...remplacer la ligne msgbox par Inventaireenrouge = compterrouge end Function
Ensuite tu mets ta fonction dans une cellule, mais attention ! le résultat ne se mettra pas à jour dans le cas ou des couleurs sont changées après coup, il faudra forcer le recalcul par F9 notamment
Cordialement Pascal
"michel-hirard" a écrit dans le message de news:cfi8md$g9c$
OK, merci pascal, Simplement pourrais-tu me dire comment récupérer le résultat de la macro dans un cellule, de manière à le réexploiter par ailleurs. Merci,
"papou" <cestpasbonpapou@çanonplus44.fr> a écrit dans le message de news:
Bonjour Sub inventaireRouge() Dim CompterRouge As Long compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then compterRouge = compterRouge + 1 End If Next MsgBox compterRouge & " cellule(s) en rouge" End Sub
Cordialement Pascal
"michel-hirard" a écrit dans le message de news:cfi6f3$u0e$
Bonjour, Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur le
site, mais elle ne fonctionne pas. Elle renvoie un message d'erreur de compilation avec "End If sans bloc If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en question:
Sub inventaireRouge() sommeRouge = 0 compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then On Error Resume Next sommeRouge = sommeRouge + cell.Value On Error GoTo 0 compterRouge = compterRouge + 1 End If Next If compterRouge = 1 Then c = "cellule" Else c = "cellules" MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge end if End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la somme
de leur contenu.
Merci, Michel
Ben tu peux tout bêtement rajouter un ActiveCell.Value = compterrouge en
lieu et place de msgbox... ça aura pour effet de mettre le résultat dans la
cellule active, mais bon pas terrible :-(
Et puis si tu veux faire plus élaboré tu la transformes en fonction en lui
donnant deux paramètres, à savoir
la plage où on compte la couleur et la cellule où on met le résultat
Exemple :
Function InventaireRouge(LaPlage as Range, Dest as Range) As Long
...et dans le code
...remplacer la ligne msgbox par
Inventaireenrouge = compterrouge
end Function
Ensuite tu mets ta fonction dans une cellule, mais attention ! le résultat
ne se mettra pas à jour dans le cas ou des couleurs sont changées après
coup, il faudra forcer le recalcul par F9 notamment
Cordialement
Pascal
"michel-hirard" <michel-hirard@wanadoo.fr> a écrit dans le message de
news:cfi8md$g9c$1@news-reader3.wanadoo.fr...
OK, merci pascal,
Simplement pourrais-tu me dire comment récupérer le résultat de la macro
dans un cellule, de manière à le réexploiter par ailleurs.
Merci,
"papou" <cestpasbonpapou@çanonplus44.fr> a écrit dans le message de
news:eX5DDcSgEHA.632@TK2MSFTNGP12.phx.gbl...
Bonjour
Sub inventaireRouge()
Dim CompterRouge As Long
compterRouge = 0
For Each cell In ActiveSheet.UsedRange
If cell.Interior.Color = vbRed Then
compterRouge = compterRouge + 1
End If
Next
MsgBox compterRouge & " cellule(s) en rouge"
End Sub
Cordialement
Pascal
"michel-hirard" <michel-hirard@wanadoo.fr> a écrit dans le message de
news:cfi6f3$u0e$1@news-reader5.wanadoo.fr...
Bonjour,
Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur
le
site, mais elle ne fonctionne pas.
Elle renvoie un message d'erreur de compilation avec "End If sans bloc
If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en
question:
Sub inventaireRouge()
sommeRouge = 0
compterRouge = 0
For Each cell In ActiveSheet.UsedRange
If cell.Interior.Color = vbRed Then
On Error Resume Next
sommeRouge = sommeRouge + cell.Value
On Error GoTo 0
compterRouge = compterRouge + 1
End If
Next
If compterRouge = 1 Then c = "cellule" Else c = "cellules"
MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge
end if
End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la
somme
Ben tu peux tout bêtement rajouter un ActiveCell.Value = compterrouge en lieu et place de msgbox... ça aura pour effet de mettre le résultat dans la cellule active, mais bon pas terrible :-( Et puis si tu veux faire plus élaboré tu la transformes en fonction en lui donnant deux paramètres, à savoir la plage où on compte la couleur et la cellule où on met le résultat Exemple : Function InventaireRouge(LaPlage as Range, Dest as Range) As Long ...et dans le code ...remplacer la ligne msgbox par Inventaireenrouge = compterrouge end Function
Ensuite tu mets ta fonction dans une cellule, mais attention ! le résultat ne se mettra pas à jour dans le cas ou des couleurs sont changées après coup, il faudra forcer le recalcul par F9 notamment
Cordialement Pascal
"michel-hirard" a écrit dans le message de news:cfi8md$g9c$
OK, merci pascal, Simplement pourrais-tu me dire comment récupérer le résultat de la macro dans un cellule, de manière à le réexploiter par ailleurs. Merci,
"papou" <cestpasbonpapou@çanonplus44.fr> a écrit dans le message de news:
Bonjour Sub inventaireRouge() Dim CompterRouge As Long compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then compterRouge = compterRouge + 1 End If Next MsgBox compterRouge & " cellule(s) en rouge" End Sub
Cordialement Pascal
"michel-hirard" a écrit dans le message de news:cfi6f3$u0e$
Bonjour, Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur le
site, mais elle ne fonctionne pas. Elle renvoie un message d'erreur de compilation avec "End If sans bloc If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en question:
Sub inventaireRouge() sommeRouge = 0 compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then On Error Resume Next sommeRouge = sommeRouge + cell.Value On Error GoTo 0 compterRouge = compterRouge + 1 End If Next If compterRouge = 1 Then c = "cellule" Else c = "cellules" MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge end if End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la somme
de leur contenu.
Merci, Michel
papou
Oups la ! (no comment) Bon je reprend : si tu choisis l'option fonction, tu modifies comme ça : Function InventaireRouge(LaPlage as Range, Dest as Range) As Long Dim CompterRouge As Long compterRouge = 0 For Each cell In LaPlage If cell.Interior.Color = vbRed Then compterRouge = compterRouge + 1 End If Next cell InventaireRouge = compterRouge End Function
Cordialement Pascal
"papou" <cestpasbonpapou@çanonplus44.fr> a écrit dans le message de news:%
Ben tu peux tout bêtement rajouter un ActiveCell.Value = compterrouge en lieu et place de msgbox... ça aura pour effet de mettre le résultat dans la
cellule active, mais bon pas terrible :-( Et puis si tu veux faire plus élaboré tu la transformes en fonction en lui donnant deux paramètres, à savoir la plage où on compte la couleur et la cellule où on met le résultat Exemple : Function InventaireRouge(LaPlage as Range, Dest as Range) As Long ...et dans le code ...remplacer la ligne msgbox par Inventaireenrouge = compterrouge end Function
Ensuite tu mets ta fonction dans une cellule, mais attention ! le résultat ne se mettra pas à jour dans le cas ou des couleurs sont changées après coup, il faudra forcer le recalcul par F9 notamment
Cordialement Pascal
"michel-hirard" a écrit dans le message de news:cfi8md$g9c$
OK, merci pascal, Simplement pourrais-tu me dire comment récupérer le résultat de la macro dans un cellule, de manière à le réexploiter par ailleurs. Merci,
"papou" <cestpasbonpapou@çanonplus44.fr> a écrit dans le message de news:
Bonjour Sub inventaireRouge() Dim CompterRouge As Long compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then compterRouge = compterRouge + 1 End If Next MsgBox compterRouge & " cellule(s) en rouge" End Sub
Cordialement Pascal
"michel-hirard" a écrit dans le message de news:cfi6f3$u0e$
Bonjour, Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur
le
site, mais elle ne fonctionne pas. Elle renvoie un message d'erreur de compilation avec "End If sans bloc
If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en question:
Sub inventaireRouge() sommeRouge = 0 compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then On Error Resume Next sommeRouge = sommeRouge + cell.Value On Error GoTo 0 compterRouge = compterRouge + 1 End If Next If compterRouge = 1 Then c = "cellule" Else c = "cellules" MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge end if End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la
somme
de leur contenu.
Merci, Michel
Oups la ! (no comment)
Bon je reprend :
si tu choisis l'option fonction, tu modifies comme ça :
Function InventaireRouge(LaPlage as Range, Dest as Range) As Long
Dim CompterRouge As Long
compterRouge = 0
For Each cell In LaPlage
If cell.Interior.Color = vbRed Then
compterRouge = compterRouge + 1
End If
Next cell
InventaireRouge = compterRouge
End Function
Cordialement
Pascal
"papou" <cestpasbonpapou@çanonplus44.fr> a écrit dans le message de
news:%23xMEMqSgEHA.536@TK2MSFTNGP11.phx.gbl...
Ben tu peux tout bêtement rajouter un ActiveCell.Value = compterrouge en
lieu et place de msgbox... ça aura pour effet de mettre le résultat dans
la
cellule active, mais bon pas terrible :-(
Et puis si tu veux faire plus élaboré tu la transformes en fonction en lui
donnant deux paramètres, à savoir
la plage où on compte la couleur et la cellule où on met le résultat
Exemple :
Function InventaireRouge(LaPlage as Range, Dest as Range) As Long
...et dans le code
...remplacer la ligne msgbox par
Inventaireenrouge = compterrouge
end Function
Ensuite tu mets ta fonction dans une cellule, mais attention ! le résultat
ne se mettra pas à jour dans le cas ou des couleurs sont changées après
coup, il faudra forcer le recalcul par F9 notamment
Cordialement
Pascal
"michel-hirard" <michel-hirard@wanadoo.fr> a écrit dans le message de
news:cfi8md$g9c$1@news-reader3.wanadoo.fr...
OK, merci pascal,
Simplement pourrais-tu me dire comment récupérer le résultat de la macro
dans un cellule, de manière à le réexploiter par ailleurs.
Merci,
"papou" <cestpasbonpapou@çanonplus44.fr> a écrit dans le message de
news:eX5DDcSgEHA.632@TK2MSFTNGP12.phx.gbl...
Bonjour
Sub inventaireRouge()
Dim CompterRouge As Long
compterRouge = 0
For Each cell In ActiveSheet.UsedRange
If cell.Interior.Color = vbRed Then
compterRouge = compterRouge + 1
End If
Next
MsgBox compterRouge & " cellule(s) en rouge"
End Sub
Cordialement
Pascal
"michel-hirard" <michel-hirard@wanadoo.fr> a écrit dans le message de
news:cfi6f3$u0e$1@news-reader5.wanadoo.fr...
Bonjour,
Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure
sur
le
site, mais elle ne fonctionne pas.
Elle renvoie un message d'erreur de compilation avec "End If sans
bloc
If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en
question:
Sub inventaireRouge()
sommeRouge = 0
compterRouge = 0
For Each cell In ActiveSheet.UsedRange
If cell.Interior.Color = vbRed Then
On Error Resume Next
sommeRouge = sommeRouge + cell.Value
On Error GoTo 0
compterRouge = compterRouge + 1
End If
Next
If compterRouge = 1 Then c = "cellule" Else c = "cellules"
MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge
end if
End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire
la
Oups la ! (no comment) Bon je reprend : si tu choisis l'option fonction, tu modifies comme ça : Function InventaireRouge(LaPlage as Range, Dest as Range) As Long Dim CompterRouge As Long compterRouge = 0 For Each cell In LaPlage If cell.Interior.Color = vbRed Then compterRouge = compterRouge + 1 End If Next cell InventaireRouge = compterRouge End Function
Cordialement Pascal
"papou" <cestpasbonpapou@çanonplus44.fr> a écrit dans le message de news:%
Ben tu peux tout bêtement rajouter un ActiveCell.Value = compterrouge en lieu et place de msgbox... ça aura pour effet de mettre le résultat dans la
cellule active, mais bon pas terrible :-( Et puis si tu veux faire plus élaboré tu la transformes en fonction en lui donnant deux paramètres, à savoir la plage où on compte la couleur et la cellule où on met le résultat Exemple : Function InventaireRouge(LaPlage as Range, Dest as Range) As Long ...et dans le code ...remplacer la ligne msgbox par Inventaireenrouge = compterrouge end Function
Ensuite tu mets ta fonction dans une cellule, mais attention ! le résultat ne se mettra pas à jour dans le cas ou des couleurs sont changées après coup, il faudra forcer le recalcul par F9 notamment
Cordialement Pascal
"michel-hirard" a écrit dans le message de news:cfi8md$g9c$
OK, merci pascal, Simplement pourrais-tu me dire comment récupérer le résultat de la macro dans un cellule, de manière à le réexploiter par ailleurs. Merci,
"papou" <cestpasbonpapou@çanonplus44.fr> a écrit dans le message de news:
Bonjour Sub inventaireRouge() Dim CompterRouge As Long compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then compterRouge = compterRouge + 1 End If Next MsgBox compterRouge & " cellule(s) en rouge" End Sub
Cordialement Pascal
"michel-hirard" a écrit dans le message de news:cfi6f3$u0e$
Bonjour, Merci à Philippe pour sa réponse; j'avais déjà vu cette procédure sur
le
site, mais elle ne fonctionne pas. Elle renvoie un message d'erreur de compilation avec "End If sans bloc
If".
Une bonne âme peut-elle m'indiquer pourquoi, voici le code en question:
Sub inventaireRouge() sommeRouge = 0 compterRouge = 0 For Each cell In ActiveSheet.UsedRange If cell.Interior.Color = vbRed Then On Error Resume Next sommeRouge = sommeRouge + cell.Value On Error GoTo 0 compterRouge = compterRouge + 1 End If Next If compterRouge = 1 Then c = "cellule" Else c = "cellules" MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge end if End Sub
Par ailleurs je souhaite compter le nombre de cellules et non faire la