Monsieur Excel
Pour tout savoir faire sur Excel !

30 mai 2012

Les noms des menus contextuels

Dans les trois articles précédents, nous avons vu comment personnaliser les menus contextuels en prenant pour exemple le menu « Cell » – le plus utilisé de tous – qui correspond à un clic droit sur une ou plusieurs cellules sélectionnées.

Mais on peut modifier ainsi n’importe quel menu contextuel, par exemple ajouter au menu contextuel qui s’active quand une ou plusieurs lignes sont sélectionnées un commande pour colorer les lignes sélectionnées dans une couleur prédéfinie, ou même pour colorer une ligne sur deux de la sélection.

Le problème qui se pose alors est le suivant : Quel est le nom de ce menu contextuel ?

Je n’ai pas trouvé sur Internet la liste des noms des menus contextuels. J’ai en revanche fait une découverte tout à fait intéressante : une macro qui ajoute à tout menu contextuel, en dernière position, une commande « Name for VBA = xxx » où xxx est le nom du menu contextuel en VBA.


Nous constatons ainsi que le menu contextuel associé à un onglet est le nom « Ply », un nom que l’on n’aurait certainement pas trouvé par tâtonnements. Le menu contextuel associé à un tableau, par exemple, est « List Range Popup »…

Ce code fait partie des macros publiées dans l’article « Customizing Context Menus in Microsoft Excel » écrit par Ron de Bruin, un autre MVP Excel. Vous trouverez l’article complet à l’adresse :


26 mai 2012

Un bel outil de navigation…

Dans la lignée des deux articles précédents, je peux vous conseiller une super-commande à ajouter à votre menu « Cell », pour faciliter la navigation entre les classeurs Excel ouverts.

Nous en voyons la mise en œuvre ci-dessous : il s’agit de la commande « Browse Workbooks » qui fait automatiquement apparaître la liste des classeurs ouverts. La sélection du nom d’un classeur affiche le premier onglet du classeur et – en sous-sous-commandes – la liste de ses onglets. Il suffit de lâcher la souris sur le nom de l’onglet désiré pour qu'Excel active aussitôt cet onglet.


L’auteur de cette très pratique commande de navigation est Ashish Koul, qui a eu la gentillesse de laisser son code bien visible et donc aisément modifiable.

Pour télécharger ce modèle :

Remarque – Vous avez bien entendu intérêt à loger ces macros dans votre classeur de macros personnelles, afin de les rendre accessibles en permanence !

22 mai 2012

Plus sur les menus contextuels...

Dans le dernier article, nous avons vu comment modifier le menu contextuel « Cell » en lui ajoutant une commande « Total en € et $ ». Une fois cette commande ajoutée, elle reste présente même quand le classeur grâce auquel vous l’avez ajoutée est fermé : elle est incorporée à Excel. Pour l’éliminer, il faut utiliser la macro ci-dessous :

Sub Nettoie_menu_Cellule()
     Application.CommandBars("Cell").Controls("Total en € et $").Delete
End Sub

On peut aller loin dans la création de commandes à ajouter à un menu contextuel : on peut par exemple créer une commande avec des sous-commandes. C’est ce que nous avons fait ci-dessous avec la commande « Mon menu à moi ».

Pour obtenir ce résultat, nous avons créé deux macros : Crée_mon_menu, qui crée la commande elle-même, et Mes_commandes, qui créent les trois sous-commandes associées.

Remarque – A chaque appel de la commande, nous devons commencer par détruire les trois sous-commandes, sinon elles s’ajoutent aux trois sous-commandes précédentes…

17 mai 2012

Modification de menu contextuel

Les menus contextuels sont ceux que l’on obtient en faisant un clic droit : ils dépendent du contexte, c’est-à-dire de ce que l’on est en train de faire au moment du clic droit.

Si l’on a sélectionné une ou plusieurs lignes, on obtient alors le menu contextuel associé avec par exemple la commande « Hauteur de ligne »…

Si un graphe est actif, on aura dans le menu contextuel la commande « Modifier le type de graphique »,…

Chaque menu contextuel d’Excel peut être modifié à loisir : on peut lui ajouter, modifier ou enlever des commandes à volonté.

Aujourd’hui, par exemple, nous créerons un menu contextuel qui incorpore la commande « Total en € et $ » correspondant à la macro publiée dans ces colonnes il y a quatre jours. Voici le code de cette macro de modification :

