"On error" sans effet sur erreur 1004
Résolu
Biorx8
-
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
.
.
.
.
.
si l'un d'entre vous pouvait me donner des infos, ça m'aiderait beaucoup.
Merci à tous
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
-
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