Impossible d'ouvrir un nouveau classeur tant qu'un Userform est actif.

Manta Lucapyr

XLDnaute Nouveau
Bonjour a tous.

Je rencontre un problème avec mon application Excel/VBA. Je bosse actuellement sur Excel 2000 dans le cadre d'un stage pour une boite qui me demande de lui créer un catalogue listant les outillages qu'elle possède.

En gros, j'ai pour consigne de permettre le tri et la recherche d'une référence, ainsi que l'ajout/retrait/modification de références sans accès direct au classeur, uniquement via des Userforms.

J'ai donc un Userform principal, en full screen, s'ouvrant au démarrage du classeur, et dont j'ai désactivé la croix rouge afin de " sécuriser " mon classeur. ( on ne peut le fermer que via un password. Je sais que ça ne tiendra pas 10 secondes si quelqu'un veut vraiment accéder au classeur, mais c'est plus pour éviter que des gens bidouillent un peu au hasard que pour une réelle protection. )

Mon soucis, c'est que je me suis rendu compte recemment que : tant que l'userform est actif, il est impossible de fermer le classeur Excel ( ça, j'ai pu le résoudre ), mais surtout d'en ouvrir un autre !

Je vois vaguement comment résoudre ce problème, mais pas comment le combiner à un petit verrouillage du classeur ( j'ai testé la protection des feuilles/classeur mais ça ne parait pas très efficace/pratique )




Une question anecdotique avec ça : j'utilise un Userform spécifique par catégorie de produit à rechercher ( associé à une feuille spécifique a chaque fois ) renvoyant les résultats dans un Userform commun.

J'ai donc créé des Userforms type a importer dans l'arborescence, dans lesquels il suffit de remplacer quelques variables pour les rendre fonctionnels afin de faciliter la tâche a ceux qui devront bidouiller mon catalogue après mon départ.

Mais mon responsable ( qui n'a pour ainsi dire aucune notion de VBA ) souhaiterais disposer d'une commande pour importer un de ces Userforms et accéder a son code directement via par exemple un bouton de mon Userform principal.
Etant encore relativement débutant ( disons novice éclairé pour être gentil ) en VBA, j'ignore si c'est possible. A votre avis ?
 

Manta Lucapyr

XLDnaute Nouveau
Re : Impossible d'ouvrir un nouveau classeur tant qu'un Userform est actif.

Hum... j'ai été limité par la taille maximale des posts on dirait...

Voilà grosso modo mon problème. J'espère avoir été clair, en me relisant je vois surtout une grosse tartine :/

J'ai recherché sur le forum mais n'ai pas trouvé mon bonheur, cette fois.

En tout cas un grand merci a vous, c'est mon premier post ici mais vous lire m'a déjà dépanné plus d'une fois ce dernier mois.

Voilà, en esperant ne pas avoir été trop brouillon et avoir respecté les règles du forum.

Cordialement, Manta.
 

Manta Lucapyr

XLDnaute Nouveau
Re : Impossible d'ouvrir un nouveau classeur tant qu'un Userform est actif.

Merci pour ta réponse Guiv.

C'est effectivement la solution que j'ai envisagée, mais la feuille derrière l'userform se retrouve du coup sans protection. J'appreciais le fait qu'on ne pouvait pas intéragir avec...

Au pire, est-il possible de rendre mon Userform impossible à déplacer ? Cela pourrait être une solution, combiné au showmodal = false.

Je suis désolé j'ai l'impression que mes questions sont complêtement c...nes :/
 

roro69

XLDnaute Impliqué
Re : Impossible d'ouvrir un nouveau classeur tant qu'un Userform est actif.

Bonjour a essayer; ceci bloque l'usf et enlève la croix de fermeture:
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Private sub UserForm_Activate()
Dim hWnd As Long, exLong As Long
hWnd = FindWindowA(vbNullString, Me.Caption)
exLong = GetWindowLongA(hWnd, -16)
If exLong And &H880000 Then
SetWindowLongA hWnd, -16, exLong And &HFF77FFFF
Me.Hide: Me.Show
End If
end sub
A++
 

Manta Lucapyr

XLDnaute Nouveau
Re : Impossible d'ouvrir un nouveau classeur tant qu'un Userform est actif.

Je n'ai absolument rien compris a ta sub, mais elle remplit parfaitement son office !

Merci beaucoup pour ton aide, il ne me reste plus qu'a trouver comment résoudre ce problème d'import d'Userforms :)
 

Manta Lucapyr

XLDnaute Nouveau
Re : Impossible d'ouvrir un nouveau classeur tant qu'un Userform est actif.

Damnation ! Je n'avais pas fait attention, en fait le problème est toujours un peu présent : Il est certes à présent possible d'ouvrir un nouveau classeur ou de fermer celui en cours alors que mon Userform est actif, mais pas de l'afficher ( sauf s'il est vierge, je ne comprend vraiment pas pourquoi ). Par contre, s'il comporte un Userform se lançant automatiquement au démarrage du classeur, celui ci s'affiche.

Aurais-je oublié de modifier une proprieté ? J'ai revérifié, mais je ne vois pas laquelle...

Auriez vous une idée pour me dépanner ?

Merci d'avance.
 

Discussions similaires

Réponses
19
Affichages
552

Statistiques des forums

Discussions
312 209
Messages
2 086 267
Membres
103 168
dernier inscrit
isidore33