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 :

Manipuler des ActiveX dans une Frame Activex [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    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
    Points : 25
    Points
    25
    Par défaut Manipuler des ActiveX dans une Frame Activex
    Bonjour,

    Je vais essayer de décrire précisément mon besoin mais n'hésitez pas à me demander plus de détails.

    J'ai un fichier Excel avec 2 feuilles.
    Dans la 1ière feuille, un bouton me permet de basculer dans la 2ième feuille.

    Cette 2ième feuille contient un contrôle ActiveX de type Microsoft Forms 2.0 Frame.
    A l'intérieur de cette Frame se trouvent des contrôles de type OptionButton.

    Je cherche à activer l'OptionButton de ma Frame qui porte le nom correspondant au contenu d'une variable globale que j'ai renseignée dans la 1ière feuille. Ce, dès l'ouverture automatique de la 2ième feuille.

    Pour ce faire, je suppose que je dois coder dans la procédure Private Sub Worksheet_Activate() (de ma 2ième feuille) un événement consistant à cliquer sur l'OptionButton (de ma Frame) qui m'intéresse.

    Je suppose qu'il va falloir faire appel à .OLEObjects mais je suis complètement perdu.

    Je ne sais pas si c'est très clair.

    Merci d'avance pour votre aide.

    Cdt.

  2. #2
    Membre averti Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Points : 356
    Points
    356
    Par défaut
    Bonsoir,
    Il suffit seulement de jouer sur la valeur de l'une des cellules liées de vos contrôles OptionButton (True ou False) c.à.d les cellules que vous auriez spécifié dans la propriété LinkedCell des boutons d'Options.

    Bien cordialement.
    Entre la canne à pèche et le poisson c'est certainement la canne que je choisirais, puis apprendrais à m'en servir.
    Si on vous souffle une solution au complet c'est que vous n'auriez rien compris du problème.
    Consultez la , de forte chances que votre problème y figure et c'est plus vite que de poser une question et en attendre la réponse.
    FAQ Excel: http://excel.developpez.com/faq/

  3. #3
    Nouveau membre du Club
    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
    Points : 25
    Points
    25
    Par défaut
    Merci MXLRATOR pour votre réponse.

    J'ai peur que ce soit plus compliqué ou bien je n'ai pas bien compris.

    J'ai appris via un autre de mes posts à balayer les contrôles ActiveX de type OptionButton que j'avais directement implantés sur ma feuille Excel avec la boucle suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        With ActiveSheet
             For i = 1 To 36
                If .OLEObjects(i).progID = "Forms.OptionButton.1" And .OLEObjects(i).Name <> "OptionButton" & i Then
                    .OLEObjects(i).Object.Value = False
                End If
            Next
        End With
    Est-ce que, de façon similaire, ma Frame (Microsoft Forms 2.0) satisfait la condition .OLEObjects(i).progID = "Forms.Frame.1" ?

    Autre question...
    Les OptionButton qui m'intéressent sont implantés dans ma Frame.
    C'es-à-dire que je me suis mis en mode Création dans ma feuille Excel puis j'ai cliqué droit sur ma Frame et ai choisi Objet Cadre => Edition.
    Là j'ai de nouveau cliqué droit sur ma Frame et ai choisi Boîte à outils où j'ai pioché l'objet Bouton d'option en plusieurs exemplaires.

    Je cherche donc à manipuler les boutons d'option qui se trouvent dans ma Frame.

    Dans quel événement puis-je atteindre ces boutons d'option et avec quelle syntaxe (pour par exemple activer l'un d'eux précisément d'après son nom) ?

    Merci d'avance pour votre aide.

    Cdt.

  4. #4
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,
    Citation Envoyé par Newworld92 Voir le message
    Bonjour,

    Dans la 1ière feuille, un bouton me permet de basculer dans la 2ième feuille.

    Pourquoi un bouton ? Un clic sur le nom de la feuille fait très bien la job ?




    Cette 2ième feuille contient un contrôle ActiveX de type Microsoft Forms 2.0 Frame.
    A l'intérieur de cette Frame se trouvent des contrôles de type OptionButton.


    Cdt.
    Pourquoi sur une feuille et pas sur un UserForm ?

    Si c'est juste parce l'UserForm ouvert empêche de travailler sur la feuille; tu peux tout simplement l'ouvrir en mode non-modal, en utilisant le paramètre VBmodeless.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Membre extrêmement actif
    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
    Points : 12 422
    Points
    12 422
    Par défaut
    Si (et seulement si) un contrôle nommé "le_contrôle" a bien été placé DANS le Frame nommé Frame1, on s'y réfère de deux manières possibles :
    1) la plus orthodoxe explicite la collection utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Frame1.controls("le_contrôle")
    2) celle que je n'aime pas et qui n'est qu'une "bonté" de VBA :
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #6
    Nouveau membre du Club
    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
    Points : 25
    Points
    25
    Par défaut
    Merci beaucoup unparia.
    La 1ière option fonctionne parfaitement.

    Pourrais-tu préciser comment je rends dynamique la syntaxe, stp ?

    Je veux dire que je voudrais ne pas mettre en dur le nom du contrôle mais utiliser le contenu d'une variable.

    J'ai essayé Frame1.controls( & MaVariable) mais VB n'aime pas du tout.

    Merci d'avance.

    Cdt.

  7. #7
    Membre extrêmement actif
    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
    Points : 12 422
    Points
    12 422
    Par défaut
    Oh !
    Bon ... (mais, là ...)
    Soit la_variable la variable en cause
    l
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    la_variable = "nom_du_contrôle"
    Frame1.Controls(la_variable) ' se réfère au contrôle en cause
    Je crains que tu ne confondes ce forum avec un apprentissage pas à pas ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  8. #8
    Nouveau membre du Club
    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
    Points : 25
    Points
    25
    Par défaut
    Merci Clément pour tes réponses (la 1ière m'a bien amusée).

    Effectivement le clic sur la feuille 2 est plus simple mais c'était juste pour illustrer le contexte.
    En réalité ma feuille 1 contient 12 boutons (1 par mois de l'année).
    Chaque bouton renvoie à une feuille qui correspond au dernier jour du mois qui précède le mois cliqué.
    Exemple : pour 2016, je clique sur le bouton Avril de la Feuille 1, je bascule sur la feuille Jeudi de mon fichier parce que le dernier jour du mois de mars est un jeudi.
    Comme tu l'auras compris, j'ai 12 boutons qui renvoient vers 7 feuilles possibles (les 7 jours de la semaine).

    Pour la 2ième remarque, je la garde dans un coin de ma tête.
    Disons que pour une V2, cela sera une très bonne idée mais pour autre chose que la Frame qui m'intéresse actuellement.
    Je garderai l'idée pour développer un cockpit (celui des boutons des 12 mois, ma Feuille 1 donc). Comme ça, j'aurai une fenêtre ouverte constamment pour jongler avec les mois sans devoir revenir à ma Feuille 1.

    Encore merci à toi.

  9. #9
    Nouveau membre du Club
    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
    Points : 25
    Points
    25
    Par défaut
    MERCI unparia.

    Il faudra que j'éclaircisse quand est-ce qu'on utilise & pour une variable et quand est-ce qu'on peut s'en passer.
    Si tu as la réponse, ça m'intéresse.

    En tout cas, merci car ta réponse m'est très utile.

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

Discussions similaires

  1. [XL-2010] Comment accéder à plusieurs toggle button dans une frame ActiveX
    Par hzdvd dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 29/09/2013, 18h44
  2. Récupérer des click dans une frame
    Par zooffy dans le forum ASP.NET
    Réponses: 0
    Dernier message: 15/03/2011, 17h37
  3. Manipulation des objets dans une session
    Par facilus68 dans le forum Hibernate
    Réponses: 5
    Dernier message: 28/12/2007, 14h02
  4. Afficher des panels dans une frame
    Par doons dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 20/07/2007, 08h07
  5. Comment Manipuler des objets dans une liste de type TList ?
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 1
    Dernier message: 02/11/2006, 15h40

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