Monsieur Excel
Pour tout savoir faire sur Excel !

31 août 2009

Menus « Affichage » & « Insertion »

Nous n’allons pas passer en revue ici toutes les commandes de tous les menus d’Excel...

Voici quand même, en complément de ceux des commandes des menus
« Fichier » et « Edition », les codes des commandes des menus « Affichage » et « Insertion » :

Remarque – Les abonnés au blog recevront bien entendu – dans leur livraison habituelle – la liste des codes de toutes les commandes des menus d’Excel, y compris les menus que nous n’avons pas passé en revue dans ces trois derniers articles et bien entendu aussi les autres menus comme le menu Graphique.

27 août 2009

Blocages pour le menu « Edition »

Nous avons dans notre dernier message comment désactiver de façon temporaire les commandes du menu « Fichier ».

Voici maintenant les codes à utiliser pour désactiver les commandes du menu « Edition » :

Remarque – On peut se demander pourquoi passer par les IDs de toutes ces commandes plutôt que d’utiliser des commandes macro faisant référence précisément aux noms des menus et des commandes concernées : l’avantage de notre solution est qu’elle est internationale, les codes étant les mêmes dans toutes les langues.

22 août 2009

Blocages pour le menu « Fichier »

Nous avons vu il y a cinq jours comment désactiver temporairement les commandes d’impression du menu « Fichier ». Aujourd’hui, nous testons deux petites macros qui servent à désactiver ou à réactiver séparément telle ou telle commande du menu « Fichier ».

Voici le code des macros qui permettent d'atteindre notre objectif :

Sub One_Activate()
Call OneControl(Range("Test").Value, False)
End Sub

Sub One_Deactivate()
Call OneControl(Range("Test").Value, True)
End Sub

Sub OneControl(ID As Integer, Setting As Boolean)
Dim loectrl As Office.CommandBarControl
For Each loectrl In Application.CommandBars.FindControls(ID:=ID)
loectrl.Enabled = Setting
Next loectrl
End Sub


Et voici la liste des commandes et des codes :

Il suffit d’entrer en C1 – qui porte le nom « Test » – le code désiré puis d’utiliser les deux boutons pour désactiver ou réactiver la commande concernée.

Remarque 1 – J’ai donné un fond jaune aux deux codes, que j’ai récupérés sur Internet comme les autres, qui ne semblent pas marcher chez moi. Quelqu’un a-t-il la solution ?

Remarque 2 – Dans la liste ci-dessus, j'ai oublié le tout dernier : le code 752 correspond à la commande « Quitter » et le code 30.002 permet quant à lui de désactiver le menu « Fichier » lui-même...

17 août 2009

Bloquez l’impression du classeur

Si vous désirez bloquer toute impression ou modification des paramètres d’impression d’un classeur, vous pouvez utiliser les macros ci-contre développées par David Smart, du « excelexpertsclub » de Yahoo :

Dès que le classeur contenant ces macros au niveau du Workbook est activé, toutes les commandes du bloc d’impression du menu « Fichier » sont grisées. Elles se réactivent dès que l’on clique dans un autre classeur.

Remarque – Pour cela, il faut bien entendu que l’utilisateur ait accepté les macros, mais nous vous avons montré comment imposer cela dans notre message du 1er août dernier.

13 août 2009

Le premier lundi de l’année

Supposons que, en fonction d’une date quelconque, l’on doive identifier le premier lundi de l’année en question. Comment faut-il faire ?

Bien évidemment, il existe un grand nombre de solutions possibles.

Voici celle qui me semble la plus compacte :
=date(annee(A2);1;7)-mod(date(annee(A2);1;7)-2;7)

Le principe de la formule est le suivant. On prend pour point de référence le 7 janvier de la même année – obtenu grâce à la formule date(annee(A2);1; 7) – auquel on ôte 2 (le code du lundi). On prend le modulo par 7 de cette valeur, ce qui représente le nombre de jours qu’il faut ôter au 7 janvier pour tomber sur le premier lundi.

