Afficher un MessageBox pour dire :"Fermez votre Userform pour continuer."

Bonjour à tous,

Voici mon formulaire :

image

« Tant que je ne ferme pas mon formulaire, je ne peux rien faire d'autre dans mon classeur, il prime sur le reste. » (ça vient de AuSecour, un utilisateur passionné du forum : c'est bien dit, alors je l'ai copié-collé).

Mon problème est qu'il m'arrive de l'oublier, alors, je m'inquiète un peu en cliquant sur mes onglets du bas de ma feuille sans résultat avant de me rendre compte que je dois fermer mon formulaire pour continuer (un petit "ouf !" après ça...).

Ma question est : Est-il possible d'afficher un message d'alerte (MessageBox) qui dirait : "Veuillez fermer votre formulaire pour continuer, SVP." lorsque je clique ailleurs ?

Merci de votre aide.

Bonjour chrisblues,

Le message que tu voudrais mettre n'apparaitra qu'avec le formulaire.

il vaut mieux bien placer les instructions show me (pour l'ouvrir) et unload me (pour le fermer) dans le code.

Cdt

Bonjour,

Par défaut, ton formulaire s'affiche en mode modal bloquant toute application. Mais tu peux l'afficher aussi en mode non modal, ce qui permettra à toute application de s'exécuter :

UserForm1.Show vbModeless

Bonjour Fronck et Thev,

Oui, Fronck, en effet, le message d'alerte ne peut apparaître que sur le formulaire ou à côté, comme ci-dessous (un montage de jpg...)

image

C'est ce que je souhaiterais... Maintenant, comme tu le suggères, je peux aussi mettre l'instruction unload après chaque mouvement (versement ou retrait), mais j'ai quand même envie d'essayer l'apparition du message d'alerte, pour voir...

Pour Thev, j'ai vu cette possibilité d'adjoindre l'instruction vbModeless à l'ouverture du formulaire, justement dans le post de AuSecour que j'ai cité dans mon précédent message, pour pouvoir continuer sans être bloqué par le formulaire. Mais, hem, je craindrais trop une manipulation hasardeuse tant que le formulaire reste ouvert, il vaut mieux éviter toute intervention intempestive : je préférererais le quitter.

Merci de votre message.

Je reste sur mon idée de message d'alerte pour l'instant... Merci à tous.

Bonjour à tous,

Je n'ai pas d'autre réponse que celles de Fronck et Thev ? Est-ce que ça veut dire que ce n'est pas possible ?

Bonjour à tous,

tu peux essayer de mettre çà en vba sur les différentes pages

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:Z1000")) Is Nothing Then
        MsgBox "Veuillez fermer le formulaire pour continuer."
    End If
End Sub

Mais je vois pas trop l'intérêt.

Cdt

Bonjour Fronck,

J'ai installé ta procédure dans le module où est le bouton de commande qui permet l'apparition du formulaire.

Après avoir lancé ma page et cliqué sur ce bouton et donc avec le formulaire sur mon écran, j'ai cliqué sur mes onglets en bas de l'écran : rien ne change, le message d'alerte "Veuillez quitter le formulaire pour continuer, SVP." ne s'affiche pas.

Qu'est-ce que je fais ?

Merci de ton aide.

Bonjour ChrisBlues, Fronck,

La dernière macro proposée ne doit pas être inscrite dans un module. Car c'est un code pour les feuilles (Worksheet).

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Ensuite il faut cliquer sur une cellule de la feuille pour que l'événement puisse être intercepté. Pas que sur l'onglet.

Bonjour Xcellus,

Merci pour la précision. Par contre le message continuera aprés la fermeture du formulaire.

Chrisblues, il faut remplacer le code donné par :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A1:Z1000")) Is Nothing Then
    Range("R2").Value = Target.Row
If UserForm1.Visible = True Then MsgBox "Tu le fermes quand ton formulaire >< ?"
End If
End Sub

Et comme l'a dit thev, avoir l'ouverture du formulaire avec çà :

UserForm1.Show vbModeless

Cdt

1

Bonjour Fronck et X Cellus,

Bon... C'est presque ça !

Sauf que, le MessageBox apparaît à chaque fois que je valide un versement ou un retrait... A ce moment précis, ce n'est absolument pas utile.

En outre lorsque je clique sur le "Ok" du MessageBox, il insiste en réapparaissant encore deux fois.

Et apparemment, le vbModeless, je crois que je peux m'en passer : le résultat est le même...

Bref, le MessageBox se montre 'très présent" ! Lol !

La solution n'est pas loin d'être trouvée.

Je vous remercie de votre implication et de votre aide.

Bonjour,

Le mieux est de pouvoir fermer le formulaire avec unload me, et de le réouvrir facilement, avec un clic droit par exemple, avec ce code dans workbook:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    If Target.Row < 500 And Target.Column < 500 Then
        Cancel = True 'empêche le menu contextuel lié au clic du bouton droit
        UserForm1.Show 'affiche l'UF
    End If 'fin de la condition
End Sub

Bonsoir ChrisBlues, Le Forum,

La solution n'est pas loin d'être trouvée

Avec cette méthode, tu seras moins étourdi! Tu pourras toujours essayer de cliquer sur les onglets...

9classusfmsg.xlsm (21.38 Ko)

Bonjour Xcellus,

je connaissais pas .

Application.Visible = False ' cache excel

Salut Fronck,

Et bien maintenant tu la connais...

Mais ne pas oublier de faire l'inverse avec True.

Je voudrais pas que tu crées un fil sur le Forum. A cause d'X Cellus j'ai perdu Excel.

en sujet ? " A cause d'X Cellus j'ai perdu Excel"

Voir ce que diraient les modos.

Bonjour Fronck et X Cellus,

Fronck, oui, c'est envisageable comme solution : je verrai à l'usage si elle se révèle être satisfaisante...

X Cellus, surprenante, cette disparition de l'arrière-plan avec l'apparition du formulaire : pourquoi pas ? Peut-être un peu déstabilisante au début ("Où est passé, mon tableau derrière ?" etc.). Là encore, je vais voir ce que ça donne à l'usage, mais ça fonctionne.

Merci à vous.

PS : j'apprends beaucoup avec vos solutions...

Rechercher des sujets similaires à "afficher messagebox dire fermez userform continuer"