Bonjour,
La bonne pratique d'utilisation d'excel est d'organiser ses feuilles de données comme des tables dans Access et utiliser d'autres feuilles comme des formulaires afin de visualiser les données se trouvant sur plusieurs feuilles.
Ainsi dans ton cas, l'idéal serait d'utiliser la première ligne avec les étiquettes de colonnes Date, Code, Tiers, Libellé, Montant etc... ensuite à partir de la deuxième ligne les données concernées.
Tu pourrais ensuite créer une feuille avec les tiers Nom, Adresse etc.. et ainsi de suite.
Une feuille de consultation pourrait te permettre d'obtenir le total par poste des tiers et ce à l'aide de la formule SOMMEPROD dans un tableau que tu pourrais rendre dynamique en utilisant le mois de référence grâce à la formule DATE où l'argument année et mois serait l'année et le mois de la date du jour et ensuite obtenir les mois qui précèdent toujours à l'aide de la formule DATE en faisant référence à la cellule de gauche.
Synopsis
Pour notre exemple, prenons une feuille nommée MVT qui contient les mouvements d'argent (Salaire, Télécom, Gaz électricité etc).
Toutes les colonnes de la feuille MVT sont nommées avec le préfixe dbMvt_ suivi du nom de la colonne. Ainsi la colonne Date est nommée dbMvt_Date
La feuille de consultation contient en colonne A le nom des tiers, la B le libellé (Proprio, Electricité etc...) en C la somme totale par tiers en D le mois en cours (Date calculée dynamiquement par la formule DATE)
=DATE(ANNEE(_workDay);MOIS(_workDay);1)
_workDay est une formule nommée qui correspond à la date du jour mais qui me permet lors de mes tests de simuler une autre date du jour donc _workDay peut-être remplacé par la fonction AUJOURDHUI().
Ensuite les colonnes E à K les mois qui précèdent et ce calculé toujours à l'aide de la formule DATE (cf formule de la cellule E1)
=DATE(ANNEE(D1);MOIS(D1)-1;1)
Les dates de la ligne 1 peuvent être formatée avantageusement à l'aide du format personnalisé avec cette syntaxe mmm aa
Ensuite de la cellule D1 à Kx (x représentant le nombre de lignes) la formule SOMMEPROD qui reprend par tiers (ligne correspondante) et par mois correspondant à la colonne les montants des dépenses ou recettes.
=SOMMEPROD((ANNEE(D$1)=ANNEE(dbMvt_Date))*(MOIS(D$1)=MOIS(dbMvt_Date))*($A2=dbMvt_Tiers)*dbMvt_Montant)
Ensuite tu pourrais créer une feuille pour consulter par tiers les mouvements par années, mois etc... que tu pourrais activer par l'outil Validation de données - Liste ou un contrôle ActiveX ComboBox ou ListBox
L'organisation de la feuille MVT permet bien entendu de profiter de l'extraordinaire outil qu'est le Tableau croisé dynamique.
Attention pas de cellules fusionnées dans les feuilles de données cela perturbe les tris, filtres et le tableau croisé dynamique.
En conclusion, l'utilisation du VBA n'est absolument pas nécessaire pour ce type d'application et je suis convaincu que l'apprentissage des formules et outils natifs d'excel est bien plus profitable au début que d'apprendre le VBA qui peut toujours venir par la suite mais alors avec une très bonne connaissance d'Excel ce qui est un atout majeur et pour moi indispensable pour utiliser le VBA pour excel.
Bonne chance pour ce projet.
Partager