Remarque – Il suffit de remplacer le 2 par le code du jour désiré – de 1 pour dimanche à 7 pour samedi – pour obtenir le premier dimanche, lundi, mardi… de l’année.

09 août 2009

Un échéancier plus précis

En fait, la formule permettant de garantir que le dernier versement solde réellement le compte n’est pas si simple que cela à construire. Il y a en effet plusieurs étapes à respecter !

Tout d’abord, il faut que chaque versement mensuel corresponde à un montant exact en centimes, ce qui implique de remplacer les « $A2/$B2 » par des « arrondi($A2/$B2;2) ».

Ensuite, il convient – quand un versement est le dernier – de définir ce versement comme étant égal au montant du prêt moins la somme des versements déjà effectués. Et cela pose un problème de références circulaires si l’on veut – c’est plus esthétique ! – avoir la même formule en colonne C que dans les colonnes suivantes.

Voici le résultat obtenu avec en C2 la belle formule =si(colonne()-2<$B2;arrondi($A2/$B2;2);$A2-somme($B2:B2)+$B2).

L’astuce – pour éviter les références circulaires – est de faire démarrer la somme en $B2 puis, pour compenser, d’ôter ensuite le $B2 excédentaire !

Certes, si l’on ne se donne pas pour objectif d’avoir la même formule dans tout le bloc C2:H2, c’est bien plus simple avec les formules suivantes :
=arrondi($A2/$B2;2) en C2
=si(colonne()-2<$B2;C2;$A2-somme($C2:C2)) en D2

Remarque 1 – On peut facilement masquer les cellules à 0 à l'aide d'un format conditionnel.

Remarque 2 – Les sommes ainsi définies avec une borne fixe et une borne variable se révèlent souvent utiles dans les modèles Excel !

05 août 2009

Echéancier de versements

En colonne A sont indiqués des montants empruntés à court terme par différentes personnes dans le cadre de prêts à taux d’intérêt nul. Il est convenu que le maximum de remboursement mensuel est de 500 € et que les versements sont tous du même montant. Voici ce que cela donnerait pour des emprunts réalisés en août 2009 :

La formule à utiliser en C2, qui peut ensuite être recopiée dans toute la partie inférieure droite, n’est en fait pas très compliquée : =si(colonne()-3<$B2;$A2/$B2;"").

Cela suppose bien entendu que le nombre de mensualités soit calculé en B2 à l’aide d’une formule telle que : =arrondi.sup(A2/500;0).

Remarque 1 – On peut bien évidemment éviter la colonne B en remplaçant la référence à $B2 par sa formule (avec des références « dollarisées » en colonne), mais il faudra le faire deux fois, puisqu’il y a deux références à $B2.

Remarque 2 – Reste le problème des « rompus » : ainsi, dans la ligne 6, le remboursement total n’est ici que de 1.014,99 €. Nous verrons dans le prochain article comment résoudre ce problème en « soldant » le compte lors du dernier versement.

En attendant, vous pouvez vous essayer à ce petit exercice. Sachant toutefois que ce serait encore mieux si vous aviez une formule originale unique, en C2, qui puisse être copiée dans toute la partie inférieure droite du modèle…

01 août 2009

Garantir l’activation des macros…

Si l’on veut mettre en œuvre une solution telle que celle proposée dans notre dernier article, il faut absolument que l’utilisateur ait accepté l’activation des macros lors du chargement du classeur. Comment le forcer à effectuer cette activation ?

La solution est élémentaire ! Il suffit, lors de l’enregistrement du classeur, de lancer une macro qui masque automatiquement toutes les feuilles sauf une feuille d’accueil, que nous avons ici baptisée « Hello !» et d’associer au classeur une macro d’ouverture et une macro de fermeture :

Il ne vous reste plus – dans la feuille Hello ! – qu’à afficher en grands caractères un petit message du genre « Rouvrez ce classeur avec les macros activées ! ».