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 :

Jongler entre 2 userForms (1 modal et l'autre pas) [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 129
    Points : 78
    Points
    78
    Par défaut Jongler entre 2 userForms (1 modal et l'autre pas)
    Bonjour

    J'ai 2 userforms.
    Userform1 est Non Modal
    Userform2 est Modal

    Le Userform1 est affiché,avec dans son Activate un select case
    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
    Private Sub UserForm1_Activate()
        Select Case role
            Case Is = "N2"
                Bp_01.Visible = True
                Bp_02.Visible = True
                Bp_03.Visible = True
                Bp_04.Visible = True
                Bp_05.Visible = True
            Case Is = "RH"
                Bp_02.Visible = True
                Bp_03.Visible = True
                Bp_04.Visible = True
                Bp_05.Visible = True
            Case Is = "CS"
                Bp_02.Visible = True
            Case Is = "N1"
                Bp_02.Visible = True
            Case Else
        End Select
    End Sub
    un bouton sur ce dernier me permet d'afficher le Userform2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Bp_Demo_Click()
        Me.Hide
        Userform2.Show
        Me.Show
    End Sub
    Dans mon userform2 j'ai un combobox qui affecte la variable Public "role" utilisé dans le select case de l'activate de mon userform1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub BpValid_Click()
        role = Cbx_Choix_Role.Value
        Unload Me
    End Sub
    Lorsque je click sur un bouton dans ce userform2, je souhaite qu'il se ferme et qu'il réactive mon Userfomr1. Mais je ne comprends pas pourquoi le Userfom1 ne s'affiche pas !

    Merci de votre aide.

  2. #2
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    tu pourrais déplacer le code du hide et du show.
    mettre le hide dans le load du userform2 et le load du form1 dans le close du form2
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Bp_Demo_Click()
        Me.Hide
        Userform2.Show
        Me.Show 'Place un point d'arrêt ici touche [F9] du clavier et refais le test.
    End Sub

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 129
    Points : 78
    Points
    78
    Par défaut
    Merci pour vos réponses..

    Robert:
    J'ai mis le point d’arrêt, a ce moment là les 2 userfoms sont masqué, un coup de F8 Userfom1 est visible un deuxième coup de F8 il disparait.

    Noko:
    C'est quoi pour toi le load du Userfom2 son initialize ou son activate ? et le close c'est ou ?

    Merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    oui mais vue que Usf1 est non modal il rend la main à l'appelant don si tu fais [F8] jusqu’au bout tu dois trouver qui le referme!

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 129
    Points : 78
    Points
    78
    Par défaut
    Ben Oui mon userfomm1 se referme et ce n'est pas ce que je souhaite!
    Comment le garder ouvert ?

  7. #7
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    Nako:
    C'est quoi pour toi le load du Userfom2 son initialize ou son activate ? et le close c'est ou ?
    Le load, c'est soit le initialize, soit le activate, peu importe dans ton cas.

    Le close, tu peux utiliser l'event terminate
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 129
    Points : 78
    Points
    78
    Par défaut
    Nako,
    J'ai bien essayé ta solution mais ce ne change rien à mon problème...

  9. #9
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    je me suis fais deux form très basique :
    1 form "usrModal"
    1 form "usrNotModal"

    1 bouton sur chaque

    Le code du bouton sur usrNotModal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton1_Click()
        Me.Hide
        usrModal.Show vbModal
        Me.Show
    End Sub
    Le code du bouton sur usrModal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
        Unload Me
    End Sub
    Ca fonctionne farpaitement de mon côté.

    là ou tu fais l'erreur, c'est que tu ne définis pas l'appel de ton écran comme modal. Donc, il est évident qu'Excel te fasse réapparaitre ton form1 après avoir affiché le form2 car il n'attends pas que form2 soit fermé pour continuer, vu que sur ta ligne usrForm.Show, tu ne mets pas le paramètre vbModal. Par défaut, c'est false, donc non modal.
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Il faut repasser le usf1 en modal et pour le refermer faire

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 129
    Points : 78
    Points
    78
    Par défaut
    j'ai Excel 2003
    J'ai moi aussi refait un fichier basique avec 2 userforms et en reprenant le code que tu me propose et ça ne marche pas...

  12. #12
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    compatible excel 2003
    Fichiers attachés Fichiers attachés
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 129
    Points : 78
    Points
    78
    Par défaut
    Merci
    Mais ton fichier toto.xls en pj les 2 userform son Modal...

    Ils ont tous les 2 leurs propriétés "ShowModal=True"....

    ce n'est pas ce que je souhaites...

    Une autre idée peut etre ?

  14. #14
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 129
    Points : 78
    Points
    78
    Par défaut
    Autant pour moi...
    Ton fichier marche trés bien Nako....

    Merci désolé j'ai testé un peu trop vite.... comment souvent!

  15. #15
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    Pour conclure, je rajouterai que :
    les propriété qui sont définit sur le petit encadré Nom : Nouvelle image bitmap.jpg
Affichages : 200
Taille : 100,3 Ko sont paramétrable dans le code. Toutes, sans exception.

    Le form principal a besoin d'être modal car c'est lui qui lance ton application. Ensuite, tous les auters form que tu lance, libre a toi de les mettre modaux ou pas, via le code ou via ce petit encadré.
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Jongler entre les Workbooks et WorkSheets
    Par lucie_e dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/08/2007, 13h31
  2. Réponses: 3
    Dernier message: 30/11/2006, 12h25
  3. Raccourci eclipse pour jongler entre 2 fichier
    Par root76 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 22/09/2006, 16h17
  4. [VBA-E] liens entre les userform et reduction des lignes de programme
    Par jamelie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/05/2006, 12h43
  5. [VBA-E]Pb de communica° entre module/UserForm[débutant]
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/03/2006, 09h44

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