formateur informatique

Fonction VBA Excel d'évaluation par paliers

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Fonction VBA Excel d'évaluation par paliers
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner  Youtube    Vidos astuces Instagram
Sujets que vous pourriez aussi aimer :


Fonction VBA Excel d'évaluation

C'est une nouvelle fonction VBA que nous proposons d'ajouter à Excel, telle une nouvelle corde à son arc. Son rôle est de permettre une évaluation automatisée par tranches de critères numériques.

Analyse multicritère avec une fonction VBA Excel

Sur l'exemple illustré par la capture, en fonction de notes obtenues par des candidats en avant-dernière colonne d'un premier tableau, ce sont des appréciations correspondantes qui sont distillées en dernière colonne. Cette évaluation par paliers numériques est réalisée en fonction d'une grille de critères implantée dans un second tableau sur la droite du premier. Par exemple, ce sont les félicitations qui sont automatiquement retournées lorsque le score dépasse la note de 18 et les encouragements entre 15 et 18. Cinq autres paliers sont encore observés jusqu'à atteindre le score le plus bas possible.

Classeur Excel à télécharger
Pour créer cette fonction, nous suggérons d'appuyer l'étude sur un classeur offrant ce tableau et cette grille de conditions réparties par tranches. Nous retrouvons effectivement le tableau des résultats entre les colonnes B et E et la grille des critères entre les colonnes G et H.

Créer la fonction d'évaluation
Nous l'avons dit, cette fonction doit évaluer les scores obtenus en tenant bien sûr compte de la note mais aussi des tranches numériques du second tableau. Elle doit donc être déclarée avec deux paramètres en attente. Le premier doit être une cellule et le second, une plage de cellules. Il est intéressant de comprendre que nous allons créer une fonction capable de s'adapter si d'aventure le nombre de paliers numériques augmentait ou diminuait.
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel,
  • En haut de l'éditeur, cliquer sur le menu Insertion et choisir l'option Module,
Ainsi, nous créons un nouveau module dans ce projet. Sa feuille vierge apparaît au centre de l'écran. Cela signifie que cette fonction ne sera pas disponible pour toutes les utilisations d'Excel mais seulement pour ce classeur. Mais nous savons créer des fonctions VBA disponibles tout le temps. Il faut simplement créer un complément Excel comme le rappelle la formation du lien hypertexte. Donc, si elle vous intéresse pour des utilisations régulières, vous saurez comment faire. D'ailleurs, vous pouvez même documenter ces nouvelles fonctions comme le rappelle cette formation pour les enregistrer dans la bibliothèque Excel.
  • Dans la feuille de code, créer la fonction suivante :
Function notation(cel As Range, cond As Range) As String

End Function


Nous créons donc une fonction de type texte (As String). En effet, elle doit retourner des observations ou plutôt évaluations textuelles. En premier paramètre, nous déclarons l'objet cel (As Range) pour réceptionner la cellule de la note à évaluer. En second paramètre, nous déclarons la plage cond, celle des tranches numériques de critères.

Initialiser les variables objets
Pour prendre possession de ces paramètres, nous devons maintenant déclarer des variables de mêmes types et les affecter afin de les représenter.
  • Dans les bornes de la fonction, ajouter les déclarations et affectations suivantes :
...
Dim celluleN As Range
Dim cellule As Range: Dim plage As Range

Set celluleN = cel
Set plage = cond
...


Il s'agit de trois objets représentant des plages ou à défaut une cellule unique. celluleN doit représenter la cellule de la note à évaluer. plage doit représenter la plage des conditions numériques par paliers. cellule est une variable plus générale représentant une cellule au sens large, pour passer en revue toutes celles de la plage des tranches numériques. Et pour cela, nous l'exploiterons dans une boucle For Each.

Parcourir les tranches de critères
Maintenant, nous devons analyser chaque condition émise par la grille de requêtes en passant en revue chacune de ses valeurs numériques avec une boucle For Each, comme nous l'avons annoncé. Grâce à elle, nous pourrons confronter la note de la cellule passée en premier argument pour savoir si elle entre dans la catégorie conditionnelle. C'est ainsi que nous pourrons retourner l'évaluation correspondante.
  • A la suite du code VBA, créer la boucle For Each comme suit :
