Tableau de bord

Salut

Je suis un débutant en vba et j'ai une question à vous poser.

Je souhaite présenter un tableau récapitulatif présentant la somme de chiffres en fonction de certains critères.

Pour être clair, j'ai une base de données de 5000 lignes (chiffre pour exemple) avec une colonne B présentant 3 critères (CRI_1, CRI_2 et CRI_3), une colonne C présentant les mois de l'année, une colonne D présentant des montants (en € sans décimale) et une colonne E pour le contrôle (1 pour Ok et 0 pour non_OK)

Cette base de données est sur la 1ère feuille nommée "BDD" et le tableau de bord est sur la 2ème feuille nommée "TDB"

Je souhaiterai donc présenter un TDB sur 3 lignes (CRI_1, CRI_2 et CRI_3) et 12 colonnes (janvier à décembre).

Dans chaque cellule, figurera la somme des montants correspondants aux critères (CRI_1 et janvier et contrôle OK) pour la première et ainsi de suite).

Je pense avoir réussi à me débrouiller pour la boucle mais je sèche pour écrire le code qui me permettra d'écrire la somme avec les conditions.

Quelqu'un peut-il m'aider ?

Merci

Un tableau croisé dynamique (TCD) devrait être suffisant si les données sont normalisées (Base de données).

Dans l'affirmative, pas besoin de VBA (macros).

Cdlt

Bonjour Jean--Eric

Merci pour cette réponse rapide et pleine de bon sens.

Le but final étant qu'un utilisateur clique sur un bouton "tdb" et obtienne le fameux tableau de bord, j'ai intégré le code vba dans mon programme.

Ca marche, pas de soucis sauf que les bornes de la base de données sont inscrites en dur dans le programme :

R1C1 : R2241C9 si ma BDD fait 2241 lignes sur 9 colonnes.

Mais si j'ajoutes des enregistrements dans ma BDD, les lignes après 2241 ne seront pas prises en compte.

As tu une solution ?

Merci

Re,

A adapter

Tu nommes ta BDD en dynamique avec:

=DECALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A);NBVAL(Feuil1!$1:$1))

Un ajout ou une suppression de lignes redimensionne automatiquement la BDD.

Mais sans fichier

Cdlt

Jean-Eric a écrit :

Re,

A adapter

Tu nommes ta BDD en dynamique avec:

=DECALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A);NBVAL(Feuil1!$1:$1))

Un ajout ou une suppression de lignes redimensionne automatiquement la BDD.

Mais sans fichier

Cdlt

Voici mon code dans lequel je n'ai pas réussi à incorporer ton expression avec en rouge la partie à corriger

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _

"BDD!R1C1:R2482C9", Version:=xlPivotTableVersion12). _

CreatePivotTable TableDestination:="TDBD!R3C1", TableName:= _

"Tableau croisé dynamique", DefaultVersion:=xlPivotTableVersion12

J'ai essayé de trouver le dernière ligne avec :

derniere_ligne = Sheets("BDD").Range("A1").End(xlDown).Row

Ce code me renvoie bien le n° de la dernière ligne mais je n'arrive pas à remplacer "2482" par "derniere_ligne".

Merci de ton aide

Rechercher des sujets similaires à "tableau bord"