OVH Cloud OVH Cloud

Erreurs dans une plage

5 réponses
Avatar
JeNeVois
La sub suivante qui compte les erreurs dans une plage
fonctionne, mais me semble un peu lent.

Sub ERRcheck()
Dim erreurs As Integer
Dim myRange As Range
Set myRange = Range("L1:M31")

erreurs = 0

For Each c In myRange
If IsError(c) Then erreurs = erreurs + 1
Next c

End Sub

D'où ma question s'il existe un raccourci pour
détecter des erreur dans une plage sans
passer par un contrôl de chaque cellule.

Merci pour chaque réponse.

5 réponses

Avatar
michdenis
Bonjour,

Adapte le nom de la feuille

'----------------------------------
Sub ERRcheck()

Dim Rg As Range, S As Integer
On Error Resume Next
With Worksheets("Feuil2")
Set Rg = .Range("L1:M31").SpecialCells(xlCellTypeFormulas, xlErrors)
End With

For Each are In Rg.Areas
s = s + are.Cells.Count
Next
MsgBox s

End Sub
'----------------------------------


Salutations!



"JeNeVois" a écrit dans le message de news:

La sub suivante qui compte les erreurs dans une plage
fonctionne, mais me semble un peu lent.

Sub ERRcheck()
Dim erreurs As Integer
Dim myRange As Range
Set myRange = Range("L1:M31")

erreurs = 0

For Each c In myRange
If IsError(c) Then erreurs = erreurs + 1
Next c

End Sub

D'où ma question s'il existe un raccourci pour
détecter des erreur dans une plage sans
passer par un contrôl de chaque cellule.

Merci pour chaque réponse.
Avatar
AV
D'où ma question s'il existe un raccourci pour
détecter des erreur dans une plage sans


MsgBox [sum(iserror(L1:M31)*1)]

AV

Avatar
AV
PS : si tu veux en vba, tu n'as pas besoin de boucler sur les cellules :

Set plg = Range("L1:M31")
MsgBox plg.SpecialCells(xlCellTypeFormulas, 16).Count

AV
Avatar
JeNeVois
Bonjour !

Merci , cela acccélère, en effet, considérablement la procédure.
J'avais pourtant déclaré une feuille avec SET et déteminé la plage
en conséquence

Set feu1 = Workbookks(bookname).Sheets(sheetname)
Set plg = feu1.Range("L1:M31")

sans le mentionner dans mon exemple le croyant sans importance.

bon weekend



Bonjour,

Adapte le nom de la feuille

'----------------------------------
Sub ERRcheck()

Dim Rg As Range, S As Integer
On Error Resume Next
With Worksheets("Feuil2")
Set Rg = .Range("L1:M31").SpecialCells(xlCellTypeFormulas, xlErrors)
End With

For Each are In Rg.Areas
s = s + are.Cells.Count
Next
MsgBox s

End Sub
'----------------------------------


Salutations!



"JeNeVois" a écrit dans le message de news:

La sub suivante qui compte les erreurs dans une plage
fonctionne, mais me semble un peu lent.

Sub ERRcheck()
Dim erreurs As Integer
Dim myRange As Range
Set myRange = Range("L1:M31")

erreurs = 0

For Each c In myRange
If IsError(c) Then erreurs = erreurs + 1
Next c

End Sub

D'où ma question s'il existe un raccourci pour
détecter des erreur dans une plage sans
passer par un contrôl de chaque cellule.

Merci pour chaque réponse.





Avatar
JeNeVois
Merci , cela bat tous les récords de vitesse
et de densité. Mon seul souci reste de savoir
à combien de lignes le code de mon petit
"programme" serait réduit s'il passait par
tes mains. :)




PS : si tu veux en vba, tu n'as pas besoin de boucler sur les cellules :

Set plg = Range("L1:M31")
MsgBox plg.SpecialCells(xlCellTypeFormulas, 16).Count

AV