Nous avons réaliser un article sur les tableaux croisés dynamiques (TCD) qui s’adresse aux débutants.
Vous pouvez le consulter grâce à ce lien :
Comment utiliser un tableau croisé dynamique
Pour les moins débutants, voici une petite astuce en VBA pour actualiser un tableau croisé dynamique automatiquement dès que vous modifiez une donnée brute.
Normalement, vous faites un clique droit sur votre tableau et vous faites « Actualiser ». Cette opération peut devenir longue et pénible surtout si vous modifiez souvent vos données.
EXEMPLE
Suivant le TCD ci-dessous
Que nous avons créé à partir des données ci-dessous
Nous récupérons sur la case C9 le résultat du TCD (Feuil2!B12)
Note: Nous changerons le nom des onglets plus tard
Nous voyons que si on modifie l’age de Ludovic par exemple, le total des âges ne sera pas mis à jour automatiquement.
Le total reste à 212!
Il faudra faire clique droit sur le TCD pour la mise à jour.
Bon ok cela fonctionne très bien en faisant comme cela.
De façon automatique cela vous intéresse? Oui sinon vous ne seriez pas là
MISE EN PLACE
Retourner sur votre TCD et faites clique droit dessus
Cliquer sur « Options du tableau croisé dynamique… »
Nous allons lui donner un Nom qui sera utilisé dans notre code VBA
► nous le nommons « TCD »
Cliquer sur « OK »
Pour bien comprendre le code VBA, nous allons aussi renommer les onglets de notre classeur.
Pour les données ► Onglet « Données »
Pour le TCD ► Onglet « Tableau »
CODE VBA
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Application.EnableEvents = False Sheets("Tableau").PivotTables("TCD").RefreshTable Application.EnableEvents = True End Sub
Voici ce que cela doit donner dans votre éditeur VBA
Noter bien que nous mettons les ligne de codes dans la Feuil2(Données)
Cela ne fonctionnera pas sinon!
La ligne Sheets(« Tableau »).PivotTables(« TCD »).RefreshTable est importante.
Elle donne l’endroit ou se trouve votre TCD et son Nom.
Sheets(« Tableau ») ► Pour le nom de l’onglet
PivotTables(« TCD ») ► Pour le nom du TCD que vous lui avez donné précédement.
RESULTAT
Maintenant à chaque fois que vous allez changer une donnée brute, votre TCD sera mise à jour automatiquement sans autres interventions de votre part.
Bien sur cela s’appliquera à toutes vos données présentent sur le TCD (pas seulement l’âge de Ludovic!)
ATTENTION : N’oublier pas d’enregistrer votre fichier avec prise en charge des macros
Il n’est pas rare que si vous faites beaucoup de modifications sur votre fichier cela ne fonctionne pas correctement. Dans ce cas corriger votre code, sauvegarder votre travail et relancer le fichier.
I have noticed you don’t monetize excelastuces.fr, don’t waste your
traffic, you can earn additional cash every month with new monetization method.
This is the best adsense alternative for any type of website (they approve all sites), for
more details simply search in gooogle: murgrabia’s tools
Thanks for your feedback
currently we just want to share our tips
The monetization will happen because it will be used to strengthen our site and allow us to stay as long as possible on the net.
Thank you again for your comment. However, we are a French site thanks for making a small effort to comment in French;)
Merci pour votre retour
actuellement nous souhaitons juste partager nos astuces
La monétisation arrivera car il sera utilisé pour renforcer notre site et nous permettre de rester le plus longtemps possible sur le net.
Encore merci pour votre commentaire. Toutefois, nous sommes un site francophone merci de faire un petit effort pour commenter en français 😉
bonjour
merci de votre aide c est top
courage c est juste genial
merci a vous
Merci beaucoup pour votre commentaire Jean-Louis
Bonjour,
merci pour cette article, c’est exactement ce que je recherche.
j’ai suivis toute la procédure, à la lettre, mon fichier prend en charge les macros.
Mes onglets ont le même nom que les vôtres, tout est identique.
(la seule chose qui diffère que que chez moi c’est la feuil1 qui s’appelle (Données) et la feuil2 qui s’appelle (Tableau))
Je reprend tout à zéro, création du tableau dynamique, création du code VBA sur l’ongle « données », etc…
Une fois tout validé, quand je change une valeur dans l’onglet « données » le tableau ne se met pas à jour.
Je remet l’ancienne valeur, enregistre le fichier et le ferme.
Lorsque je rouvre celui-ci, je tente de modifier une valeur, une fenêtre s’ouvre::
nom de fenêtre: Microsoft Visual Basic
Erreur d’exécution ‘9’:
L’indice n’appartient pas à la sélection.
La fenêtre me propose comme choix: Fin ou Débogage ou Aide
L’option Débogage m’amène sur la fenêtre VBA et me souligne en jaune la ligne: Sheets(« Tableau »).PivotTables(« TCD »).RefreshTable
Auriez vous une solution à mon problème?
Cordialement
Romain
Bonsoir Romain, avez vous bien nommé votre tableau croisé dynamique « TCD »?
Bonjour,
Merci beaucoup pour ces explications limpides. Le vba est décidément un langage des plus obscures pour moi haha
Je débute un peu et quelque chose m’échappe : de mon interprétation la macro est déclarée mais elle n’est appelé à aucun moment comment s’exécute elle alors ? D’ailleurs de mon côté cela ne fonctionne pas …
Hélas je me suis rendu compte de mon erreur en publiant mon commentaire, j’avais déclaré la macro dans le mauvais onglet !
Déjà que c’est servi sur un plateau d’argent on ne peux pas me permettre de telles erreurs d’inattention.
J’ai regardé la doc concernant les évènements sur les worksheets cela répond également à ma question.
Merci encore : )
On fait tous des erreurs mais elles apportent la joie quand on les corrige 😉
Bonjour, c’est presque ce que je recherche.
Comment dans le code VBA, je peux lui faire comprendre qu’il faut actualiser plusieurs TCD d’un même tableau ? une virgule entre les différents noms des TCD de cette manière PivotTables(« TCD », « TCD2 ») ?
Merci pour votre aide !