Monsieur Excel
Pour tout savoir faire sur Excel !

28 mars 2017

Incorporation d’un calendrier

Parfois,dans un dialogue Excel, on a besoin d’incorporer un calendrier dans lequel l’utilisateur peut choisir une date.

Si vous voulez ne pas devoir réinventer la roue, vous pouvez utiliser le splendide travail effectué par trois brillants développeurs Excel, dont deux que nous avons déjà souvent cités, Christina Szabό et Roberto Mensa.

Vous pouvez alors lire l’article « Calendar Control for All Office versions - including Office 2016 64 bit », à l’adresse suivante : https://sites.google.com/site/e90e50/calendar-control-class.

Il est possible d’y télécharger plusieurs versions historiques, de 2011 à maintenant.

Voici ce que donne la version Calendar_Class_v1.2.0.xlsm :


Nous avons fait un double clic dans la cellule C12.  Le dialogue « Date picker » apparaît aussitôt et il suffit de faire alors un double clic sur le jour désiré pour que sa date apparaisse en C12.

23 mars 2017

Quelle est ma version d’Excel ?

Parfois, nous avons besoin de savoir quelle version d’Excel nous utilisons, surtout quand nous utilisons un ordinateur non familier.

Une solution consiste à utiliser le menu Fichier, commande Aide. Nous obtenons alors le tableau représenté dans la partie droite de la copie d’écran ci-dessous.


Une autre solution revient à utiliser la macro ci-dessous, que nous avons associé (cf. copie d’écran) au bouton macro placé dans le coin supérieur gauche qui engendre le dialogue affiché en dessous et à droite du bouton :

Voici la macro en question :

Sub MyVersion()
    MsgBox "Version : " & Application.Version & vbLf & "Build : " & Application.Build
End Sub

Remarque – On peut d’ailleurs se demander pourquoi le « build » ne correspond pas exactement à ce qui est indiqué par la commande « Aide » du menu « Fichier ».

14 mars 2017

D’autres articles sur equiv()

La fonction equiv() est une véritable mine d’or et peut être utilisée pour résoudre un grand nombre de problèmes concrets. Voici quelques articles du blog qui vous permettront d’en savoir plus sur les possibilités offertes par cette fonction géniale.

Liste dynamique sans répétition
Le 16 juin 2013.

Dans cet exemple, la fonction equiv() sert à constituer de façon dynamique  une liste sans répétition de toutes les valeurs différentes observées dans un vecteur.

Un equiv() sur une matrice (a)

La fonction equiv() ne peut utiliser qu’un vecteur comme premier argument. Comment faut-il procéder quand on souhaite trouver une valeur dans une matrice au lieu d’un vecteur ?

La série d’articles suivante répond à cette question délicate. Depuis le 27 janvier 2014, avec Un élément dans une matrice jusqu’au 16 février 2014 avec Un equiv() sur une matrice (d) .

Recherche sur >255 caractères
Le 28 février 2015.

Récupérer une valeur d'un TCD
Le 15 novembre 2005.

Calcul du nombre de modalités
Le 6 octobre 2016.

Nous utilisons là la fonction equiv(), en association avec la fonction frequence(), pour calculer – sans formule matricielle ! – le nombre de modalités (de valeurs différentes) dans un vecteur.

Une utilisation originale d’equiv()

Comme je l’ai indiqué dans le premier article du 27 février, le premier de cette petite série, Excel suppose – quand on utilise les troisièmes arguments +1 et -1, que les valeurs sont respectivement en ordre croissant et décroissant.  Mais ce n’est pas une obligation !

Ainsi, =equiv(10^6;D:D;1) trouve la position de la dernière valeur entrée en colonne D, sous réserve que toutes les valeurs soient inférieures à 10^6. Sinon, il suffit d’augmenter ce nombre…

De même, =equiv(-10^6;D:D;-1) trouve la position de la dernière valeur entrée en colonne D, sous réserve que toutes les valeurs soient supérieures à -10^6.

06 mars 2017

Les trois arguments d’equiv()

Dans l’article précédent, nous avons présenté la fonction equiv(). Dans celui-ci, nous analysons ce qu’elle donne avec chacun de des trois arguments.

L’argument 0

Quand le troisième argument est 0, Excel renvoie la position dans le vecteur de recherche de la première occurrence de la valeur cherchée. Dans notre exemple, la formule de B16, reproduite sous forme de texte dans la cellule B17, dit bien que c’est en ligne 6 que l’on trouve le premier 7.

Remarque – On peut se demander pourquoi Microsoft a choisi de prendre par défaut le « 1 » comme troisième argument alors que c’est le « 0 » qui est de loi le plus utile.

L’argument 1

Quand le troisième argument est 1, Excel renvoie la position de la dernière valeur inférieure ou égale à la valeur cherchée. Cela suppose en théorie que le vecteur dans lequel on effectue la recherche soit trié en ordre croissant, mais il n’y a là aucune obligation. Dans notre exemple, la formule de D16, reproduite sous forme de texte dans la cellule D17, dit bien que c’est en ligne 9 que l’on trouve la dernière valeur inférieure ou égale à 7.


Si l’on ajoute les valeurs de la colonne D, on peut constater que l’equiv() avec un 1 en troisième argument donne exactement le même résultat qu’un simple recherche(), avec la formule reproduite en D18.

L’argument -1

Quand le troisième argument est 1, Excel renvoie la position de la dernière valeur supérieure ou égale à la valeur cherchée. Cela suppose en théorie que le vecteur dans lequel on effectue la recherche soit trié en ordre décroissant, mais il n’y a là aucune obligation. Dans notre exemple, la formule de G16, reproduite sous forme de texte dans la cellule G17, dit bien que c’est en ligne 9 que l’on trouve la dernière valeur inférieure ou égale à 7.

On ne peut hélas pas, dans ce cas, trouver un équivalent avec la fonction recherche() car celle-ci ne sait pas gérer une liste de valeurs décroissantes. Mais on peut par exemple utiliser à cet effet la formule matricielle suivante : =max(si(F1:F13>=G15;ligne(G1:G13);0)). Cette formule est matricielle, donc validée avec [Ctrl]-[Maj]-[Entrée].