Sub Modif_menu_contextuel()
    Set Commande = CommandBars("Cell").Controls.Add(msoControlButton)
    With Commande
        .Caption = "Total en € et $"
        .OnAction = "Conv_Dollars"
    End With
End Sub

Si vous exécutez cette macro, vous ajoutez automatiquement le commande « Total en € et $ » en bas du menu contextuel, comme vous pouvez le constater en bas de la copie d’écran suivante :

Il suffit de sélectionner cette commande pour voir apparaître le dialogue demandant le taux de change, puis le dialogue affichant le résultat, comme dans l’article publié il y a quatre jours. En effet, nous avons défini l'option
« .OnAction » par la macro « Conv Dollars ».

13 mai 2012

Conversion d’euros en dollars

La petite macro proposée dans cet article calcule le montant total qui correspond aux cellules sélectionnées et affiche un dialogue présentant à la fois ce montant total en euros et sa contrepartie en dollars. Le taux de change est fourni par l’utilisateur dans un dialogue.

Voici la macro :

Sub Conv_Dollars()
Dim Cell As Range
Dim Total As Double
Dim Cours As Double

For Each Cell In Selection
    Total = Total + Cell.Value
Next Cell
Cours = Application.InputBox("Cours actuel du $ ?", "Change", Type:=1)
MsgBox "En euros : " & Application.Text(Total, "# ##0.00 €") & _
    vbLf & "Dollars : " & Application.Text(Total * Cours, """$ ""# ##0.00")
End Sub

Remarque – Bien évidemment, on pourrait plus facilement encore lire le taux de change dans une cellule de la feuille de calcul plutôt que de passer par un dialogue. Ou – mieux encore ! –, aller chercher ce taux dans un site boursier sur le Web, afin qu’il soit actualisé en temps réel !

On pourrait aussi facilement transformer cette macro en macro-fonction, auquel cas il faudrait obligatoirement que l'on aille lire le taux de change dans une cellule...

09 mai 2012

Etes-vous dans le top 1% d'Excel ?

Vous avez aujourd’hui l’occasion de vérifier si vous êtes dans le top 5% - et même probablement le top 1% ! – des utilisateurs d’Excel. A mon avis, si vous êtes capable de trouver la solution au problème ci-dessous, c’est gagné !

On a dans les colonnes A à E, dans chaque ligne, un code article ainsi que les quantités commandées pour cet article dans quatre tailles.

Votre mission est d’entrer en G3:H3 des formules que vous pourrez recopier vers le bas et qui listeront, au rythme d’une ligne par commande, les quantités commandées pour chaque combinaison possible d’une référence et d’une taille.

Pour faciliter la lecture des colonnes G et H, vous devez aussi indiquer par un changement de couleur de fond le passage d’une référence à la référence suivante.

Je vous laisse travailler... Ne regardez pas la solution tout de suite !

 Voici la solution que je vous propose :

G3 : =decaler($A$3;ent((ligne()-3)/4)+1;0)&" - "&index($B$3:$E$3; mod(ligne()+1;4)+1)

H3 : =decaler($B$4;ent((ligne()-3)/4);mod(ligne()+1;4))

Condition pour le format conditionnel en fond jaune, pour les cellules G3:H22 :
=mod(ent((ligne()+1)/4);2)=0

Remarque – On pourrait aussi, mais je n’ai pas voulu alourdir les formules présentes, inclure dans les trois formules (G3, H3, format conditionnel) un test qui permet d’afficher des cellules vides sur fond blanc si l’on recopie les formules au-delà de la ligne 22 !

04 mai 2012

Graphe à bulles à catégories (b)

Cet article est la suite de l'article publié il y a quatre jours, où nous avions montré comment créer un graphe à bulles à catégories.

La solution proposée dans cet article supposait que l'on ait créé trois colonnes supplémentaires pour calculer les séries du graphe en nuage de points qui devait ensuite être transformé en graphe à bulles.

Notre lecteur « cduigou » a proposé, dans son commentaire, de créer directement un graphe à bulles à partir des données originales, puis d'utiliser une macro qui permet de colorer en trois familles les bulles, afin d’obtenir un graphe à bulles avec trois catégories, chacune dans une couleur primaire. Voici le code proposé :


Avantage de cette solution par rapport à celle proposée il y a quatre jours: il n’est toujours pas nécessaire de créer les colonnes E à F avec les formules permettant d’isoler les trois catégories. Autre avantage : il est alors aisé de créer plus de trois catégories.

Inconvénient : avec cette solution, il n’est pas possible de disposer facilement d’une légende : on est obligé de créer la légende à la main, élément par élément.