"On error" sans effet sur erreur 1004

Résolu/Fermé
Biorx8 - Modifié par Biorx8 le 2/12/2014 à 15:07
 Biorx8 - 2 déc. 2014 à 15:38
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

A voir également:

1 réponse

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