En cherchant chez nos amis anglophones, j'ai peut-être trouvé la solution à mon problème.
Voici la nouvelle fonction:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
Function UnprotectVBProject(WB As Workbook, ByVal Password As String) As Boolean
Dim vbProj As Object
Set vbProj = WB.VBProject
'Inutile si le projet est déjà déprotégé
If vbProj.protection <> 1 Then
UnprotectVBProject = True
Exit Function
Else
Set Application.VBE.ActiveVBProject = vbProj
'Saisie du mot de passe avec SendKeys, {ESC} sort de la fenêtre de saisie du mot de passe
SendKeys Password & "~~" & "{ESC}"
Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
If vbProj.protection <> 1 Then
UnprotectVBProject = True
Else
'Password n'est pas le bon
UnprotectVBProject = False
SendKeys "%{F11}", True
End If
End If
End Function |
Le {ESC} était la solution depuis le début...
Par contre, un truc que je ne comprends pas, mon code fonctionne sur la plupart des PCs, mais un en particulier me pose souci, et seulement sur un appel de la fonction (pas les 3 hein, sinon ça serait trop simple...). Mais bon je ne désespère pas, je trouverai bien quelque chose.
Partager