Aide Excel

Forum d'aide et d'entraide sur Excel : cours, astuces, tutoriaux...
Accueil­Portail­FAQ­Rechercher­S'enregistrer­Membres­Groupes­Connexion
Poster un nouveau sujet   Répondre au sujetPartager | 
 

 Lister les barres d'outils et contrôles d'Excel

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
KiWin
Administrateur


Nombre de messages: 155
Localisation: Isère - France
Date d'inscription: 16/08/2005

MessageSujet: Lister les barres d'outils et contrôles d'Excel   Lun 22 Aoû à 22:17

Lister les barres d'outils et contrôles d'Excel


Auteur(s) : KiWin
Première publication le : 22/08/05
Dernière modification le : 05/09/05
Fichier associé : command_bars.zip
Testé et réalisé sous Excel 2002



Elements abordés : CommandBars / Controls / NameLocal / Visible / Count

Il est possible via des macros de modifier l'interface d'Excel, c'est à dire agir sur les menus et barres d'outils d'Excel. Nous allons ici nous contenter d'établir une liste des barre d'outils d'Excel et des contrôles qu'elle contiennent.

Avant de songer à modifier, ajouter, interagir avec les barres d'outils et les contrôles, il est nécessaire de savoir comment retrouver la barre d'outils ou le contrôle qui nous intéresse, indiquer quel élément modifier après avoir effectué les vérifications nécessaires.

C'est ce que nous allons apprendre ici.

Nous devons pour celà procéder par étapes :

    1) Etablir une liste des barres d'outils.
    2) Pour chaque barre d'outils, récupérer les propriétés le concernant qui nous intéresse.
    3) Pour chaque barre d'outils, établir une liste des contrôles qu'elle contient.
    4) Pour chaque contrôle, récupérer les propriétés qui nous intéressent et le concernant.

Sans oublier de reporter sur une feuille Excel les données ainsi obtenues.

La macro commence ainsi :

Code:
Dim Ligne As Integer, Colonne As Integer
Ligne = 3
Colonne = 1


Voir cours sur les types de données

- On récupère le nombre de barres d'outils contenues dans Excel :

Code:
Dim Nb_Barres As Byte
Nb_Barres = CommandBars.Count


CommandBars désigne l'ensemble des barre d'outils et Count le nombre d'éléments que contient cet ensemble.

- On créé deux variables qui vont servir à récupérer le nom de chaque barre ainsi que son état visible ou non :

Code:
Dim Nom_Barre As String
Dim Vue_Barre As Boolean


Voir cours sur les types de données

- On créé aussi une variable qui va prendre le nombre de contrôles que contient une barre :

Code:
Dim Nb_Controles_Barre As Byte


- On créé de même une variable qui va recevoir le nombre total de contrôles toutes barres confondues :

Code:
Dim Nb_Controles As Integer


- On créé un compteur qui va augmenter par la suite pour pouvoir changer de barre :

Code:
Dim Num_Barre As Byte
Num_Barre = 1


- On créé une boucle basée sur le nombre de barres pour pouvoir analyser toutes les barres une par une :

Code:
For Num_Barre = 1 To Nb_Barres


Une boucle commence par For et se termine par Next, qui se trouve à la fin des instructions devant être réalisées durant la boucle.

- On récupère le nom et l'état visible ou non de la barre :

Code:
Nom_Barre = CommandBars(Num_Barre).NameLocal
Vue_Barre = CommandBars(Num_Barre).Visible


CommandBars(Num_Barre) désigne la barre dont le numéro est contenu dans Num_Barre.
NameLocal est le nom de la barre. Il existe aussi Name qui est le nom d'origine de la barre, c'est-à-dire en anglais.
Visible est une proprité qui permet de savoir si un élément est visible ou non.

- On récupère aussi le nombre de contrôles contenus dans la barre :

Code:
Nb_Controles_Barre = CommandBars(Num_Barre).Controls.Count


- On ajoute ce nombre de contrôles au total de contrôles :

Code:
Nb_Controles = Nb_Controles + Nb_Controles_Barre


- Convertion de la valeur de Vue_Barre en texte :

Code:
Dim Etat_Barre As String
If Vue_Barre = True Then
  Etat_Barre = "Visible"
Else
  Etat_Barre = "Cachée"
End If


En fait on traduit l'état visible de la barre par un mot clairement lisible, à savoir "Visible" ou "Caché".

- On écrit dans la feuille de calcul les données de cette barre d'outils :
par exemple : Barre d'outils n° X : Unetelle (Visible) - X contrôles

Code:
Worksheets(2).Cells(Ligne, Colonne).Value = "Barre d'outils n° " _
& Num_Barre & " : " & Nom_Barre & " (" & Etat_Barre & ") - " _
& Nb_Controles_Barre & " contrôles"


(Je ne donne pas ici de détails quant à l'écriture de texte dans une cellule, il faut juste savoir que l'on créer une phrase complète en utilisant les valeurs récupérées ci-dessus.)

- Changement de cellule cible (pas de détails) :

Code:
Ligne = Ligne + 1
Colonne = Colonne + 1



On va maintenant s'occuper des contrôles contenus dans cette barre d'outils en suivant le même principe que ci-dessus.

- On créé deux variables qui vont servir à récupérer le nom de chaque contrôle ainsi que son état visible ou non :

Code:
Dim Nom_Controle As String
Dim Vue_Controle As Boolean


- On créé un compteur qui va augmenter par la suite pour pouvoir changer de contrôle :

Code:
Dim Num_Controle As Byte
Num_Controle = 1


- On créé une boucle basée sur le nombre de contrôles pour pouvoir analyser tous les contrôles un par un :

Code:
For Num_Controle = 1 To Nb_Controles_Barre


