IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

USF non modale se referme


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut USF non modale se referme
    Bonjour,
    J'ai un petit userform amodal qui me sert de menu pour lancer des useform de saisies.
    or j'ai beau l'avoir mis en modal 0, il se ferme aléatoirement lors de la fermeture des userform appelés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    'Appel de l'USF menu (dans un module)
    Sub Appel_Menu()
    Load UsF_Menu
    UsF_Menu.Show 0
    End Sub
     
    'L'USF Menu
    Private Sub UserForm_Initialize()
        Me.StartUpPosition = 3
    End Sub
     
    'un des sous USF appelé code dans module
    Sub Appel_Zoom()
    Load USF_Zoom
    USF_Zoom.Show
    End Sub
     
    'Fermeture de l'USF Zoom
    Unload Me
    comment puis-je améliorer le gestionde mon menu?
    Merci.

  2. #2
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 904
    Par défaut
    Bonjour,

    Il n'y a vraiment que ça en code ?
    Parce que sur ce que tu montres, il n'y a rien qui justifierait le problème.

    Par contre, pas certain que les "Load" servent à grand chose juste avant des "Show".

    Cordialement,

  3. #3
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut
    Merci pour ton retour,

    Bien sûr il ya du code entre, j'initialise un USF, j'affiche des données et je ressors.
    J'ai montré les séquences d'ouverture et de fermeture des USF.

    Pour le chargement des USF, entre ce qui sert et les bonnes pratiques on est parfois tanté de faire trop à la place de trop peu !
    donc habituellement je charge et j'affiche.
    En relisant le Tuto de Silky Road, pas une fois il ne parle de load.
    Je pense que je l'avais ajouté un jour suite à d'autre problèmes et conservé depuis dans mes pratiques.

    quoi q'il en soit je viens de supprimer mon load partout... et testé une dizaine de fois, opn dirait que mon menu reste affiché !
    JE ne sais pas si c'était ça le problème et si c'est robuste, on verra.

    Question subsidiaire, du coup à quoi sert le load ? si on peu s'en passer, car je ne vois pas l'intéret de charger un usf sans l'afficher, mais il doit bien y avoir des cas.

    merci
    Denis

  4. #4
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 904
    Par défaut
    Si cela refonctionne, tant mieux.

    A mon avis, le Load est présent pour charger un userform sans avoir à l'afficher, pour quand même lancer la procédure Initialize.
    Ce que fait le Show également, tu me diras. Mais j'ai déjà rencontré des codes de confrères où ils mettaient à jour des contrôles sur un userform sans pré-charger celui-ci.

    En gros, c'était ce genre de truc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub A()
    usf.textbox1.value = "Hello The World !"
    usf.show
    end sub
    Le soucis, c'est que l'Initialize n'est pas lancé dans ce cas de figure et cela peut engendrer des problèmes dans l'algorithme mis en place.
    Tu arrives vite avec des fonctionnalités qui sont, comme je les appelles, des "coups de poker".

    La bonne écriture aurait été la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ' Bon, c'est un peu inutile comme exemple mais c'est l'idée
    sub A()
    Load usf
    usf.textbox1.value = "Hello The World !"
    usf.show
    end sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' Version correcte
    sub A()
    usf.show 0
    usf.textbox1.value = "Hello The World !"
    end sub
    Cordialement,

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/05/2021, 15h14
  2. Réponses: 6
    Dernier message: 16/03/2017, 07h12
  3. Réponses: 4
    Dernier message: 13/06/2004, 15h28
  4. [debutant] JDialog non modal
    Par andresan dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 12/05/2004, 13h40
  5. Rendre une fenêtre modale non modale
    Par Smortex dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/03/2003, 17h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo