• Initiateur de la discussion Initiateur de la discussion romika
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

romika

XLDnaute Occasionnel
Bonjour, le forum,

je me creuse la tête (pour rien j'en suis sûr...) pour faire une actualisation automatique du TCD, dès qu'une valeur est saisie dans la plage de données.

Mais je n'y arrive pas.

La plage (de donneées...) et le TCD sont sur la même feuille.

pourriez vous me suggérrer une méthode

merci d'avance et bonne journée
 
Bonjour,

Dans options du TCD, pour l'ouverture tu coches actualisation,

ensuite si tu installes la barre de menu TCD, il existe un point d'interrogation et en appuyant dessus tu réactualises

et puis par macro aussi à chqaue chgt

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
ActiveSheet.PivotTables('Tableau croisé dynamique1').RefreshTable
End Sub


mais si tu parles aussi d'ajouts dans ta base de données,
tu peux nommer ta base comme ceci :

=DECALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A))
poar insertion nom en nommant Tablo par exemple

Celeda

Edit : un fil du Forum 1ère Génération avec d'autres formules :

Lien supprimé

Message édité par: Celeda, à: 05/10/2005 15:15
 
Bonjour Romika

la fonction d'actualisation des données (clic droit sur le TCD) reste tout à fait opérante même si le TCD et les données sont sur la même feuille.
Si tu rajoutes des données à ta base, n'oublie pas de rédéfinir ta source . Pour cela clic droit sur le TCD , Assistant puis précédent et là tu peux modifier la plage source.

Je ne connais pas d'actualisation automatique (mais Dan ou Celeda me corrigeront j'en suis sure) hormis la demande d'actualisation activée par l'utilisateur.
Tu peux choisir d'actualiser ton TCD à l'ouverture (Options du TCD)

A+

EDITION
Dame Celeda, je te salue ! Je sentais que nos routes allaient se croiser.... Merci pour la leçon 😉

Message édité par: Sylvie, à: 05/10/2005 15:19
 
Bonjour, Celeda, Sylvie, le forum,

merci pour votre aide, la solution qui me convient le mieux dans mon contexte c'est la macro de Celeda, car ma plage ne change jamais de taille mais uniquement les valeurs à l'intérieur de la plage. car en fait je voulais que le TCD s'actualise tout seul sans passer par les boutons actualisation.

donc tout va bien, par contre si j'ai 2 tcd qui pointent sur la même plage mais qui afichent des champs différents il n'y a que le premier qui s'actualise...

si vous avez le temps pour la solution je suis preneur, si non je m'arrangerai

merci en tout cas et bonne journée
 
Bonjour,

Complément à ce qui est dit dans ce fil.

Mais je te conseille de ne pas mettre le TCD sur la même feuille que la base de données.

Une variante à la macro postée par Celeda :

Code:
Private Sub Worksheet_Activate()
ActiveSheet.PivotTables('Tableau croisé dynamique1').RefreshTable 
End Sub

Avec : 'Tableau croisé dynamique1' le nom attribué au TCD - vérifie par clique droite dans le TCD puis 'options'

Pour placer la macro :

- ALT + F11 pour accéder à VBA
- CTRL + R pour VBA project
- Double clique sur la feuille où se trouve le TCD
- Colle la macro ci-dessus dans la fenetre de droite

A chaque fois que tu iras voir ton TCD sur cette feuille dans laquelle il se trouve, il se réactualisera automatiquement.

😉
 
Romika,

Pour que les deux TCD s'actualisent en même temps tu dois :

- soit créer le deuxième TCD à partir du premier - ce que l'assistant te demande au début d'ailleurs. Quand tu actualiseras le premier, le deuxième s'actualisera également.

- ou modifier la macro comme suit :

Code:
Private Sub Worksheet_Activate()
With activesheet
.PivotTables('Tableau croisé dynamique1').RefreshTable
.PivotTables('Tableau croisé dynamique2').RefreshTable
End with
End Sub

Avec :
- Tableau croisé dynamique2 = le nom du deuxième TCD
- les 2 TCD sont sur la même feuille

😉

Message édité par: Dan, à: 06/10/2005 08:05
 
Re : Actualisation TCD

Bonjour a tous,
Désolé de déterrer ce sujet, mais le premier code conviendrait parfaitement a ce que je veux faire :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
ActiveSheet.PivotTables('Tableau croisé dynamique1').RefreshTable
End Sub

