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.
Mieux vaut tard que jamais !
Amicalement.