formateur informatique

Consolider les ventes cochées en VBA Excel

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Consolider les ventes cochées en VBA Excel
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 :


Consolider les ventes cochées

A l'occasion de cette nouvelle astuce VBA Excel, nous allons découvrir comment additionner les montants numériques dont les cases sont cochées par l'utilisateur et ce, avec une facilité déconcertante.

Sommer les valeurs des cases cochées en VBA Excel

Sur l'exemple illustré par la capture, dès que l'utilisateur clique sur une case à cocher, son montant associé, dans la colonne voisine de gauche, est cumulé dans la synthèse fournie sur la droite du tableau, pour la même ligne.



Classeur Excel à télécharger
Pour développer cette solution, nous suggérons d'appuyer l'étude sur un classeur Excel offrant ce tableau annuel des ventes. Nous retrouvons bien le tableau annuel (en lignes) des ventes par articles (en colonnes). Les synthèses sont automatiquement calculées grâce à la fonction d'addition conditionnelle Somme.Si :

=SOMME.SI(D4:N4; "þ"; C4:M4)

La somme est entreprise sur la ligne du mois en cours (C4:M4) dans la mesure où la cellule adjacente à la plage (D4:N4) porte la valeur þ. Souvenez-vous en effet, toutes les fonctions classiques comme la somme et la moyenne, sont capables d'ignorer dans leurs calculs, toutes les cellules qui ne sont pas numériques. Ce symbole (þ) est issu de la police Wingdings. Toutes les colonnes des cases à cocher (D, F, H, J, L, N) sont ainsi formatées. Ce symbole retranscrit une case cochée tandis que la lettre o retranscrit une case décochée. Ce sont ces lettres ou symboles que nous allons exploiter par le code VBA Excel, au clic de l'utilisateur, pour ajouter ou retirer de la somme le montant correspondant, selon que sa caseadjacente est cochée ou décochée.

Code VBA au clic sur une cellule
Nous devons donc déclencher l'exécution automatique d'un code VBA au clic sur une cellule. Si la cellule cliquée porte le symbole þ, nous devons le remplacer par le symbole o pour décocher la case et inversement par le symbole þ, pour cocher la case. Mais cette exécution doit intervenir sur des cellules spéciales pour ne pas consommer inutilement les ressources. Ces cases à cocher ou à décocher sont situées entre les lignes 4 et 15 pour les colonnes D, F, H, J, L et N, soit des colonnes paires. Vous l'avez compris, la fonction Mod va être précieuse dans ce développement.
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel,
  • Dans l'explorateur de projet, double cliquer sur l'élément Feuil1 (SommesSiCochees),
De cette manière, nous affichons la feuille de code VBA (vierge pour l'instant) associée à la feuille Excel de notre tableau des ventes.
  • En haut de l'éditeur, déployer la liste déroulante de gauche,
  • Dans les propositions, choisir l'élément Worksheet,
Code VBA Excel déclenché au clic sur une cellule de la feuille

C'est ainsi que nous créons la procédure évenementielle Worksheet_SelectionChange. C'est elle qui va permettre de déclencher un code VBA au clic de l'utilisateur dans une cellule de la feuille, mais rappelons-le, pas n'importe laquelle. Le paramètre en attente (Target) est très important. Il désigne la cellule précisément cliquée par l'utilisateur. Grâce à lui, nous pourrons savoir si la cellule cliquée est celle d'une case à cocher ou à décocher.



Tester la cellule cliquée
Nous devons donc premièrement tester ce paramètre pour savoir si la cellule cliquée est bien située entre les lignes 4 et 15 et entre les colonnes 4 et 14 sachant que l'indice de colonne de cette dernière doit être pair. C'est ainsi que nous ne déclencherons pas un code VBA inutilement, dans l'optique de préserver les ressources de la solution. L'objet Target est un objet de type Range (Plage de cellules ou cellule seule). Il offre donc les propriétés Row et Column pour connaître la ligne et la colonne de la cellule cliquée.
  • Dans les bornes de la procédure événementielle, créer l'instruction conditionnelle suivante :
...
If Target.Count = 1 And Target.Column >= 4 And Target.Column <= 14 And Target.Column Mod 2 = 0 And Target.Row >= 4 And Target.Row <= 15 Then

End If
...


Grâce à la propriété Count de l'objet Target, nous nous assurons tout d'abord que seule une cellule a été cliquée et non plusieurs. Dans le même temps (And), grâce aux propriétés Column et Row, nous vérifions que cette cellule cliquée est bien située entre les colonnes 4 et 14 (D et N) et entre les lignes 4 et 15, celles du tableau des ventes. Toujours dans le même temps (And), grâce à l'opérateur Mod (Mod 2 = 0), nous nous assurons que l'indice de colonne de la cellule cliquée est bien pair, en d'autres termes qu'il s'agit d'une case à cocher ou à décocher.



Cocher ou décocher la case cliquée
Lorsque toutes ces conditions sont réunies, étant donné que les cellules concernées sont formatées dans la police Wingdings, pour les cocher ou les décocher au clic de l'utilisateur, il suffit simplement de remplacer le symbole þ par la lettre o pour décocher et inversement de remplacer la lettre o par le symbole þ, pour cocher.
  • Dans les bornes de l'instruction conditionnelle, ajouter la ligne VBA suivante :
...
Target = IIf(Target = "þ", "o", "þ")

...

C'est une nouvelle astuce que nous présentons ici. L'instruction IIf est une contraction de l'instruction conditionnelle If pour en simplifier la syntaxe. Si la valeur portée par la cellule cliquée vaut le symbole þ, nous la remplaçons par la lettre o. Le cas échéant, nous inscrivons le symbole þ à la place de la lettre o.

Additionner en fonction des cases cochées
Il ne nous reste plus qu'à tester ce léger code VBA Excel épaulé par la formule exploitant la fonction de somme conditionnelle sur les lignes du tableau.
  • Enregistrer les modifications (CTRL + S) et revenir sur la feuille Excel (ALT + Tab),
  • Puis, cliquer sur des cases cochées ou décochées,
Consolider les données en cochant ou en décochant des cases en VBA Excel

Dans le premier cas, vous constatez que les montants se cumulent pour le mois en cours et dans le second, que la valeur correspondant à la case est soustraite.

Voilà donc un moyen original et ergonomique pour obtenir des synthèses sans équivoque en VBA Excel.

 
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