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 :

Coder une instruction VB pour une case d'option dans une Frame


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Par défaut Coder une instruction VB pour une case d'option dans une Frame
    Bonjour,

    Dans ma feuille Excel, j'ai inséré un contrôle ActiveX => Autres contrôles => Microsoft Forms 2.0 Frame.

    Dans cette Frame, j'ai inséré 4 cases d'options.
    Je voudrais coder des instructions VB sur ces cases d'options.

    Je bascule dans la fenêtre VB directement sur la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub NomDeMaFrame_Click()
    .

    Est-ce bien dans cette fonction (relative à la Frame) que je code ce qui concerne les cases d'options ?

    Est-il recommandé de renseigner l'attribut de propriété GroupName avec le nom de ma Frame pour ensuite manipuler les objets en écrivant par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomDuGroupName.NomDeMaCaseDOption.Value = False
    ?

    Sinon, quelle est la syntaxe adéquate ?

    Merci d'avance pour votre aide.

    Cdt.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 102
    Par défaut frame
    Bonjour,

    Peux tu préciser le contexte d'utilisation de la fenêtre ? En a tu besoin en permanence sur ta feuille ou bien juste en fonction d'une action précise ?

    Personnellement (mais tout dépend du contexte), je m'orienterai plutôt vers l'utilisation d'un userform VBA que j'afficherais par un bouton sur la feuille ou dans une barre d'outils ou encore un événement spécifique.

    l'UF étant à priori plus directement et facilement programmable au niveau des cases d'options.

    Cordialement.

    Bruno

  3. #3
    Membre averti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Par défaut
    Merci pour ta réponse.

    Oui l'idée est d'avoir la frame en permanence dans la feuille pour permettre à l'utilisateur de jongler entre les cases d'option et avoir un affichage différent en fonction de la case choisie.

    Du coup, j'aimerais avoir comment coder en VB pour ces cases sachant qu'elles font partie de la Frame.

    Merci d'avance.

  4. #4
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    Pour info, je ne suis pas super au point sur les frame dans une feuille de calcul.
    Je te fait part du fruit de ma recherche pour faire avancer le schmilblick. (
    )

    Passe en mode edition du frame.
    Cliques sur tes options, fait afficher les propriétés pour définir le NOM de l'option.

    Par contre là où je pèche c'est le déclencheur. Ce que j'ai trouvé c'est la perte de focus. Ce qui suppose qu'après avoir choisi l'option, il faut sortir du frame ... (en espérant qu'on te propose mieux)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Frame1_LostFocus()
            MsgBox Frame1.ActiveControl.Name
     
    End Sub
    Tu fais un test (if ou select case) sur le .ActiveControl.Name

  5. #5
    Membre averti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Par défaut
    Merci Jérôme.

    Pourquoi ne pas utiliser GotFocus au lieu de LostFocus ?

  6. #6
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    salut,

    Le get focus va s'executer avant que tu n'ai modifié tes options.

    Je pense que c'est mieux. Je change les options et après j'exécute le code.

  7. #7
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Newworld92
    La lecture et l'analyse de tes deux messages donnent à penser que tu es en train d' "exécuter" alors que tu es en mode création.
    Si tel est le cas, tu t'égares à divers titres (liste longue)
    Précise-nous ce qu'il en est

  9. #9
    Membre averti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Par défaut
    Merci Jérôme.
    Je vais donc essayer comme ça.

    Merci kiki29.
    J'ai regardé mais pour l'instant je n'utilise pas vraiment de UserForm en tant que tel (enfin je crois).
    Pour l'instant, je n'ai pas cherché à créer une fenêtre si c'est bien ce que représente la UserForm.
    J'utilise ma feuille Excel comme un cockpit et mes contrôles ActiveX sont donc permanents.
    Je garde quand même les 2 liens précieusement.

    Bonjour unparia,

    Le but est effectivement d'exécuter mais je suis bien obligé de passer par le mode Création pour gérer les différentes propriétés de mes objets par exemple (si je ne me trompe pas).

    Avec l'aide de Jérôme, j'arrive à avancer mais si tu as des conseils je suis preneur.

    Cdt.

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Le but est effectivement d'exécuter mais je suis bien obligé de passer par le mode Création pour gérer les différentes propriétés de mes objets par exemple (si je ne me trompe pas).
    - pour qu'une case d'option réagisse au clic, il faut lui affecter une macro. On lui affecte une macro en mode création en cliquant droit sur elle, puis en choisissant affecter une macro, puis en écrivant dans cette macro le code que l'on souhaite voir s'exécuter au clic
    - dès lors, si tu cliques dessus, en mode création, tu passes automatiquement et immédiatement en mode exécution
    - si tu as mis cette case d'option "dans" (elle n'y est pas vraiment, mais plutôt "derrière") un Frame Microsoft Forms 2.0 Frame, le seul fait de passer en mode exécution fera que ce Frame se mettra au-dessus de ta case d'option, l'occultera et la rendra donc dès lors inaccessible.

    On ne mélange pas les contrôles de Excel (ce qu'est une case d'option) et ceux de MsForms !
    De plus, un Frame Microsoft Forms 2.0 Frame cesse d'être un conteneur hors d'un UserForm

    Si j'ai bien tout deviné, tu cherches en fait à séparer des groupes de cases à cocher et à distinguer visuellement ces groupes par un "cadre".
    Tu peux y parvenir facilement (à la portée d'un débutant de chez débutant) en :
    - utilisant non un Frame, mais une "Zone de groupe" (un contrôle à puiser parmi ceux de formulaire, donc, et non parmi les activex
    - en mettant dans ce cadre tes cases à cocher à grouper (sélection multiple à faire touche CTRL enfoncée)
    - en sélectionnant ces cases à cocher (sélection multiple à faire touche CTRL enfoncée) puis clic droit ===>> groupe

  11. #11
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,
    De plus, un Frame Microsoft Forms 2.0 Frame cesse d'être un conteneur hors d'un UserForm
    En fait il peut être un conteneur mais dans ce cas, les procédures évènementielles des contrôles contenus ne sont plus accessibles.
    Pour poser des contrôles sur le Frame et afin que celui-ci devienne un conteneur, il faut faire clic droit sur le Frame, menu "Objet cadre" puis menu "Edition" là, la boite d'outils s'affiche et on peut poser des contrôles. Les seuls évènements accessibles sont ceux du Frame et dans ce cas, on ne peut pas dire que ce soit très flexible.

  12. #12
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Theze
    C'est vrai, mais ce ne seront alors plus des cases d'option, qu'il faudra y insérer, mais des activex optionbuttons.

  13. #13
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Oui tout à fait !

  14. #14
    Membre averti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Par défaut
    Merci à tous les 2.
    C'est effectivement des OptionButtons que j'utilise mais que j'appelais des cases d'option en pensant que c'était la traduction.

  15. #15
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je ne peux que répéter ma question dans ton autre fil; surtout en lisant cela:

    Oui l'idée est d'avoir la frame en permanence dans la feuille pour permettre à l'utilisateur de jongler entre les cases d'option et avoir un affichage différent en fonction de la case choisie.
    Et puis. même que dans l'onglet "Affichage" du ruban, tu peux te créer des affichages personnalisés.

    Parce que là, comme dirait mon amie m@rina, tu es en train de réinventer l'eau chaude.

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/12/2015, 14h29
  2. [XL-2010] Suppression d'une ligne dans une feuille A tout en garder les infos dans une feuille B
    Par sebastien_ofs dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/01/2015, 12h10
  3. Réponses: 13
    Dernier message: 23/05/2013, 20h38
  4. Réponses: 7
    Dernier message: 18/03/2011, 15h09
  5. Réponses: 1
    Dernier message: 31/08/2009, 22h48

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