FAQ Excel
FAQ ExcelConsultez toutes les FAQ
Nombre d'auteurs : 46, nombre de questions : 845, dernière mise à jour : 30 mars 2022
- Ou trouver une description complète des fonctionnalités pour créer une barre de menus personnalisée par macro ?
- Comment créer une barre d'outils personnelle par macro ?
- Comment copier l'image d'un bouton ?
- Comment afficher les menus dans leur intégralité ?
- Comment ajouter la calculatrice Microsoft Windows dans un menu Excel ?
- Comment savoir quel bouton d'une barre personnalisée a été cliqué ?
- Comment ajouter une commande au menu contextuel des cellules ?
- Comment réinitialiser le menu contextuel des cellules ?
- Où sont passés mes menus et boutons personnalisés, dans Excel 2007 ?
- Toutes les barres de menus ont disparu, comment les retrouver ?
- Comment réafficher la barre de formule ?
- Ou trouver la liste des faceID ?
- Comment afficher un FaceID dans un contrôle Image d'un UserForm ?
- Comment supprimer une ancienne barre d'outils personnelle qui continue d'apparaitre dans le classeur ?
- Comment désactiver la barre d'outils 'EURO' sous Excel 2002 ?
- Comment désactiver une transaction particulière dans le menu contextuel ?
- 4.1. Le ruban, la barre d'outils accès rapide et le bouton Office 2007 (37)
Cet exemple est placé dans le module objet du classeur et utilise
l'évènement Workbook_Open.
De cette manière, la barre est créée automatiquement lors de l'ouverture du fichier.
Private
Sub
Workbook_Open
(
)
Dim
CmdBar As
CommandBar
Dim
Bouton As
CommandBarButton
'Création de la barre d'outils nommée 'MaBarrePerso'
Set
CmdBar =
Application.CommandBars
_
.Add
(
Name:=
"MaBarrePerso"
, Position:=
msoBarTop, Temporary:=
True
)
'Ajout de 3 boutons dans la barre d'outils
Set
Bouton =
CmdBar.Controls.Add
(
Type
:=
msoControlButton)
With
Bouton
'Définit "l'image" qui va s'afficher sur le bouton
.FaceId
=
133
'Définit quelle macro est associée au bouton.
'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
.OnAction
=
"Macro1"
End
With
Set
Bouton =
CmdBar.Controls.Add
(
Type
:=
msoControlButton)
With
Bouton
.FaceId
=
134
.OnAction
=
"Macro2"
End
With
Set
Bouton =
CmdBar.Controls.Add
(
Type
:=
msoControlButton)
With
Bouton
.FaceId
=
135
.OnAction
=
"Macro3"
End
With
CmdBar.Visible
=
True
End
Sub
Ce deuxième code utilise l'évènement Workbook_BeforeClose et supprime la barre personnelle lors de la fermeture du classeur.
Private
Sub
Workbook_BeforeClose
(
Cancel As
Boolean
)
On
Error
Resume
Next
Application.CommandBars
(
"MaBarrePerso"
).Delete
End
Sub
Rappel :
Dans Excel 2007, les menus et barres d'outils personnels sont stockés dans l'onglet "Complément".
Effectuez un clic droit sur les barres d'outils.
Sélectionnez l'option Personnaliser dans le menu contextuel.
La boîte de dialogue "Personnalisation" s'affiche à l'écran.
Refaites un clic droit dans les barres d'outils, sur le bouton dont vous souhaitez copier l'image.
Sélectionnez l'option "Copier l'image du bouton".
Vous pouvez ensuite effectuer un collage de l'image sur un autre bouton en sélectionnant l'option "Coller l'image du bouton".
Pour coller l'image dans la feuille de calcul, fermez la boîte de dialogue "Personnalisation", sélectionnez une cellule puis effectuez le collage (Ctrl+V).
Dans Excel 2002, par défaut seuls les derniers éléments récemment utilisés s'affichent lorsque vous cliquez sur un menu.
Pour afficher tous les éléments des menus :
Effectuez un clic droit sur la barre de menus.
Sélectionnez l'option Personnaliser.
Cliquez sur l'onglet Options.
Cochez la case Toujours afficher les menus dans leur intégralité.
Cliquez sur le bouton Fermer pour valider.
Effectuez un clic droit sur la barre de menus.
Sélectionnez l'option Personnaliser.
Sélectionnez l'onglet Commandes dans la boîte de dialogue Personnalisation.
Choisissez Outils dans la liste des catégories.
Sélectionnez Personnaliser (avec l'icône de la calculatrice sur la gauche) dans la liste des commandes.
Gardez le bouton gauche de la souris enfoncé et faites glisser la calculatrice jusqu'à l'emplacement de votre choix dans
la barre de menus.
Pendant que la boîte de dialogue Personnalisation est affichée, vous pouvez modifier le nom attribué en faisant un clic droit sur le bouton qui vient d'être ajouté.
Il est possible de récupérer l'information en utilisant la propriété ActionControl :
Placez ces trois procédures dans un module standard. La première macro crée une barre d'outils personnalisée. La deuxième
macro est appelée lorsque vous cliquez sur un des boutons dans la barre d'outils. La troisième
permet de supprimer la barre d'outils.
Sub
CreationBarre
(
)
Dim
cbBarre As
CommandBar
Dim
CB_B1 As
CommandBarButton, CB_B2 As
CommandBarButton
Dim
CB_B3 As
CommandBarButton
Set
cbBarre =
CommandBars _
.Add
(
Name:=
"Ma barre perso"
, Position:=
msoBarTop, Temporary:=
True
)
Set
CB_B1 =
cbBarre.Controls.Add
(
Type
:=
msoControlButton)
With
CB_B1
.FaceId
=
353
.Tag
=
"Premier bouton"
.OnAction
=
"TestMacro"
End
With
Set
CB_B2 =
cbBarre.Controls.Add
(
Type
:=
msoControlButton)
With
CB_B2
.FaceId
=
351
.Tag
=
"Deuxième bouton"
.OnAction
=
"TestMacro"
End
With
Set
CB_B3 =
cbBarre.Controls.Add
(
Type
:=
msoControlButton)
With
CB_B3
.FaceId
=
352
.Tag
=
"Troisième bouton"
.OnAction
=
"TestMacro"
End
With
cbBarre.Visible
=
True
End
Sub
Sub
TestMacro
(
)
MsgBox
CommandBars.ActionControl.Tag
End
Sub
Sub
SuppressionBarre
(
)
On
Error
Resume
Next
CommandBars
(
"Ma barre perso"
).Delete
End
Sub
Pour ajouter une commande au menu contextuel (apparaissant sur click droit) d'une cellule, il suffit d'ajouter une
entrée à la CommandeBar "Cell" (menu contextuel cellule feuille de calcul).
' Rajout d'une entrée dans menu contextuel
'
Function
MenuCell
(
stCde As
String
, stMess As
String
)
Dim
Mc As
CommandBarControls
Dim
Bo As
CommandBarButton
Set
Mc =
CommandBars
(
"Cell"
).Controls
Set
Bo =
Mc.Add
(
msoControlButton, Temporary:=
True
)
Bo.Caption
=
stMess
Bo.OnAction
=
stCde
End
Function
Exemple d'utilisation :
Ajout d'une entrée Ajouter Prefixe, permettant, sur click droit sur une cellule, de remplacer la valeur de chaque cellule
sélectionnée par la valeur courante précédée d'une chaine de caractére saisie dans une inputBox.
'Initialisation dans l'évènement Workbook_open
'
Private
Sub
Workbook_Open
(
)
MenuCell "AjoutePrefixe"
, "Ajouter Prefixe"
End
Sub
' Fonction exemple..
'
Sub
AjoutePrefixe
(
)
Dim
Pre As
String
Dim
s As
Range, c As
Object
Pre =
InputBox
(
"prefixe"
)
Set
s =
Selection
For
Each
c In
s
c.Value
=
Pre &
c.Value
Next
End
Sub
Le menu contextuel des cellules apparait lorsque vous faites un clic droit dans la feuille de calcul.
Celui ci peut être paramétré afin d'ajouter ou supprimer des transactions personnalisées.
La macro suivante permet de la réinitialiser le menu contextuel :
Application.CommandBars
(
"cell"
).Reset
Vous pouvez atteindre les menus et boutons personnalisés en ouvrant l'onglet Complément dans le ruban.
Cette péripétie arrive parfois lorsque vous recevez des classeurs contenant des macros qui manipulent les barres d'outils et les barres de menus. Si la procédure n'est pas totalement maîtrisée, les menus ne sont pas correctement réinitialisés lors de la fermeture du classeur.
Utilisez ces macros, si vous pouvez encore accéder à l'éditeur de macros (Alt+F11):
Application.CommandBars
(
"Worksheet Menu Bar"
).Enabled
=
True
et
Dim
Cb As
CommandBar
For
Each
Cb In
Application.CommandBars
If
Cb.BuiltIn
=
True
Then
Cb.Enabled
=
True
End
If
Next
Dernier recours, recherchez les fichiers portant l'extension .xlb sur votre PC.
Ces fichiers servent à stocker les paramètres de la barre d'outils et sont généralement enregistrés à cet emplacement :
C:\Documents and Settings\Nom Utilisateur\ApplicationData\Microsoft\Excel\Excel10.xlb
Dans cet exemple, Excel10.xlb correspond à la version 2002 d'Excel.
Assurez vous qu'Excel est bien fermé.
Supprimez ces fichiers .xlb (c'est sans risque) ou sinon renommez les (par exemple: Excel10.xlb.old).
Redémarrez Excel.
L'application affichera les barres d'outils par défaut.
Nota :
Règle générale: Quand vous recevez un classeur dont vous ne connaissez l'origine, ayez le réflexe de désactiver
les macros lors de la première ouverture. Ensuite vérifiez que les procédures contenues dans le fichier ne risquent
de provoquer des actions indésirables sur votre PC. S'il n'y a pas de problème, refermez le classeur puis ré-ouvrez
le en activant les macros.
Si votre barre de formule a disparu :
Utilisez le menu Outils
Options
Onglet Affichage
Cochez l'option "Barre des formules"
Cliquez sur le bouton OK pour valider.
Sous Excel 2007 :
Cliquez sur le bouton Office
Cliquez sur le bouton "Options Excel"
Sélectionnez le menu "Options avancées"
Dans le groupe "Afficher", cochez l'option "Afficher la barre de formule"
Cliquez sur le bouton OK pour valider.
Les FaceID sont les petites icônes intégrées à MS Office, permettant de personnaliser les boutons des barres de menus.
Sub
Liste_FaceIDs
(
)
Dim
tBar As
CommandBar
Dim
i As
Long
'Supprime la barre d'outils temporaire si elle existe.
On
Error
Resume
Next
Application.CommandBars
(
"BarreTemp"
).Delete
On
Error
GoTo
0
'Supprime le contenu de la feuille
Worksheets
(
"Feuil1"
).Pictures.Delete
Worksheets
(
"Feuil1"
).Cells.ClearContents
Application.ScreenUpdating
=
False
'Création barre d'outils
Set
tBar =
Application.CommandBars.Add
(
Name:=
"BarreTemp"
)
For
i =
1
To
1870
On
Error
Resume
Next
'Supprime le bouton précédent
tBar.Controls
(
1
).Delete
On
Error
GoTo
0
'Crée un nouveau bouton dans la barre d'outils
With
tBar.Controls.Add
(
Type
:=
msoControlButton)
'Ajoute un FaceID
.FaceId
=
i
'Copie le FaceID
.CopyFace
End
With
'Effectue le collage dans la feuille
Worksheets
(
"Feuil1"
).Paste
'Repositionne et nomme la nouvelle forme collée
With
Worksheets
(
"Feuil1"
).Shapes
(
i)
.Top
=
Cells
(
i, 1
).Top
.Left
=
15
.Name
=
"ID_"
&
i
End
With
Next
i
'Supprime la barre d'outils temporaire
Application.CommandBars
(
"BarreTemp"
).Delete
Application.ScreenUpdating
=
True
MsgBox
"Terminé."
End
Sub
Vous pouvez également visualiser l'ensemble des icônes dans le tutoriel de Fred Thomas :
Vous pouvez utiliser les FaceId comme image dans vos UserForm. L'avantage réside dans le stockage de ces
icônes dans l'application et ne nécessite donc pas de gestion particulière des images lorsque vous transférez
le classeur sur d'autres postes utilisateurs.
L'inconvénient : une dimension trop importante du conteneur (un contrôle Image par exemple) nuit à la qualité d'affichage.
La procédure suivante affiche un FaceID dans un contrôle Image, nommé Image1.
Private
Sub
UserForm_Initialize
(
)
Dim
Cmb As
CommandBarControl
Dim
cBar As
CommandBar
Set
cBar =
CommandBars.Add
(
Position:=
msoBarFloating, MenuBar:=
False
, Temporary:=
True
)
Set
Cmb =
cBar.Controls.Add
(
Type
:=
msoControlButton, Temporary:=
True
)
'964 = point d'exclamation
Cmb.FaceId
=
964
Image1.PictureSizeMode
=
fmPictureSizeModeStretch
Image1.Picture
=
Cmb.Picture
cBar.Delete
End
Sub
Faites un clic droit sur le menu en question et sélectionnez l'option "Supprimer la commande personnalisée".
Utilisez le menu Outils,
Macros complémentaire
Décochez l'option "Outils pour l'Euro"
Cliquez sur le bouton OK pour valider
Le menu contextuel correspond à la liste de fonctions qui s'affiche lorsque vous effectuez un clic droit dans une cellule.
Vous pouvez désactiver un ou plusieurs éléments en spécifiant son ID
La liste des Ids du menu contextuel
Couper : 21
Copier : 19
Coller : 22
Collage spécial : 755
Insérer : 3181
Supprimer : 292
Effacer le contenu : 3125
Insérer un commentaire : 2031
Effacer le commentaire : 1592
Afficher le commentaire : 1593
Format de cellule : 855
Liste de choix : 1966
Ajouter un espion : 5685
Lien hypertexte : 1576
Modifier le lien hypertexte : 1577
Ouvrir le lien hypertexte : 1015
Supprimer le lien hypertexte : 3626
Un exemple pour griser le bouton Format de cellule du menu contextuel :
Sub
Desactiver
(
)
With
Application.CommandBars
(
"Cell"
)
Set
Ctrl =
.FindControl
(
ID:=
855
)
Ctrl.Enabled
=
False
Set
Ctrl =
Nothing
End
With
End
Sub
Et pour le réactiver :
Sub
reactiver
(
)
With
CommandBars
(
"Cell"
)
Set
Ctrl =
.FindControl
(
ID:=
855
)
Ctrl.Enabled
=
True
Set
Ctrl =
Nothing
End
With
End
Sub