Bonsoir,
je ne sais pas ce que tu as finalement fabriqué...
Une suggestion, donc :
En lieu et place de la fonction FindWindowA :
Donne le focus à ta fenêtre (ton UserForm) et utilise la fonction GetActiveWindow
ainsi :
dans la partie générale :
Public Declare Function GetActiveWindow Lib "user32" () As Long
et dans l'évènement Initialize :
1 2 3 4 5 6 7
| Private Sub UserForm_Initialize()
Dim hSysMenu As Long
Dim leHwnd As Long
leHwnd = GetActiveWindow
hSysMenu = GetSystemMenu(leHwnd, False)
RemoveMenu hSysMenu, &HF010&, &H0&
End Sub |
Essaye (je n'ai pas mon portable avec Excel sous la main)...
Et laisse ton ScreenUpdating à True pendant cette opération, hein ...
et dis-nous ...
Edit : je viens en outre de tester chez mes voisns et avec différentes versions d'Excel le tout 1er code (avec FindWindowA) ===>> aucun souci !
J'en viens à me demander si ta fenêtre active (le UserForm) est bien celle dont le nom est IHM_APPORT (puisque tu passes comme argument IHM_APPORTCaption) ! D'ailleurs, à ce propos, tu ne commetrais pas d'erreur en remplaçant IHM_APPORT.Caption par Me.Caption !!!
Si tu crois que tu vas pouvoir agir sur une fenêtre non active, c'est là ton erreur 
Conclusion : faut pas utiliser la vitesse supérieure si l'on ne maitrise pas celle inférieure ...
Partager