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 :

Utilisation de frames avec commandbutton


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 197
    Points : 50
    Points
    50
    Par défaut Utilisation de frames avec commandbutton
    Bonjour à toutes et à tous,

    Voilà j'aurai une petite question s'il vous plait. J'ai un premier userform qui utilise des données d'une feuille. Puis dans cet userform j'ai 2 bouton (commandbutton1 et commandbutton2). Puis j'ai un autre userform, et j'aimerai qu'il prenne en compte si j'ai appuyé sur tel ou tel bouton, pour qu'il fasse telle ou telle action.
    En fait, mon deuxième userform possède 2 frames, et je souhaite lui dira, si le bouton 1 est sélectionné, je rend visible le frame 1, et inversement pour le bouton 2.
    j'ai essayé mais le souci c'est qu'il m'affiche le frame 1 puis le frame 2.

    Voilà, j'espère avoir été claire.

    Cordialement

  2. #2
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Bonjour,

    Une solution parmi tant d'autres :

    Hypothèses:
    • La 1ère UserForm s'appelle UserForm1 et la 2ème UserForm2,
    • Les boutons sur UserForm1 s'appellent respectivement CommandButton1 et CommandButton2,
    • Il existe un 3ème bouton sur UserForm1 qui permet d'afficher UserForm2 et s'appelle CommandButton3,
    • Les frames sur UserForm2 s'appellent Frame1 et Frame2.


    Principe
    On va définir dans UserForm1 une variable qui mémorisera le dernier bouton sur lequel l'utilisateur a appuyé.
    Lors de l'affichage de Userform2, il n'y aura plus qu'à vérifier l'état de cette variable pour savoir quelle Frame afficher.

    Code
    Nous y voici. Dans le code dédié à UserForm1, ajouter le texte 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
    24
    25
    26
    Private DernierBouton as String
     
    Private Sub CommandButton1_Click()
        DernierBouton="Bouton1"
    End Sub
     
    Private Sub CommandButton2_Click()
        DernierBouton="Bouton2"
    End Sub
     
    Private Sub CommandButton3_Click()
        Load UserForm2
        If DernierBouton="Bouton1" Then
            UserForm2.Frame1.Visible=True
            UserForm2.Frame2.Visible=False
        ElseIf DernierBouton="Bouton2" Then
            UserForm2.Frame1.Visible=False
            UserForm2.Frame2.Visible=True
        Else
            'Gérer ici le cas où l'utilisateur n'a appuyé sur aucun des 2 CommandButton
            'Si UserForm2 ne doit pas être affiché dans ce cas, ajouter les deux instructions suivantes :
            'Unload UserForm2
            'Exit Sub
        End If
        UserForm2.Show
    End Sub
    En fonction de l'agencement des objets sur UserForm2, il peut être utile de compléter les instructions 'UserForm2.Frame#.Visible=XXX' par 'UserForm2.Frame#.Enabled=XXX'.
    Tout ceci doit donc être adapté selon vos besoins.

    EDIT: Ce code n'est valable que si vous n'appelez UserForm2 que depuis un seul endroit (dans mon exemple, par clic sur CommandButton3). Si tel n'est pas le cas, précisez le dans votre réponse.

    Cdt

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    En fait, je crois que je me suis mal exprimée mais c'est de ma faute.
    J'ai un 1er userform qui enregistre des informations dans une feuille Excel avec 2 checkbox (checkbox1 et checkbox2). Puis j'ai un userform qui récupère les informations entrées avec le 1er userform et qui les place au bon endroit. Ensuite, j'ai un 3ème userform pour reconsulter et après plus de détail. Enfin mon userform suivant doit savoir si j'ai coché la checkbox1, la checkbox2 ou les 2 pour afficher dans cet userform le bon frame (suivant le choix dans le 1er userform).

    J'espère avoir été un peu plus claire et désolé pour le premier commentaire. Merci Ben_L pour ta réponse rapide.

  4. #4
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    OK, je ne voyais pas les choses comme cela.

    En supposant que vous n'avez pas de problème pour affecter des valeurs à vos CheckBox, vous pouvez utilisez le code suivant pour UserForm3 (celle qui doit vérifier l'état des CheckBox) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Initialize()
        If Not Feuil1.Shapes("CheckBox1").OLEFormat.Object.Object.Value Then
            Frame1.Visible = False
        End If
        If Not Feuil1.Shapes("CheckBox2").OLEFormat.Object.Object.Value Then
            Frame2.Visible = False
        End If
    End Sub
    Tout cela à condition que vos CheckBox se trouvent sur la feuille Feuil1 bien sûr

    Cdt

  5. #5
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    Et cela marche aussi si mes checkbox sont dans un userform? car je vois Feuil1.?

    Merci pour ta réponse.

  6. #6
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Si les CheckBox sont sur un autre UserForm, c'est encore plus simple !

    En supposant que les CheckBox se trouvent sur UserForm1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Initialize()
        If Not UserForm1.CheckBox1.Value Then
            Frame1.Visible = False
        End If
        If Not UserForm1.CheckBox2.Value Then
            Frame2.Visible = False
        End If
    End Sub
    Ce code ne fonctionnera toutefois que si UserForm1 est toujours ouverte au moment où tu cherches à initialiser la 2ème UserForm (celle qui contient les Frame).

Discussions similaires

  1. [XL-2010] utiliser la scrolbar d'un Frame avec la mollete de la souris
    Par norman5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/04/2012, 10h40
  2. Ascenseur avec utilisation de frame
    Par jonnyboy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/06/2011, 16h59
  3. Utilisation du frame buffer avec Nvidia
    Par HNT dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 05/07/2006, 12h47
  4. utilisation de dll avec diverses compilateurs
    Par Thylia dans le forum C++
    Réponses: 30
    Dernier message: 21/10/2004, 16h30
  5. Utiliser Borland C++ avec Emacs sous Windows
    Par Eikichi dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 02/03/2003, 08h40

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