"On error" sans effet sur erreur 1004

Résolu
Biorx8 -  
 Biorx8 -
Bonjour,
je suis en train de faire un VBA des données en provenance d'un autre fichier XLS sont reprises.
seul élément inhabituel, l'autre fichier est verrouillé à l'ouverture et un code m'est demandé pendant le déroulement du script.
dans le cas d'un mauvais mot de passe, excel me remonte une erreur 1004 (Erreur d'exécution 1004 La méthode "Open" de l'objet "Workbooks" a échoué)
j'ai ajouté une borne "on error" mais je me retrouve toujours avec cette erreur
.
.
détail du code
.
.
Function reprisemdp()
While True
Do
On Error GoTo Err_creamdp
Sheets("Mdp").Delete
Loop
Wend
'en cas de suppression d'un onglet une fenêtre apparait pour 
'demander la confirmation de l'action
'la "loop" si dessus à été ajouté pour rendre obligatoire la suppression de l'onglet
Err_creamdp:
On Error GoTo wrongpsw
        Sheets.Add After:=Sheets(Sheets.Count)
        ActiveSheet.Name = "Mdp"
        Workbooks.Open Filename:="D:\Utilisateurs\xnsf819\Desktop\testmdp.xlsx"
'le problème se pose ici, la ligne au dessus sert à ouvrir le fichier source
'et le mot de passe du fichier est demandé
'en cas d'erreur sur le mot de passe excel me sort une erreur 1004 au lieu de suivre 
'le scénario "on error"
        Windows("utilitaire admin SAP LP alpha.xls").Activate
        ActiveSheet.Range("A1").FormulaR1C1 = "=[testmdp.xlsx]Windows!RC"
        Range("A1").AutoFill Destination:=Range("A1:B1"), Type:=xlFillDefault
        Range("A1:B1").AutoFill Destination:=Range("A1:B31")
        Windows("testmdp.xlsx").Close
GoTo finmdp
wrongpsw:
retmdp = msgbox("Password non valide", vbRetryCancel, "erreur mot de passe")
If retmdp = vbRetry Then
GoTo Err_creamdp
Else
GoTo finmdp
End If
finmdp:
End Function



.
.
.
si l'un d'entre vous pouvait me donner des infos, ça m'aiderait beaucoup.

Merci à tous

1 réponse

  1. Biorx8
     
    solution trouvée en utilisant une autre méthode.... voila le code pour info
    merci à tous

    Function reprisemdp()
    While True
    Do
    On Error GoTo Err_creamdp
    Sheets("Mdp").Delete
    Loop
    Wend
    Err_creamdp:
    
            Sheets.Add After:=Sheets(Sheets.Count)
            ActiveSheet.Name = "Mdp"
    reprisemdp2
    
    End Function
    
    Function reprisemdp2()
    On Error Resume Next
    restartmdp:
            Workbooks.Open Filename:="D:\Utilisateurs\xnsf819\Desktop\testmdp.xlsx"
    If Err.Number = 0 Then
            Windows("utilitaire admin SAP LP alpha.xls").Activate
            ActiveSheet.Range("A1").FormulaR1C1 = "=[testmdp.xlsx]Windows!RC"
            Range("A1").AutoFill Destination:=Range("A1:B1"), Type:=xlFillDefault
            Range("A1:B1").AutoFill Destination:=Range("A1:B31")
            Windows("testmdp.xlsx").Close
        GoTo finmdp
    Else
        retmdp = msgbox("Password non valide", vbRetryCancel, "erreur mot de passe")
        If retmdp = vbRetry Then
        GoTo retry
        Else
        GoTo finmdp
        End If
    End If
    retry:
    Err.Clear
    GoTo restartmdp
    finmdp:
    End Function
    
    0