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 :

CommandBar avec variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Par défaut CommandBar avec variable
    Bonjour à tous,

    Voilà mon problème : je souhaitais faire un petit menu, appelé "BarreDeplacement" qui avait pour but de se déplacer plus facilement entre les feuilles de mon classeur. A l'aide d'un menu déroulant, je séléctionne le nom de la feuille qui m'intéresse et le changement de feuille s'opère suite à cette manipulation.
    Cependant, les noms des feuilles pourront changer à court terme, ce qui fait que je me devais d'utiliser une formule permettant la flexibilité de ce menu.

    J'ai à peu près réussi à coder ce que je voulais, sauf qu'il y a malheuresement une erreur que je n'arrive vraiment pas à résoudre... d'où mon appel à l'aide =)

    Voici le code :

    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
    Sub BarreBoutons()
        Dim barre As CommandBar
        Dim bouton As CommandBarControl
        On Error Resume Next
        CommandBars("BarreDeplacement").Delete
        Set barre = CommandBars.Add(Name:="BarreDeplacement")
        barre.Visible = True
     
        Set Menu = CommandBars("BarreDeplacement").Controls.Add(Type:=msoControlComboBox)
        For S = 1 To Sheets.Count
            Menu.AddItem Sheets(S).Name
        Next S
        Menu.OnAction = "OutilSelection"
        Menu.Text = "Selectionner"
    End Sub
     
     
    Sub auto_close()
       On Error Resume Next
       ActiveWindow.Visible = False
       'Windows(ThisWorkbook.Name).Visible = False
    End Sub
     
     
    Sub OutilSelection()
    Dim choix As String
     
      Application.ScreenUpdating = False
      choix = CommandBars("BarreDeplacement").Controls(1).Text
      Sheets(choix).Select
    End Sub
    L'erreur intervient sur la ligne 29 :
    Erreur d'exécution '438':
    Propriété ou méthode non gérée par cet objet
    Cette erreur arrive lorsque je séléctionne la feuille qui m'intéresse dans le menu déroulant.

    J'espère que vous pourrez m'éclairer ! Merci d'avance et bonne journée =)

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Le code fonctionne sans problème chez moi, je n'arrive pas à reproduire l'erreur. Si tu peux, joins une copie de ton fichier en ayant au préalable enlevé les données confidentielles.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Par défaut
    Bonjour fring,

    Merci de ta réponse rapide.

    Voici le fichier. C'est peut être un problème de compatibilité ?

    A bientôt

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Par défaut
    Bonjour,

    Par double clic sur la feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
        Application.CommandBars("Workbook tabs").ShowPopup 
    End Sub
    JP

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut


    Le code contenu dans ton fichier n'est pas le même que celui que tu as inséré dans ton message.

    Dans ton fichier tu ajoutes un bouton "Fiche" en plus et donc le combobox n'est plus le contrôle n°1 mais le n°2...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub OutilSelection()
    Dim choix As String
      Application.ScreenUpdating = False
      choix = CommandBars("BarreDeplacement").Controls(2).Text
      Sheets(choix).Select
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Par défaut
    Citation Envoyé par fring Voir le message


    Le code contenu dans ton fichier n'est pas le même que celui que tu as inséré dans ton message.

    Dans ton fichier tu ajoutes un bouton "Fiche" en plus et donc le combobox n'est plus le contrôle n°1 mais le n°2...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub OutilSelection()
    Dim choix As String
      Application.ScreenUpdating = False
      choix = CommandBars("BarreDeplacement").Controls(2).Text
      Sheets(choix).Select
    End Sub

    Je suis partagé entre la honte et la stupidité :/

    Merci beaucoup ça marche nickel =) Merci à vous deux d'avoir accordé du temps à mon problème!

    Bonne journée et à bientôt !

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Par défaut
    Citation Envoyé par JPierreM Voir le message
    Bonjour,

    Par double clic sur la feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
        Application.CommandBars("Workbook tabs").ShowPopup 
    End Sub
    JP
    Bonjour,

    Ta solution me paraît intéressante, malheuresement je ne serai pas utilisateur de cet outil et j'imagine que certaines personnes utilisent le double clique pour modifier le contenu d'une case.
    De plus l'aspect d'un menu me semblait plus esthétique.

    Je garde néanmoins ta solution sous le coude, c'est simple et efficace. Merci =)

  8. #8
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    En complément de ma réponse précédente, pour être certain de pointer vers le bon contrôle (au cas où tu en ajoutes d'autres), tu peux faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    choix = CommandBars("BarreDeplacement").Controls(Application.CommandBars.ActionControl.Index).Text

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

Discussions similaires

  1. Requête avec variable incrémentée sur changement de clé.
    Par souellet dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/09/2005, 22h47
  2. Merge avec variables
    Par kluh dans le forum Oracle
    Réponses: 18
    Dernier message: 25/07/2005, 14h31
  3. [AS2] Pb avec variables dans syntaxe
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 05/07/2005, 11h28
  4. Boucle avec variable à incrémenter
    Par snoop dans le forum Linux
    Réponses: 2
    Dernier message: 19/03/2004, 11h07
  5. Cacher Variable Url avec Variable Globale
    Par danuz dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/09/2003, 17h20

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