- On récupère le nom et l'état visible ou non du contrôle :

Code:
Nom_Controle = CommandBars(Num_Barre).Controls(Num_Controle).Caption
Vue_Controle = CommandBars(Num_Barre).Controls(Num_Controle).Visible


Ici comme nom on utilise la propriété Caption qui est le texte affiché par un contrôle, quand celui-ci doit l'afficher.

- Convertion de la valeur de Vue_Controle en texte :

Code:
Dim Etat_Controle As String
If Vue_Controle = True Then
  Etat_Controle = "Visible"
Else
  Etat_Controle = "Caché"
End If


- On écrit dans la feuille de calcul les données de ce contrôle :
par exemple : Contrôle n° X : Untel (Visible)

Code:
Worksheets(2).Cells(Ligne, Colonne).Value = "Contrôle n° " _
& Num_Controle & " : " & Nom_Controle & " (" & Etat_Controle & ")"


- Changement de cellule cible (pas de détails) :

Code:
Ligne = Ligne + 1


- Le traitement du contrôle étant terminé, on passe au suivant :

Code:
Next Num_Controle


- Changement de cellule cible (pas de détails) :

Code:
Ligne = Ligne + 1
Colonne = Colonne - 1


- Une fois que tous les contrôles ont été analysés, on change de barre d'outils :

Code:
Next Num_Barre


- Pour terminer, on écrit sur la feuille le nombre de barres trouvées ainsi que le total de contrôles :

Code:
Worksheets(2).Cells(1, 1).Value = Nb_Barres & _
" barres d'outils ont été recensées pour un total de " _
& Nb_Controles & " contrôles."


Dernière édition par le Lun 5 Sep à 9:47, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://aide-excel.forumactif.com
KiWin
Administrateur


Nombre de messages: 155
Localisation: Isère - France
Date d'inscription: 16/08/2005

MessageSujet: Re: Lister les barres d'outils et contrôles d'Excel   Lun 22 Aoû à 22:18

Et voici le code complet :

Code:
Sub List_CommandBars()

Dim Ligne As Integer, Colonne As Integer
  Ligne = 3
Colonne = 1

Dim Nb_Barres As Byte
Nb_Barres = CommandBars.Count

Dim Nom_Barre As String
Dim Vue_Barre As Boolean

Dim Nb_Controles_Barre As Byte

Dim Nb_Controles As Integer

Dim Num_Barre As Byte
Num_Barre = 1

For Num_Barre = 1 To Nb_Barres

    Nom_Barre = CommandBars(Num_Barre).NameLocal
    Vue_Barre = CommandBars(Num_Barre).Visible
    Nb_Controles_Barre = CommandBars(Num_Barre).Controls.Count
    Nb_Controles = Nb_Controles + Nb_Controles_Barre

    Dim Etat_Barre As String
    If Vue_Barre = True Then
        Etat_Barre = "Visible"
    Else
        Etat_Barre = "Cachée"
    End If
   
    Worksheets(2).Cells(Ligne, Colonne).Value = "Barre d'outils n° " _
    & Num_Barre & " : " & Nom_Barre & " (" & Etat_Barre & ") - " _
    & Nb_Controles_Barre & " contrôles"
   
    Ligne = Ligne + 1
    Colonne = Colonne + 1

    Dim Nom_Controle As String
    Dim Vue_Controle As Boolean
   
    Dim Num_Controle As Byte
    Num_Controle = 1

    For Num_Controle = 1 To Nb_Controles_Barre
   
        Nom_Controle = CommandBars(Num_Barre).Controls(Num_Controle).Caption
        Vue_Controle = CommandBars(Num_Barre).Controls(Num_Controle).Visible
       
        Dim Etat_Controle As String
        If Vue_Controle = True Then
            Etat_Controle = "Visible"
        Else
            Etat_Controle = "Caché"
        End If

        Worksheets(2).Cells(Ligne, Colonne).Value = "Contrôle n° " _
        & Num_Controle & " : " & Nom_Controle & " (" & Etat_Controle & ")"
       
        Ligne = Ligne + 1
   
    Next Num_Controle

Ligne = Ligne + 1
Colonne = Colonne - 1

Next Num_Barre

Worksheets(2).Cells(1, 1).Value = Nb_Barres & _
" barres d'outils ont été recensées pour un total de " _
& Nb_Controles & " contrôles."

End Sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://aide-excel.forumactif.com
Hamyllana
Co-administratrice


Nombre de messages: 16
Localisation: Reims (Marne)
Date d'inscription: 16/08/2005

MessageSujet: Re: Lister les barres d'outils et contrôles d'Excel   Mar 23 Aoû à 23:48

Applaudi
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.progforum.net
Ramsès II
Co-administratrice


Nombre de messages: 36
Localisation: Bruxelles
Date d'inscription: 21/08/2005

MessageSujet: Re: Lister les barres d'outils et contrôles d'Excel   Sam 27 Aoû à 12:30

Arf, je n'ai pas encore eu le temps de tester le code.

_________________
Bien amicalement
http://amisderamses.forumactif.com/index.htm
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://users.skynet.be/pharaon.ramses/sitedesdeuxramses/index.html
KiWin
Administrateur


Nombre de messages: 155
Localisation: Isère - France
Date d'inscription: 16/08/2005

MessageSujet: Re: Lister les barres d'outils et contrôles d'Excel   Lun 5 Sep à 9:48

MAJ du 05/09/05 : ajout de liens vers le cours sur les types de données.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://aide-excel.forumactif.com
 

Lister les barres d'outils et contrôles d'Excel

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Aide Excel :: Entraide & apprentissage :: Tutoriaux-
Poster un nouveau sujet   Répondre au sujet