Répartition des dépenses avec Excel et le VBA

Répartition des dépenses avec Excel et le VBA
Dernière mise à jour le 21/04/2024
Temps de lecture : 4 minutes

Comment faire la répartition des dépenses (qui doit de l'argent à qui) ? Le problème n'est pas si simple à résoudre mais le programme VBA suivant va vous permettre de solutionner ce problème.

Présentation du problème

Le tableau suivant présente les dépenses engagées par les membres d'une association pour l'organisation d'un voyage. Les frais étaient l'essence, le péage, le parking, ... tous les frais qu'il est difficile de diviser. Maintenant, comment faire le calcul de répartition des dépenses après coup ?

Donnees de base a repartir

Insérer les données dans un Tableau

Pour simplifier le code VBA, il est indispensable d'insérer les données dans un Tableau (Insertion > Tableau)

Menu insertion Tableau

Et instantanément vos données sont dans un Tableau coloré. La couleur sert à identifier la limite de vos données (mais la couleur peut être changée).

Insertion des donnees dans un Tableau

Changer le nom du Tableau

L'avantage de travailler avec un Tableau dans un programme VBA, c'est que l'on peu faire référence à son nom très facilement. Ainsi, peu importe sa position (ligne et colonne) dans le classeur, le programme VBA saura toujours trouver les données ?

Dans le programme, nous avons donné le nom tbl_Depense à notre Tableau (Création de Tableau > Nom du Tableau)

Inserer les donnees dans un Tableau et choisir son nom

Comme nous allons le voir dans le code VBA, le fait d'attribuer un nom précis au tableau et aux colonnes, va permettre de "lire" les données plus facilement.

IMPORTANT de conserver le nom du Tableau et aussi DES COLONNES comme le montre le bout de code suivant

'Récupérer les données dans le Tableau (avec le nom des colonnes)
    TbloNoms = Range("tbl_Depense[Nom]")
    TbloPaye = Range("tbl_Depense[Somme payée]")

Code complet

Principe de la logique du code

Tout le principe du calcul est basé sur la moyenne globale.

QuotePart = Application.WorksheetFunction.Average(Range("tbl_Depense[Somme payée]"))

A partir de la moyenne, il est facile de savoir ceux qui doivent de l'argent (inférieur à la moyenne) et ceux qui doivent recevoir de l'argent (supérieur à la moyenne).

A la fin de l'exécution de la macro VBA, nous avons le résultat final suivant

Repartition des depenses apres le traitement VBA

Contrôle du résultat

Pour savoir qui doit combien, il est très facile de créer une fonction SOMME.SI.ENS pour les personnes qui doivent de l'argent à plusieurs personnes.

=SOMME.SI.ENS(E4:E10;D4:D10;D12) => 5,87

Total des sommes a verser pour un individu

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

MVP_logo_2017

Répartition des dépenses avec Excel et le VBA

Reading time: 4 minutes
Dernière mise à jour le 21/04/2024

Comment faire la répartition des dépenses (qui doit de l'argent à qui) ? Le problème n'est pas si simple à résoudre mais le programme VBA suivant va vous permettre de solutionner ce problème.

Présentation du problème

Le tableau suivant présente les dépenses engagées par les membres d'une association pour l'organisation d'un voyage. Les frais étaient l'essence, le péage, le parking, ... tous les frais qu'il est difficile de diviser. Maintenant, comment faire le calcul de répartition des dépenses après coup ?

Donnees de base a repartir

Insérer les données dans un Tableau

Pour simplifier le code VBA, il est indispensable d'insérer les données dans un Tableau (Insertion > Tableau)

Menu insertion Tableau

Et instantanément vos données sont dans un Tableau coloré. La couleur sert à identifier la limite de vos données (mais la couleur peut être changée).

Insertion des donnees dans un Tableau

Changer le nom du Tableau

L'avantage de travailler avec un Tableau dans un programme VBA, c'est que l'on peu faire référence à son nom très facilement. Ainsi, peu importe sa position (ligne et colonne) dans le classeur, le programme VBA saura toujours trouver les données ?

Dans le programme, nous avons donné le nom tbl_Depense à notre Tableau (Création de Tableau > Nom du Tableau)

Inserer les donnees dans un Tableau et choisir son nom

Comme nous allons le voir dans le code VBA, le fait d'attribuer un nom précis au tableau et aux colonnes, va permettre de "lire" les données plus facilement.

IMPORTANT de conserver le nom du Tableau et aussi DES COLONNES comme le montre le bout de code suivant

'Récupérer les données dans le Tableau (avec le nom des colonnes)
    TbloNoms = Range("tbl_Depense[Nom]")
    TbloPaye = Range("tbl_Depense[Somme payée]")

Code complet

Principe de la logique du code

Tout le principe du calcul est basé sur la moyenne globale.

QuotePart = Application.WorksheetFunction.Average(Range("tbl_Depense[Somme payée]"))

A partir de la moyenne, il est facile de savoir ceux qui doivent de l'argent (inférieur à la moyenne) et ceux qui doivent recevoir de l'argent (supérieur à la moyenne).

A la fin de l'exécution de la macro VBA, nous avons le résultat final suivant

Repartition des depenses apres le traitement VBA

Contrôle du résultat

Pour savoir qui doit combien, il est très facile de créer une fonction SOMME.SI.ENS pour les personnes qui doivent de l'argent à plusieurs personnes.

=SOMME.SI.ENS(E4:E10;D4:D10;D12) => 5,87

Total des sommes a verser pour un individu

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.