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

VBA Access Discussion :

Explorer les objets "CommandBar" ?


Sujet :

VBA Access

  1. #1
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Points : 142
    Points
    142
    Par défaut Explorer les objets "CommandBar" ?
    Bonjour à tous.

    Je tombe sur une difficulté qui me laisse perplexe : je cherche à explorer les propriétés des barres de commandes dans mon Access 2010 (je souhaite créer un menu contextuel personnalisé pour un formulaire).

    J'ai écrit un code me donnant la liste des barres de commandes disponibles quand mon formulaire est ouvert :
    Code VBA : 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
    Private Function toto()
      Dim cmb, i As Integer, n As String, item As Variant
      On Error GoTo err
      nb = 0
      msg = ""
      For Each cmb In CommandBars
        i = 0
    '    For Each item In cmb
    '      i = i + 1
    '    Next
        msg = msg & Chr$(10) & cmb.Name & " " & Format(i)
      Next
      MsgBox msg
      GoTo fin
    err:
        MsgBox "erreur"
    fin:
    End Function
    Vous voyez trois lignes commentées, destinées à compter le nombre d'items dans chaque membre de la collection : tel qu'il est ainsi, ce programme tourne, et me délivre un message d'environ 80 noms de barres de commandes. Mais si je décommente ces trois lignes, il ne tourne plus.

    J'ai beau chercher dans l'aide de VBA ou chez Google, la seule chose que j'ai trouvée, c'est ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Après avoir établi une référence à l’objet de collection CommandBars , vous pouvez 
    accéder à toutes les propriétés et méthodes de l’objet. Vous pouvez définir une 
    référence à l'objet de collection CommandBars en cliquant sur références dans le menu 
    Outils en mode création du module. Vous pouvez ensuite définir une référence à la 
    bibliothèque d’objets Microsoft Office 12.0 dans la boîte de dialogue Références en 
    sélectionnant la case à cocher appropriée.
    J'ai sélectionné la référence à "Microsoft Office 14.0 Object Library" que j'ai trouvée dans la liste des références disponibles, mais ça n'a rien changé.

    Ce que je déduis de cette expérience, c'est que les objets de la collection "CommandBars" ont une propriété "Name", mais pas de propriété "Count", et que je n'ai pas été capable de trouver de description de ces éléments, ni dans l'aide de VBA, ni sur Google.

    Est-ce que quelqu'un en sait plus ?

    AMIcalement.

  2. #2
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Points : 142
    Points
    142
    Par défaut
    J'apporte un complément d'informations à mon message ci-dessus : en poursuivant mes recherches sur Google, j'ai trouvé ce lien qui fait bien plus que répondre à ma question :Du coup, je marque mon post comme "Résolu".

    AMIcalement.

  3. #3
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Points : 142
    Points
    142
    Par défaut
    La collection (ou l'objet, à la fin, je ne sais plus...) CommandBar me semble bien mystérieux, ou alors je ne sais pas lire la documentation de Microsoft.

    Dans la fonction d'ouverture du premier formulaire de mon application, j'ai ajouté un appel à cette fonction :
    Code VBA : 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
     
    Function ListeMenus()
    Dim CB As CommandBar, CBc As CommandBarControls, listeN(400) As String, i As Integer, n As Integer, controles As Collection
    On Error GoTo err
      i = 0
      For Each CB In CommandBars
        listeN(i) = CB.Name
        Set CBc = CB.controls
        listeN(i) = listeN(i) & " (" & Format(CBc.Count) & ")"
        Debug.Print Format(i, "000"), listeN(i)
        i = i + 1
      Next
      MsgBox listeN
      Exit Function
    err:
      MsgBox "Erreur N° " & err.number & " : " & err.Description
    End Function
    Cette fonction se termine par une erreur "13 : Incompatibilité de type". Dans la fenêtre "Exécution", je trouve une liste numérotée de 10 à 208 (?) La plupart de ces lignes sont faites d'un nom et d'un chiffre, dont certains sont nuls, mais il y a 6 lignes où il n'y a pas de noms.

    Certains ont-ils des explications ?

    AMIcalement.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 927
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 927
    Points : 28 920
    Points
    28 920
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pourquoi ne pas créer tout simplement un formulaire dédié au menu et contenant des CommandButton pour appeler les différentes procédures
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Points : 142
    Points
    142
    Par défaut
    Je ne comprends pas bien la réponse - mais merci de répondre, quand-même. Cette fonction n'a aucun intérêt pour mon application, je cherche simplement à "m'approprier" la gestion des menus, avec l'idée (quand j'en serai capable) de faire un menu perso. Mais ça ne semble pas en prendre le chemin...

    AMIcalement.

Discussions similaires

  1. [XML]/[DocBook] Les entités " < etc.
    Par ykerb2 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 08/05/2007, 20h25
  2. Sudo problème avec les simples quotes
    Par Tronche dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/03/2007, 12h02
  3. Les doubles quotes dans les fprintf
    Par Changedman dans le forum C
    Réponses: 30
    Dernier message: 22/02/2007, 12h07

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