Showmodal

Bonjour,

J'ai modifié le mode ShowModal (True > False) d'un userform afin de pouvoir accéder et afficher une feuille en arrière plan sur les conseils de Rafja . Cette modification a bien résolu mon problème, mais depuis j'ai remarqué que l'affichage d'un messagebox ne fonctionnait plus comme avant.

Je m'explique, j'utilise une messagebox personnalisable qui affiche 2 boutons Type1 et Type2 ce qui fonctionne avec ShowModal =True et affiche a la place 2 boutons Oui et Non lorsque je modifie ShowModal > False.

J'aimerai savoir la cause et surtout comme remédier à ce problème tout en gardant la fonctionnalité d'affichage en arrière plan,

Cdlt

'Appel de la fonction MsgBox Personnalisable
     MonMessage = "Quel type de réparation voulez-vous Archiver ???:" & vbLf & vbLf & "Type1  ou    Type2"
    Rep = MsgBoxPerso(MonMessage, "Choix Archivage", vbQuestion, "Type1", "Type2", True)
            Select Case Rep
        Case 0
        ' Traitement (éventuel) si Annulation
        ' ...
        Case 1
        ' Traitement si réponse = "Type1"

Bonsoir,

Ta MsgBoxPerso n'est pas la fonction MsgBox mais une fonction que tu as créée, que tu ne nous fournis pas... Il serait bon de la fournir, de même que son support, ainsi que toutes les infos utiles, pour que l'on puisse examiner le problème.

Cordialement.

Bonjour Mr Ferrand,

Je te prépare tout ça.

En te remerciant.

Cdlt

Pilougne

Bonjour,

Voici le fichier en PJ.

Cdlt.

29showmodal.zip (15.82 Ko)

Je ne te garantis rien ! Il va me falloir étudier préalablement le domaine des API auxquelles tu fais appel, savoir de quelles façons tu les utilise, et déterminer ce qui empêche la modification du libellé des boutons... Il peut arriver que je trouve avant d'avoir compris comment cela fonctionne... mais cela relèvera d'une bonne part de hasard chanceux...

Il me semble que tu aurais pu mieux maîtriser la chose en utilisant un Userform pour fabriquer ta boîte à message.

Mais pourquoi as-tu besoin d'un Userform non modal ?

Cordialement.

Bonjour MFerrand,

Je te remercie pour ton aide, j'utilise le mode modal juste pour avoir en arrière plan la feuille à laquelle je fais référence afin de voir les modifications que j'y apporte et autres avant la fermeture de l'userform.

Cdlt

Pilougne

Bonjour,

Cette utilisation étant marginale, est-il possible de modifier la valeur ShowModal de l'userform durant l’exécution du code afin d'afficher le bon libellé des boutons.

Cdlt

Tu peux définir à l'affichage, il faut donc masquer le Userform pour le réafficher en définissant sur modal ou non modal.

Tu ajoutes dans ton Userform un bouton bascule (ToggleButton)

tu laisses dans la fenêtre de propriétés les valeurs par défaut : Value sur False et Caption, tu inscris Modal,

(tu veilles à ce que la propriété par défaut ShowModal du Userform soit à True)

et tu places le code suivant :

Private Sub ToggleButton1_Click()
    Me.Hide
    With ToggleButton1
        If .Value Then
            .Caption = "Non Modal"
            Me.Show vbModeless
        Else
            .Caption = "Modal"
            Me.Show vbModal
        End If
    End With
End Sub

Le Userform s'étant ouvert en modal, quand tu appuiera sur le bouton, il prendra un aspect enfoncé, son libellé deviendra Non Modal et le Userform passe en non modal. Un nouvel appui, le bouton se rebombe, libellé devient Modal et le Userform passe en Modal.

Cordialement.

Bonjour MrFerrand,

Etant en Cp je n’ai pas le fichier final pour faire le test, mais je vous tiens au courant.

Cependant n'est-il pas possible de changer de mode automatiquement sans un bouton?.

Je n'arrive pas a comprendre pourquoi dans certains cas on peut afficher une feuille en arrière plan d'un Userform sans changer le mode ShowModal alors que d'en d'autres non??

Cdlt

Si tu es en mode Modal (qui rappelons-le est la situation normale pour un Userform, de façon que l'utilisateur ne puisse passer à autre chose sans que le Userform soit fermé (ou masqué), tu ne peux changer de mode qu'à l'affichage du Userform, il faut donc pour cela le masquer pour le réafficher avec un mode modifié.

Je t'ai défini le codage d'un bouton qui permet de passer alternativement d'un mode à l'autre. Un bouton n'est certes pas nécessaire pour réaliser cet opération, mais un "automatisme" doit être déclenché par un évènement, il faut donc savoir quel est l'évènement correspondant à ton besoin de changement pour voir s'il peut être utilisé à cette fin...

Cordialement.

Bonjour Mr Ferrand,

Je viens de modifier le code, j’ai juste désactivé le mode Showmodal une fois le message affiché et le tour est joué.

Merci encore et bonne fin de journée.

Cdlt

Bonne continuation.

Rechercher des sujets similaires à "showmodal"