Sub test()
Dim c As Range
Worksheets("Feuil1").Activate
On Error GoTo GesErr1
For Each c In Cells.SpecialCells(xlCellTypeFormulas, 23) ' contrôle des formules
Next c
MsgBox ("Boucle test1 terminée")
Suivant1: '
On Error GoTo GesErr2
For Each c In Cells.SpecialCells(xlCellTypeConstants, 23) ' contrôle des constantes
Next c
MsgBox ("Boucle test2 terminée")
Exit Sub
GesErr1:
MsgBox "Une erreur s'est produite dans la boucle du test1" & vbCrLf & "je m'en vais faire la suivante!"
Resume Suivant1
GesErr2:
'Rien d'autre à faire, on sort, l'erreur sera invalidée
MsgBox "Une erreur s'est produite dans la boucle du test2"
End Sub
Oui mais encore une fois ça n'est pas prévu d'être utilisé dans un gestionnaire actif en plus d'être validé.On Error GoTo 0 Invalide dans la procédure en cours tout gestionnaire d'erreurs validé.
Pour moi le On erreur goto suivant aurait dû s'activer dans ces conditions.
Option Explicit
Public CasOk As Boolean, CasErr As Byte
'
Public Sub PrévoirCas(E As ErrObject, ParamArray Prévu())
Dim N As Long, Z As String
CasOk = E.Number = 0: If CasOk Then CasErr = 0: Exit Sub
For N = 0 To UBound(Prévu)
If E.Number = Prévu(N) Then CasErr = N + 1: Exit Sub
Next N
Z = "PrévoirCas Err"
For N = 0 To UBound(Prévu)
Z = Z & ", " & Prévu(N)
Next N
Z = Z & ", " & E.Number & vbLf & "Rem. " & N & ") " & E.Description
PressPapier = Z
MsgBox E.Description & vbLf & "_______________________________________________________" & vbLf & vbLf & """" & Z _
& """ a été mis dans le presse papier !", vbExclamation, "Débogage obligatoire d'erreur " & E.Number
Stop
End Sub
'
Property Let PressPapier(Z As String)
Dim DOb As New DataObject
DOb.SetText Z
DOb.PutInClipboard
End Property
Property Get PressPapier() As String
Dim DOb As New DataObject
DOb.GetFromClipboard
PressPapier = DOb.GetText
End Property
On Error Resume Next: Nom = VBP.Filename: PrévoirCas Err, 76: On Error GoTo 0
If CasOk Then
Sub test()
On Error GoTo Suivant1 'active la gestion des erreurs
' instruction
On Error GoTo 0 ' désactive le gestionnaire d'erreur
' suite d'instructions
: Suivant1
On Error GoTo 0 ' désactive le gestionnaire d'erreur
'
On Error GoTo suivant2 'active la gestion des erreurs
' instruction
On Error GoTo 0 ' désactive le gestionnaire d'erreur
' suite d'instructions
: suivant2
On Error GoTo 0 ' désactive le gestionnaire d'erreur
End Sub
Sub test()
Dim c As Range
Worksheets("Feuil1").Activate
On Error GoTo Suivant1
For Each c In Cells.SpecialCells(xlCellTypeFormulas, 23) ' contrôle des formules
Next c
MsgBox ("Boucle test1 terminée")
Suivant1:
If Err.Number <> 0 Then Resume Suivant2
Suivant2:
Debug.Print Err.Number 'Sera toujours 0 ici, qu'il y ait eu ou non erreur précédement
On Error GoTo Fin
For Each c In Cells.SpecialCells(xlCellTypeConstants, 23) ' contrôle des constantes
Next c
MsgBox ("Boucle test2 terminée")
Fin:
If Err.Number <> 0 Then MsgBox Err.Number & vbCrLf & Err.Description
End Sub
Sub test()
Dim c As Range
Worksheets("Feuil1").Activate
On Error Resume Next
For Each c In Cells.SpecialCells(xlCellTypeFormulas, 23) ' contrôle des formules
Next c
MsgBox IIf(Err, "Une erreur s'est produite dans la boucle du test1" & vbCrLf & _
"je m'en vais faire la suivante!", "Boucle test1 terminée")
Err = 0 'ou de nouveau : On Error Resume Next
For Each c In Cells.SpecialCells(xlCellTypeConstants, 23) ' contrôle des constantes
Next c
MsgBox IIf(Err, "Une erreur s'est produite dans la boucle du test1", "Boucle test1 terminée")
End Sub
Sub Test()
Worksheets("Feuil1").Activate
Boucle xlCellTypeFormulas, 1 'contrôle des formules
Boucle xlCellTypeConstants, 2 'contrôle des constantes
End Sub
Sub Boucle(x, n As Byte)
Dim c As Range
On Error GoTo 1
For Each c In Cells.SpecialCells(x)
Next c
MsgBox "Boucle test" & n & " terminée"
Exit Sub
1 MsgBox "Une erreur s'est produite dans la boucle du test" & n _
& IIf(n = 1, vbCrLf & "je m'en vais faire la suivante!", "")
End Sub
Sub Test()
Worksheets("Feuil1").Activate
Boucle xlCellTypeFormulas, 1 'contrôle des formules
If Err.Number <> 0 Then MsgBox "Erreur dans Boucle (appel 1)"
err.clear 'Facultatif ici
Boucle xlCellTypeConstants, 2 'contrôle des constantes
If Err.Number <> 0 Then MsgBox "Erreur dans Boucle (appel 2)"
End Sub
Sub Boucle(x, n As Byte)
Dim c As Range
Dim plg As Range
On Error Resume Next
Set plg = Cells.SpecialCells(x)
End Sub
Sub test()
Dim c As Range
Worksheets("Feuil1").Activate
On Error GoTo Suivant1
For Each c In Cells.SpecialCells(xlCellTypeFormulas, 23) ' contrôle des formules
On Error GoTo -1 ' réinitialise le gestionnaire d'erreur
MsgBox ("test1 ok")
'
Next c
Suivant1:
On Error GoTo -1 ' réinitialise le gestionnaire d'erreur
On Error GoTo Suivant2
For Each c In Cells.SpecialCells(xlCellTypeConstants, 23) ' contrôle des constantes
On Error GoTo -1 ' réinitialise le gestionnaire d'erreur
MsgBox ("test2 ok")
Next c
Suivant2:
On Error GoTo -1 ' réinitialise le gestionnaire d'erreur
'....
'....
End Sub