Sauf que ça ne fonctionne pas sur mon fichier Excel.

Dans la fenetre VB, j'ai un message d'erreur :
Erreur de compilation:
Attendu : Expression

Et la première quote est surligné (celle que j'ai mis en rouge)

Quelqu'un aurait une solution svp ?
D'avance merci.

PS : Il faut savoir que j'ai un autre bout de code sur cette feuille, mais je ne pense pas que cela soit gênant ...
 
Re : Actualisation TCD

Bonjour Eny
Bonjour à toutes et à tous

L’un des gros problèmes des TCDs est leur actualisation. En effet, lorsque vous faites des modifications dans votre base de données, le TCD ne s’ajuste pas automatiquement, principalement pour des raisons de temps de recalcul.
Pour contourner le problème, il peut être utile d’actualiser les TCDs à chaque fois que l’on sélectionne la feuille les contenant.

Pour cela :

- Clic droit sur l’onglet de la feuille contenant le TCD.
- Choisir Visualiser le code.
- Taper ensuite le code suivant :

Private Sub Worksheet_Activate()
ThisWorkbook.RefreshAll
End Sub

- Revenir à Excel.

En allant sur la feuille TCD, le tableau se met automatiquement à jour.

A consulter le lien et bonne lecture.
Excel - tableaux croisés dynamiques
Bcharef
 
Re : Actualisation TCD

Merci pour cette réponse rapide.
Cette méthode marche parfaitement bien.
L'inconvénient est que mon TCD est sur la même feuille que la base de donnée, et j'aurai besoin d'une actualisation a chaque fois que les données sont saisies dans la BDD.

Auriez-vous le code correspondant svp ?
Ceux que j'ai testé jusque là ne fonctionne malheureusement pas.
Je me demande bien pourquoi d'ailleurs ... :s
 
Re : Actualisation TCD

Rebonjour Eny,
Rebonjour à toutes et à tous.

Essaye de nous joindre en exemple de votre fichier sans données confidetielles.

Mais, si, j'ai bien saisi votre probléme est relatif à la base de donnée et non pas à l'actualisation du TCD .

A vous lire

A+

Cordialement
 
Re : Actualisation TCD

Oulaaa ..
Ce n'est pas que je ne veux pas mettre mon fichier en pièce jointe, je sais d'ailleurs que ce serait le meilleur moyen ... Mais il n'est pas encore bien structuré .. Du coup, y'en a un peu de partout ! lol

Pour faire simple :
Dans le même classeur ET sur la même feuille, j'ai une BDD "F62:H92" qui n'est autre qu'une sélection de données mise à jour automatiquement, via d'autres cellules de la même feuille.

J'ai un TCD qui pointe sur la BDD. Je souhaiterai que le TCD soit automatiquement mise à jour à chaque fois qu'une valeur change dans la BDD.

Le code que j'ai copié fonctionne si je change de feuille. Le TCD se met bien a jour automatiquement. Mais j'aimerai un code qui mette à jour le TCD a chaque fois qu'une valeur est modifié dans la BDD.
 
Re : Actualisation TCD

Bonjour,

dans ton code, essaye en remplacant les "quotes" par des "guillemets" :

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
ActiveSheet.PivotTables([COLOR="red"][B]"[/B][/COLOR]Tableau croisé dynamique1[B][COLOR="Red"]"[/COLOR][/B]).RefreshTable
End Sub

bon après midi
@+
 
Re : Actualisation TCD

Merci.
ce code fonctionne bien ...
Sauf que ... l'actualisation n'est pas aussi rapide que si on l'actualise via le point d'exclamation.
Elle est même particulièrement lente.
Mais je sens qu'on est sur la bonne voie !🙄

On dirait que Excel fait un refresh de chaque cellule, les unes après les autres, au lieu de toutes les faire en même temps ... :s

EDIT :
Aussi rapide que si on faisait un changement de feuille en fait ...

Si personne ne peut m'aider, je m'orienterai vers cette solution d'ailleurs, mais je préfèrerai que tout soit sur la même feuille.
 
Dernière édition:
Re : Actualisation TCD

Re

ceci devrait accélérer le processus :

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
ActiveSheet.PivotTables("Tableau croisé dynamique1").RefreshTable
Application.EnableEvents = True
End Sub

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
158
W
Réponses
12
Affichages
673
Réponses
12
Affichages
730
Retour