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 :

Sélectionner une feuille (variable) via une Commandbar [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 17
    Points
    17
    Par défaut Sélectionner une feuille (variable) via une Commandbar
    Bonjour à tou(te)s,

    Malgré plusieurs recherches sur forums & tuto, je n'arrive pas à trouver de solution.

    Je souhaiterais créer des menus personnalisés, et un bouton par feuille du classeur permettant de sélectionner la feuille concernée (107 feuilles au total, répartis en 10 catégories qui constituent les sous-menus). J'ai réussi à créer les sous menus, et les boutons dans chacun, mais je n'arrive pas à trouver la syntaxe pour sélectionner la feuille qui correspond au bouton.

    Lorsque que je passe par une fonction (j'ai testé aussi un simple Sheets(j).select):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       With CBut
                .Style = msoButtonCaption    
                .Caption = Sheets(J).Name   
               .OnAction = SelectFeuille(J)
                .Tag = "SM" & I & "BTN" & J    
            End With
    Il me sélectionne la feuille à la création du bouton, mais il ne se passe plus rien par la suite.

    Dans tous les exemples que j'ai trouvés, c'est le nom d'une macro qui est indiqué pour .OnAction, mais dès lors, comment écrire la macro pour qu'il sélectionne feuille qui correspond au bouton, puisque visiblement on ne peut pas passer d'argument ? (sans bien sûr créer 107 macros )

    Merci par avance de votre aide...!
    Ci dessous le code complet si nécessaire :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Sub Ajout_Menu()
     
        Dim Cbar As CommandBar, CBut As CommandBarButton
     
        Set Cbar = CommandBars.Add("SelOnglet", msoBarTop, True)
        Cbar.Visible = True
     
     
        'Création d'un sous menu par pôle
        For I = 1 To 10
            Set SM1 = Cbar.Controls.Add(msoControlPopup)
            With SM1
                .Caption = "10" & I
                .Tag = "10" & I
            End With
        Next I
     
        'Ajout d'un bouton par feuille pour chaque pôle
        For I = 1 To 8
            For J = Sheets("POLE 10" & I).Index + 1 To Sheets("POLE 10" & I + 1).Index - 2
                Set CBut = CommandBars("SelOnglet").Controls("10" & I).Controls.Add(msoControlButton)
     
                With CBut
                    .Style = msoButtonCaption
                    .Caption = Sheets(J).Name
                    .OnAction = SelectFeuille(J)
                    .Tag = "SM" & I & "BTN" & J
                End With
            Next J
        Next I
     
        'Ajout d'un bouton par feuille pour pôle 109
         For J = Sheets("POLE 109").Index + 1 To Sheets("POLE 110").Index - 2
            Set CBut = CommandBars("SelOnglet").Controls("10" & I).Controls.Add(msoControlButton)
     
            With CBut
                .Style = msoButtonCaption
                .Caption = Sheets(J).Name
                .OnAction = SelectFeuille(J)
                .Tag = "SM" & I & "BTN" & J
            End With
        Next J
     
        'Ajout d'un bouton par feuille pour pôle 110
        For J = Sheets("POLE 110").Index + 1 To Sheets.Count - 3
            Set CBut = CommandBars("SelOnglet").Controls("10" & I).Controls.Add(msoControlButton)
     
            With CBut
                .Style = msoButtonCaption
                .Caption = Sheets(J).Name
                .OnAction = SelectFeuille(J)
                .Tag = "SM" & I & "BTN" & J
            End With
        Next J
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Comme il y a un paramètre à ta Sub SelectFeuille, il faut écrire le OnAction différemment.
    Si le paramètre attendu est une String
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .OnAction = "'SelectFeuille ""VariableString""'"
    Si le paramètre est un entier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .OnAction = "'SelectFeuille VariableNombre'"
    MPi²

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 17
    Points
    17
    Par défaut
    Super ! J'ai juste rajouté des (), et cela fonctionne parfaitement.

    Merci de ton aide.

    Bon apresmidi.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/05/2012, 09h24
  2. [XL-2003] Extraction d'une zone ovale d'une photo insérée dans une feuille
    Par bolide7 dans le forum Excel
    Réponses: 4
    Dernier message: 21/04/2011, 18h45
  3. [AC-2007] Incrémentation du nom du variable via une autre variable !
    Par Spurius dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/04/2010, 14h16
  4. Ouverture d'une feuille excel via une autre feuille excel.
    Par JonathanMQ dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/01/2010, 22h12
  5. [XL-2003] rechercher les données d'une feuille excel via une useform
    Par t'chi ben dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/04/2009, 11h12

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