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 :

VBA - Comment simuler un clic sur un bouton du ruban ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2019
    Messages : 1
    Par défaut VBA - Comment simuler un clic sur un bouton du ruban ?
    Bonjour à tous,

    Je souhaiterais trouver, s'il existe, le code VBA qui permet de simuler un clic sur un des boutons du Ruban. Savez-vous si cela est possible ?

    Merci

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut bonjour
    bonjour
    exemple je clique sur le bouton souligné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub testcliccmbCtrl()
    CommandBars.FindControl(ID:=115).Execute
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CommandBars.ExecuteMso IdMso
    Il faut remplacer IdMso par l'identifiant du bouton du ruban. Tu peux connaître l'identifiant d'un bouton du ruban via Fichier/Options/Personnaliser le ruban, puis passer la souris sur le bouton souhaité dans une des deux listes. L'IdMso du bouton apparaîtra en infobulle.

    Par exemple, si tu veux ajouter un segment sur un tableau structuré, tu peux utiliser Application.CommandBars.ExecuteMso "TableSlicerInsert"

    Il est préférable d'utiliser ExecuteMso plutôt que la méthode de Patrick qui ne fonctionne pas pour tous les contrôles du ruban. Par exemple, pour placer un segment sur un tableau structuré, tu peux utiliser CommandBars.FindControl(id:=24998).Execute (encore faut-il connaître l'ID...), mais si tu veux "cliquer" sur "Lignes à bande" pour mettre/enlever l'alternance de couleurs sur les lignes d'un tableau structuré, tu devras utiliser Application.CommandBars.ExecuteMso "TableStyleBandedRows", car CommandBars.FindControl(id:=12480).Execute ne fonctionne pas et lève une exception.

    Sur https://www.microsoft.com/en-us/down....aspx?id=50745, tu peux télécharger un zip contenant une kyrielle de fichiers Excel reprenant les Noms des contrôles et leurs ID numériques.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    @pierre
    Attention tout de meme en cas de ribbon custom au controls qui reprennent les idmso de controls existants dans le xml ( a tester)
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    [...]( a tester)
    Ben, teste-le, alors, au lieu de venir soulever un problème qui n'existe pas


    La question initiale porte sur le fait d'activer par vba des actions du ruban. Ton code déclenche a priori l'action d'un contrôle de commandbar. Tu es donc encore une fois hors sujet! Dès lors, il me semble normal d'utiliser ExecuteMso.

    Si tu crées un bouton en lui attribuant un idMso, l'action qui sera réalisée sera identique à celle du bouton original. Un OnAction est inopérant sur un bouton créé en utilisant un idMso.

    Si tu rediriges l'action d'un bouton "natif" avec une commande dans le xml de ton ruban personnalisé, le bouton "natif" lancera l'action que tu as redéfinie.

    Tu ne peux pas avoir plusieurs boutons avec des idMso identiques qui agiraient de manière différente, ça mettrait à mal la définition même d'un ID, il me semble.

    Si tu rediriges l'action d'un idMso sur une procédure perso (possible en utilisant les noeuds Commands et Command dans le xml de ton ruban perso), le bouton qui utilise cet idMso lancera ta procédure perso, que ce soit par clic dans Excel ou par ExecuteMso en VBA.


    Bref, je ne comprends pas bien le sens de ta remarque et n'en saisis pas la pertinence
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Pierre
    exemple de copie dans un autre
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon startFromScratch="false">
     
        <tabs>
            <!-- Ajoute un nouvel onglet nommé OngletPerso -->  
            <tab id="OngletPerso" label="Mes fonctions préférées" visible="true">
     
                <!-- Ajoute le groupe standard 'bibliothèque de fonctions' -->
                <group idMso="GroupFunctionLibrary" />
     
            </tab>
        </tabs>
     
    </ribbon>
    </customUI>
    il me semble que ca embarque tout non?
    j'ai deux classeurs dans le quel j'ai copié le groupe des outils texte du tabhome dans mon onglet perso et je n'ai rien ajouté les fonctions sont opérantes
    je testerais demain a l'atelier
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ben oui ça embarque tout, et alors? Que cherches-tu à tester ou à prouver par là? Que n'as-tu pas compris dans mon message précédent?
    Citation Envoyé par Pierre Fauconnier Voir le message
    [...]
    Tu ne peux pas avoir plusieurs boutons avec des idMso identiques qui agiraient de manière différente[...]
    Dit autrement: Les boutons qui ont le même idMso enclenchent la même action.. Ca saurait difficilement être plus clair. Ca dit quand même bien que tu peux avoir plusieurs boutons avec le même idMso mais ils lanceront forcément la même action. Qu'est-ce que tu ne comprends pas dans cette phrase?

    Dans le classeur test-ruban, j'utilise le ruban perso suivant:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
      <ribbon startFromScratch="false">
        <tabs>
          <tab id="dvp" visible="true" label="DVP">
            <group id="groMso" visible="true" label="tests">
              <button idMso="TableSlicerInsert" size="normal" visible="true" />
            </group>
            <group id="groMso1" visible="true" label="tests 1">
              <button idMso="TableSlicerInsert" onAction="PersoSlicer" size="normal" visible="true" />
            </group>
          </tab>
        </tabs>
      </ribbon>
    </customUI>

    En allant sur l'onglet DVP du ruban, il y a donc deux groupes contenant chacun un bouton TableSlicerInsert. Dans le groupe groMso1, j'ai renseigné un onAction, mais, comme je l'ai déjà dit, OnAction est inopérant sur les idMso. Si tu es dans le tableau et que tu cliques sur un de ces boutons, ou sur le bouton natif d'insertion d'un segment du tab "Création tableau", ou sur le même bouton placé sur la barre d'accès rapide, tu pourras insérer un segment. Il en va de même si tu lances la macro SimulateMso => logique.

    Dans le classeur test-ruban-1, je redirige l'action de TableSlicerInsert grâce au ruban qui utilise une redirection de commande:
    Code xml : 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
    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
      <commands> 
        <command idMso="TableSlicerInsert" onAction="Test" /> 
      </commands>
      <ribbon startFromScratch="false">
        <tabs>
          <tab id="dvp" visible="true" label="DVP">
            <group id="groMso" visible="true" label="tests">
              <button idMso="TableSlicerInsert" size="normal" visible="true" />
            </group>
            <group id="groMso1" visible="true" label="tests 1">
              <button idMso="TableSlicerInsert" onAction="PersoSlicer" size="normal" visible="true" />
            </group>
          </tab>
        </tabs>
      </ribbon>
    </customUI>
    Dans CE classeur, TabSlicerInsert est redirigé vers la procédure Test. Que tu cliques sur le bouton natif, sur un des boutons présents dans l'onglet DVP ou sur le bouton d'ajout d'un segment que tu aurais mis sur la barre d'accès rapide, tu déclencheras la procédure Test. Idem si tu lances la macro SimulateMso de ce fichier (ça n'a évidemment pas de sens de faire cela, ceci dit).

    De plus, sauf à créer un ruban FromScratch, ça n'a pour moi pas de sens d'embarquer tout un groupe MSO dans un onglet perso.


    Je rappelle qu'au départ, tu parles de Application.CommandBars.FindControl(id:=...).Execute qui n'est pas une réponse valide puisque le demandeur parle expressément du ruban => Application.CommandBars.ExecuteMso ...
    Fichiers attachés Fichiers attachés
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [HTML] simuler un clic sur un bouton
    Par sebac dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 09/06/2009, 18h13
  2. comment simuler un clic sur un bouton en java
    Par kohan95 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 28/03/2009, 13h31
  3. Réponses: 6
    Dernier message: 18/12/2006, 15h49
  4. Simuler le clic sur le bouton OK d'une fenêtre
    Par msprittc dans le forum Delphi
    Réponses: 5
    Dernier message: 25/09/2006, 18h43
  5. [VB.NET]Simuler un clic sur un bouton
    Par olbi dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/03/2006, 11h46

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