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 :

Affichage userform non modal


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 37
    Par défaut Affichage userform non modal
    Bonjour à tous !

    Je viens vous embêter avec une question concernant l'affichage des formulaires.

    Souhaitant pouvoir agir sur les curseurs afin de visualiser la page pendant que le formulaire est affiché je fais la commande : userform.show 0

    Les informations concernant l'userform non modal sont très difficile à avoir sur la toile donc je l'utilise sans forcément trop comprendre. (aide excel très light aussi d'ailleur).

    L'affiche de l'userform est dans une macro que j'apelle à partir de ma "macro principale".
    Seulement l'affichage de l'userform ne fonctionne pas. Si je met un msgbox juste après userform.show 0 je vois bien le formulaire mais aussitôt cliquer sur ok il disparaît.
    Ce qui est bizare c'est que lorsque j'appel seulement la macro qui lance l'userform l'affichage marche bien !


    Je n'ai peut-être pas été assez clair ou précis je reviendrai avec plaisir vous donner davantage d'information sur ce bien drôle de problème.

    Merci de votre lecture !

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Il faudrait voir le code complet pour pouvoir répondre, tu n'aurais pas une commande "userform.hide" qui masque le formulaire ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour,

    Dans les propriétés de ton USERFORM as-tu mis la propriété ShowModal = False
    Essaies pour voir.
    Sinon, comme le préconise Fring, n'hésites pas à mettre ton code ici.
    A+

  4. #4
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 37
    Par défaut
    Bonjour,

    alors en ce qui concerne le code :
    J'ai du code sur une feuille qui est apellé lors du clic sur un bouton sur cette feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Macro_Decoupage_Click()
    (ici j'ai une succession de macro que j'apelle qui sont placé dans des modules nommés "macro_secondaire" et "macro_tertiaire"
    ...
    ...
    et enfin j'apelle une dernière macro "testuser" placé dans un module nommé "UserForm"
    end sub
    Voici le code de testuser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub testuser()
    'pour les numéros de colonne
    trouver_num_col ==> une macro placé dans le module "macro_tertiaire"
    triage ==> une macro placé dans le module "macro_tertiaire"
    ' Et enfin j'apelle mon formulaire si je ne met pas le 0 (en modal quoi) tout marche bien, mais si je veux le lancer en non modal il ne s'affiche pas.
    UserForm1.Show 0
    End Sub
    Je ne vous joint pas le code des différentes macros puisqu'elles sont assez lourdes. Cependant je peux si il le faut vraiment le faire.


    PS : En navigant sur la toile pour trouver la solution à mon problème, j'ai cru comprendre que le faite d'activer des feuilles lors d'un programme pouvait empêcher la lecture d'un formulaire en non modal par la suite.
    Est-ce vrai ?

    Merci de votre lecture !

    je fait un edit pour vous dire que j'ai essayer de changer le showmodal dans les options du formulaire mais cela n'a pas marché.

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Tu n'as pas une procédure évènementielle dans le module de ton Userform ?
    Du style Userform.Initialize ou Userform.Activate

  6. #6
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 37
    Par défaut
    Si j'ai dans un userform_activate()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_activate()
    Suivant_Click
    End Sub
    Voici le code pour le bouton Suivant

    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
    21
    22
    23
    Private Sub Suivant_Click()
    'Je met cette condition pour que l'on ai pas à cliquer 100 fois sur précédent pour revenir à une erreur
    If UserForm1.TextBox1 <> "Il n'y a plus d'erreurs à replacer" Then
            Range("A2").Value = Range("A2").Value + 1
            If Cells(Range("A2").Value, Feuille_TLB_Non_Trouves.UsedRange.Columns.Count) > 0 Then
                UserForm1.TextBox1 = Cells(Range("A2").Value, 5)
            Else
                UserForm1.TextBox1 = "Il n'y a plus d'erreurs à replacer"
            End If
    'Ce petit bout de pgm afin d'éviter d'afficher dans la textbox une job description qui
    'à déja été orienté, donc la textbox affiche blanc.
    'Entre deux job description c'est pas très classe de tomber sur du blanc
            Do While UserForm1.TextBox1 = ""
                Range("A2").Value = Range("A2").Value + 1
                    If Cells(Range("A2").Value, Feuille_TLB_Non_Trouves.UsedRange.Columns.Count) > 0 Then
                        UserForm1.TextBox1 = Cells(Range("A2").Value, 5)
                    Else
                        UserForm1.TextBox1 = "Il n'y a plus d'erreurs à replacer"
                    End If
            Loop
    End If
     
    End Sub
    Je ne sais pas si cela va vous avancer.
    Peut-être que vous pourrez repérer quelques fonctions que j'utilise et qui empêche par la suite l'affichage...

Discussions similaires

  1. Affichage userform non modal
    Par Vincent79 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/02/2012, 21h58
  2. Pb référence / userform non-modal
    Par DARKALANE dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 01/09/2009, 21h03
  3. [Toutes versions] Userform non modal = plantage d'excel
    Par youn1096 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/05/2009, 16h39
  4. [E-02] Comment garder un Userform non Modal affiché ?
    Par Frutchy dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 23/12/2008, 02h36
  5. UserForm non modal mais arrêtant la macro
    Par oohcalme dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2008, 11h11

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