Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :
Fonctions VBA Excel portables avec descriptions
Dans la formation précédente, nous avons
créé deux nouvelles fonctions de feuille de calcul , grâce au
code Visual Basic Excel . A l'instar des
fonctions conditionnelles Nb.si et
Somme.Si , ces fonctions permettent de dénombrer et sommer en fonction de la
couleur de remplissage des cellules . Nous les avons respectivement nommées
nbCouleurs et
sommeCouleurs . Cependant, à ce stade, ces fonctions étant attachées au classeur dans lequel elles ont été créées, ne sont disponibles que pour ce dernier.
L'objectif de cette formation consiste à les rendre disponibles pour toute utilisation d'Excel, quel que soit le classeur. Et comme l'illustre la capture ci-dessus, nous souhaitons qu'un descriptif apparaisse dans l'
assistant fonctions d'Excel . Ainsi, l'utilisateur saura comment les exploiter, sans même les connaître.
Sources et présentation
Il n'est pas question ici de reconstruire ces
fonctions . Nous proposons de les récupérer avec le classeur à partir duquel elles ont été construites.
Ce classeur est constitué des
feuilles Classement et Sommes_couleurs sur lesquelles nous avions testé les fonctions créées par le
code VBA . La seconde feuille notamment avait permis de tester la version surchargée de la
fonction sommeCouleurs . En effet, Ã l'instar de la
fonction Somme.Si , nous avions déclaré son troisième argument comme facultatif. De fait, elle peut être exploitée pour réaliser des additions sur une plage où le critère est compté. Mais elle peut aussi calculer la somme sur une plage de cellules en fonction des couleurs décelées sur une autre plage.
Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur de code VBA Excel ,
Dans l'explorateur de projet sur la gauche, déployer l'affichage du dossier Modules ,
Puis, double cliquer sur l'élément Module1 pour afficher sa feuille de code,
Vous y notez effectivement la présence des
fonctions VBA nbCouleurs et
sommeCouleurs . Dans le classeur actif, si vous débutez le calcul dans une cellule vierge par le symbole égal et que vous tapez les premières lettres de l'une ou l'autre,
Excel les propose contextuellement, sous forme d'info-bulle.
Revenir sur la feuille du classeur (ALT + F11),
Créer un nouveau classeur à l'aide du raccourci clavier CTRL + N par exemple ,
Dans une cellule, taper le symbole = pour débuter le calcul,
Puis, saisir les premières lettres de la fonction nbCouleurs ,
Comme l'illustre la figure ci-dessus, dans ce nouveau contexte, nos fonctions ne sont pas reconnues par Excel. Seule la fonction NbCar qui commence par les mêmes lettres, est proposée.
Le classeur de macros personnelles
Une solution pour rendre ces fonctions portables, consisterait à les enregistrer dans le
classeur de macros personnelles , soit le
fichier personal.xlsb . C'est d'ailleurs ce que nous avions fait dans la
formation pour personnaliser l'environnement de travail , afin que les boutons du nouveau ruban restent fonctionnels, pour toutes les utilisations d'Excel.
Fermer le nouveau classeur (CTRL + W) pour revenir sur le précédent,
Puis, basculer dans l'éditeur de code VBA Excel (ALT + F11),
Dans l'
explorateur de projet sur la gauche de l'éditeur, vous devriez noter la présence du projet associé au
classeur de macros personnelles (Personal.xlsb).
Si tel n'est pas le cas, deux actions permettent d'y remédier. Soit depuis le
ruban Affichage d'une feuille Excel, vous cliquez sur le
bouton Afficher . Dans la boîte qui suit, vous sélectionnez
Personal.xlsb et vous cliquez sur Ok. Soit, vous créez une nouvelle
macro automatique temporaire que vous enregistrez dans le
classeur de macros personnelles . Cette dernière action aura aussi pour effet de le réactiver.
Dans l'éditeur VBA Excel , sélectionner le code des deux fonctions nbCouleurs et sommeCouleurs (Du Sub au End Sub pour les deux),
Couper les éléments sélectionnés grâce au raccourci clavier CTRL + X ,
Dans l'explorateur de projet sur la gauche, sélectionner VBAProject (Personal.xlsb) ,
Ensuite, cliquer sur le menu Insertion en haut de l'éditeur,
Puis, choisir Module dans la liste,
Dans la feuille de code du nouveau module qui apparaît, coller (CTRL + V ) le code VBA précédemment coupé,
Enregistrer les modifications (CTRL + S) et basculer sur la feuille Excel (ALT + F11),
Créer un nouveau classeur (CTRL + N),
Dans une cellule, taper le symbole = pour débuter le calcul,
Puis taper les premières lettres de l'une des deux fonctions,
Comme vous le remarquez,
Excel ne les suggère toujours pas. Elles ne semblent pas être reconnues. Pourtant, nous les avons bien collées dans le
modèle Excel , celui qui porte toutes les préférences pour toutes les utilisations du tableur.
En réalité, elles sont bien présentes mais sont préfixées. C'est ce que nous proposons de constater.
Cliquer sur l'onglet Formules en haut de la fenêtre Excel pour activer son ruban,
Tout à fait à gauche du ruban, cliquer sur le bouton Insérer une fonction ,
Dans la boîte de dialogue qui suit, choisir la catégorie Personnalisées à l'aide de la liste déroulante,
Comme vous le remarquez et comme l'illustre la capture ci-dessus, les deux fonctions font désormais bien partie de la librairie des fonctions de feuille de calcul Excel. Mais un problème de taille surgit. Elles sont préfixées du nom du
modèle Excel , soit
Personal.xlsb! . Et, pour des raisons d'ergonomie et de simplicité, nous souhaitons les exploiter directement par leur nom.
Créer un complément de fonctions Excel
Le
classeur de macros personnelles n'est donc pas une solution satisfaisante pour rendre disponibles nos fonctions, par leurs noms, pour chaque classeur Excel. La solution consiste à créer un
complément Excel puis à l'ajouter en référence de l'application. Comme nous l'avait appris la
formation VBA pour créer des fonctions disponibles partout , une fois la référence ajoutée, les fonctions s'exploitent naturellement par leur nom et pour tout classeur.
Fermer la boîte de dialogue des fonctions,
Conserver le nouveau classeur ouvert,
Basculer dans l'éditeur de code VBA Excel ,
Sélectionner de nouveau l'intégralité des deux fonctions précédemment collées dans le nouveau module du classeur de macros personnelles,
Les couper à l'aide du raccourci clavier CTRL + X ,
Dans l'explorateur de projet, sélectionner l'élément VBA Project du nouveau classeur,
Cliquer sur le menu Insertion en haut de l'éditeur puis sur Module dans la liste,
Dans la feuille de code vierge qui apparaît, coller le code VBA des deux fonctions (CTRL + V),
Pour que le
complément soit pleinement fonctionnel, nous souhaitons réaliser quelques opérations avant de l'enregistrer. Il s'agit de décrire les deux nouvelles fonctions afin que des indications soit fournies à l'utilisateur depuis la boîte de dialogue des
fonctions Excel .
Cliquer sur le menu Affichage en haut de l'éditeur de code VBA,
Dans la liste, choisir Explorateur d'objets ,
Une nouvelle fenêtre apparaît. Elle offre la liste complète de tous les objets, propriétés, méthodes et fonctions disponibles en
VBA Excel .
Faire défiler la liste de droite vers le bas jusqu'à trouver la fonction nbCouleurs ,
Cliquer avec le bouton droit de la souris sur cette dernière,
Dans le menu contextuel, choisir Propriétés ,
Dans la zone Description de la boîte de dialogue qui apparaît, saisir l'indication suivante :
Compte les cellules de la couleur portée par la cellule définie en deuxième argument. -1er argument : Plage de cellules où compter. - 2nd argument : Cellule avec la couleur de fond de référence.
Puis, cliquer sur Ok pour valider,
De la même façon, il s'agit d'ajouter une description pour la seconde nouvelle fonction.
Faire défiler la liste de droite vers le bas jusqu'à trouver la fonction sommeCouleurs ,
Cliquer avec le bouton droit de la souris sur cette dernière,
Dans le menu contextuel, choisir Propriétés ,
Dans la zone Description de la boîte de dialogue qui apparaît, saisir l'indication suivante :
Somme les valeurs des cellules possédant la même couleur que la cellule définie en deuxième argument. 1er argument : Plage de cellules où chercher la couleur. 2ème argument : Cellule de couleur de référence - 3ème argument [Facultatif] : Plage de cellules correspondantes où sommer. Si ce troisième argument n'est pas défini, la somme est réalisée sur la première.
Valider cette description par le bouton Ok,
Fermer l'explorateur d'objets en cliquant sur sa croix en haut à droite,
Réaliser le raccourci clavier CTRL + S pour enregistrer ce nouveau classeur,
Dans la zone Type, en bas de la boîte de dialogue qui suit, choisir Complément Excel (*.xlam) ,
Comme vous le remarquez et comme l'illustre la barre d'adresse de la capture ci-dessus,
Excel vous redirige vers l'emplacement centralisé des
compléments . Il convient d'accepter cette destination pour que le
complément soit reconnu sans difficulté par
Excel .
Dans la zone Nom de fichier, saisir fct-couleurs.xlam ,
Puis, cliquer sur le bouton Enregistrer pour valider,
De retour dans l'éditeur de code, vous remarquez que le nom du classeur n'a pas changé. Nous avons en effet enregistré une déclinaison de ce dernier. Le complément existe mais pour qu'il soit fonctionnel, il doit être lié à l'
application Excel . Nous devons donc l'ajouter en
référence . Mais avant cela, pour éviter toute confusion, il s'agit de fermer les classeurs ouverts.
Basculer sur l'application Excel (ALT + F11),
Fermer le nouveau classeur (CTRL + W) sans l'enregistrer,
Fermer le classeur source fonctions-vba-couleurs.xlsm , sans l'enregistrer,
Créer un nouveau classeur Excel (CTRL + N),
Cliquer sur l'onglet Développeur en haut de la fenêtre Excel pour activer son ruban,
Dans la section Compléments, cliquer sur le bouton Compléments Excel ,
Dans la boîte de dialogue qui apparaît, cocher la case fct-couleurs ,
Il s'agit du nom que nous avons attribué au
complément que nous avons créé lors de l'enregistrement. Il est directement reconnu car nous avons accepté la destination centralisée que nous a proposée
Excel .
Cliquer sur le bouton Ok pour valider,
Désormais et jusqu'à nouvel ordre, la
référence est ajoutée. Le lien avec le
complément existe pour toutes les utilisations d'Excel sur ce poste, sans exception. Nos fonctions doivent désormais être disponibles et exploitables directement par leurs noms.
Pour tester la désormais portabilité des fonctions de calculs que nous avons créées en VBA, il s'agit de réaliser un petit test, comme illustré par la capture ci-dessous.
Nous avons inscrit quelques valeurs d'essai en colonne B, entre les lignes 2 et 10. Nous avons attribué une couleur de remplissage, seulement à certaines d'entre elles. En Cellule D6, après le symbole égal, nous avons tapé les premières lettres de la
fonction nbCouleurs . Celle-ci a été reconnue et proposée par Excel, grâce au complément. Nous l'avons sélectionnée. En premier argument, nous avons défini la
plage de cellules B2:B10 . En deuxième argument, nous avons désigné la
cellule D3 que nous avions remplie de la couleur à trouver. La fonction a retourné le chiffre 4, prouvant qu'elle a bien réussi à comptabiliser toutes les cellules portant la couleur de référence, dans la plage désignée.
De la même façon, si vous tapez les premières lettres de la
fonction sommeCouleurs après le symbole égal, dans une nouvelle cellule, vous constatez qu'elle est aussi reconnue et ce, indéfiniment. Mais plus intéressant encore, les manipulations que nous avons réalisées depuis l'
explorateur d'objets VBA , ont permis de leur ajouter des descriptions. Ces indications doivent aider l'utilisateur non-averti à les exploiter.
Cliquer sur l'onglet Formules en haut de la fenêtre Excel pour activer son ruban,
Tout à fait à gauche de ce dernier, cliquer sur le bouton Insérer une fonction ,
Dans la boîte de dialogue qui suit, choisir la catégorie Personnalisées ,
Comme vous le constatez, les nouvelles fonctions de calcul sont proposées et accompagnées d'une indication précieuse pour savoir comment les exploiter. Nous avons donc réussi à ajouter des nouvelles fonctions dans la
bibliothèque des fonctions Excel . Elles seront désormais disponibles tout le temps. Si d'aventure vous ne les souhaitiez plus, il suffirait de décocher la case du
complément Excel , à partir du
ruban Développeur .