Erreur // On Error GoTo

Bonjour,

J'ai un problème suer un "On Error Goto", en effet la ligne de code marche bien lorsqu'il y a une erreur. Cependant lorsqu'il n'y a pas d'erreur la ligne qui répond s'il y a une erreur marche aussi...Je ne comprends pas...

Sub Contact()

On Error GoTo errorHandler

If MsgBox("Voulez-vous mettre à jour la base de données ?", 36, "Confirmation MAJ") = vbYes Then

Application.DisplayAlerts = False
Application.ScreenUpdating = False

Sheets("Contact").Visible = True
Sheets("Contact").Select
ActiveSheet.Unprotect "l7p"

Workbooks.Open Filename:= _
        "???"

    Dim Last_Row1 As Long, Last_Row2 As Long
    Dim WB1 As Workbook, WB2 As Workbook
    Dim ws1 As Worksheet, ws2 As Worksheet

    Set WB1 = ThisWorkbook
    Set ws1 = WB1.Sheets("Contact")
    Set WB2 = Workbooks.Open("???")
    Set ws2 = WB2.Sheets("_DATA_MASTER")

    ws2.Range("B2:M7000").Copy
    ws1.Range("B2:M7000").PasteSpecial Paste:=xlPasteValues

    Sheets("Contact").Select
    Range("_SAP_DATA_0001[[#Headers],[Compte]]").Select
    ActiveWorkbook.Worksheets("Contact").ListObjects("_SAP_DATA_0001").Sort. _
        SortFields.Clear
    ActiveWorkbook.Worksheets("Contact").ListObjects("_SAP_DATA_0001").Sort. _
        SortFields.Add Key:=Range("_SAP_DATA_0001[[#Headers],[Compte]]"), SortOn:= _
        xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Contact").ListObjects("_SAP_DATA_0001").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

ActiveSheet.Protect "l7p"
Sheets("Contact").Visible = False
Sheets("CONSULTATION ATC").Select

MsgBox ("MAJ terminée")

Else
End If

errorHandler:
    ActiveSheet.Protect "l7p"
    Sheets("Contact").Visible = False
    Sheets("CONSULTATION ATC").Select
    MsgBox ("Erreur ! Vous n'êtes pas connecté au serveur")
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Exit Sub

Application.DisplayAlerts = True
Application.ScreenUpdating = True

End Sub

Bonjour,

Il faut mettre un "Exit Sub" avant les lignes de gestion d'erreur, sinon la macro va atteindre ces lignes, erreurs ou non.

Ou alors on doit pouvoir mettre:

If Not Err is Nothing then
    'lignes de gestion d'erreur
End If

Je n'ai pas testé le bout de code avec le test conditionnel, mais je trouve le Exit Sub plus simple

Bonjour,

Je voulais proposer le rajout de deux lignes de codes (marquées ici par des apostrophes).

....................
MsgBox ("MAJ terminée")

GoTo Etiquette ''''''''''''''''

Else
End If

errorHandler:
    ActiveSheet.Protect "l7p"
    Sheets("Contact").Visible = False
    Sheets("CONSULTATION ATC").Select
    MsgBox ("Erreur ! Vous n'êtes pas connecté au serveur")
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Exit Sub

Etiquette: ''''''''''''''''''''''

Application.DisplayAlerts = True
Application.ScreenUpdating = True

End Sub

Ainsi la macro repasse par l'instruction

Application.DisplayAlerts = True

Autrement il faudrait placer cette instruction avant le Exit Sub proposé par Ausecour.

Amicalement.

Top merci

Mieux vaut tard que jamais !

Amicalement.

Rechercher des sujets similaires à "erreur error goto"