...
For Each cellule In plage

Next cellule
...


Notre objet cellule est du même type que l'objet plage et c'est important. C'est grâce à lui que nous pouvons parcourir toutes les cellules de la zone de critères numériques, passée en second paramètre.

Trouver la tranche du score
A chaque passage dans cette boucle désormais, nous devons vérifier un critère. Il consiste à comparer la valeur de la note du candidat avec le seuil de la tranche en cours d'analyse. Si cette note est supérieure, nous saurons que le bon palier est trouvé. Donc, nous pourrons retourner l'appréciation correspondante. Pour émettre une condition, nous devons déployer une instruction conditionnelle.
  • Dans les bornes de la boucle, ajouter les lignes VBA suivantes :
...
If (cel.Value > cellule.Value) Then
notation = Cells(cellule.Row, cellule.Column - 1).Value
Exit For
End If
...


Lorsque la note (cel.Value) est supérieure au critère numérique en cours d'analyse (cellule.Value), nous retournons l'information de la colonne précédente (cellule.Column - 1) sur la même ligne (cellule.Row). Il s'agit de l'appréciation correspondant à la tranche en cours. Et comme vous le savez en VBA, ce retour se fait par le nom même de la fonction (notation). Enfin et surtout, nous sortons de la boucle (Exit For). En effet, si une note est élevée, elle va correspondre à toutes les tranches. Nous devons donc nous arrêter sur la première trouvée, la plus élevée.

Tester la fonction d'évaluation
Il est temps d'utiliser cette nouvelle fonction pour vérifier les résultats qu'elle retourne.
  • Enregistrer les modifications (CTRL + S) et basculer sur la feuille du classeur (ALT + Tab),
  • Sélectionner la cellule E4 pour désigner l'emplacement de la première appréciation à livrer,
  • Taper le symbole égal (=) pour initier la syntaxe de la formule,
  • Inscrire le nom de la fonction suivi d'une parenthèse, soit : notation(,
  • Désigner la première note à évaluer en cliquant sur sa cellule D4,
  • Taper un point-virgule (;) pour passer dans l'argument de la plage de critères,
  • Sélectionner tous les critères numériques, soit la plage de cellules H4:H9,
  • Enfoncer la touche F4 du clavier pour figer cette plage, ce qui donne : $H$4:$H$9,
En effet, cette formule est ensuite destinée à être répliquée sur les lignes du dessous. En suivant le mouvement, ce sont bien les notes du dessous qui devront être confrontées tour à tour à la plage de critères. Et précisément cette plage de critères elle, ne doit pas bouger pendant la réplication.
  • Fermer la parenthèse de la fonction notation,
  • Puis, valider la formule avec le raccourci clavier CTRL + Entrée,
Grâce à lui et comme vous le savez, nous gardons active la cellule du résultat pour pouvoir l'exploiter dans l'enchaînement sans devoir la resélectionner. Quoiqu'il en soit et comme vous pouvez le voir, la première sentence tombe. Il s'agit de l'appréciation Assez bien qui correspond effectivement à la fourchette de critères 12 à 15.
  • Double cliquer sur la poignée du résultat pour répliquer la logique sur la hauteur du tableau,
Toutes les appréciations sont désormais livrées et elles sont toutes parfaitement cohérentes avec la grille de critères.

Fonction VBA Excel pour des résultats par palliers numériques

Bien sûr, si vous changez l'une ou l'autre note, vous voyez que l'appréciation s'actualise automatiquement à validation. Cette fonction d'analyse multicritère est particulièrement intéressante dans la mesure où elle accepte une plage de cellules non figée pour gérer ses conditions évolutives. Par exemple, vous pouvez très bien ajouter une nouvelle ligne dans cette grille de critères. Dès lors, si vous adaptez la formule déjà en place en agrandissant la plage de son second argument, vous remarquez qu'elle considère instantanément cette nouvelle tranche.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn