Actualisation de TCD après une effacement de données

Résolu/Fermé
robbybasch Messages postés 100 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 19 août 2022 - Modifié par crapoulou le 31/12/2014 à 14:14
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 31 déc. 2014 à 15:02
Bonjour,

Je prépare mon nouveau plan comptable (pour une association), après l'aide de ce forum sur d'autres aspects, j'avance mais en ce moment je bloque sur le point suivant :
J'ai créé une macro effacement des données du journal de la comptabilité et je voudrais que lors du lancement de cette macro 1 j'efface mon journal (ce qui fonctionne), 2 actualiser tous mes TCD sur toutes les feuilles où ils sont écrits.
ma macro effacement :
Sub effacer()
             Worksheets("Journal").Range("A7:C3500").ClearContents
             Worksheets("Journal").Range("E7:H3500").ClearContents
End Sub


et je voudrais y ajouter du code vba pour actualiser les TCD.
J'ai trouvé pas mal de chose sur ce sujet, mais rien pour l'intégrer dans ma macro effacement.
Merci par avance de votre aide
CDL
Robby

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
31 déc. 2014 à 14:37
Bonjour,

Sub refreshAllTcd()
Dim oPivotTable As PivotTable
Dim Wkb As Workbook
Dim Sh As Worksheet
Set Wkb = ThisWorkbook
'on boucle sur toutes les feuilles du classeur
For Each Sh In Wkb.Worksheets
  'Si on est bien sur une feuille Excel (et non une feuille Graphique)
  If Sh.Type = XlSheetType.xlWorksheet Then
    'On actualise chaque TCD de la feuille
      For Each oPivotTable In Sh.PivotTables
        On Error Resume Next
        oPivotTable.RefreshTable
      Next oPivotTable
  End If
Next
End Sub

0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
31 déc. 2014 à 14:42
Salut Jordane45,

Sauf erreur de ma part que tu voudras bien relever, la déclaration
Dim Sh As Worksheet
associée au code
For Each Sh In Wkb.Worksheets
, empêche de boucler sur les feuilles de type Graph. Non?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
Modifié par jordane45 le 31/12/2014 à 14:50
Oui en effet..
désolé.. à vouloir être "trop" prudent... on est redondant...

Le bon code est donc :
Sub refreshAllTcd()
Dim oPivotTable As PivotTable
Dim Wkb As Workbook
Dim Sh As Worksheet
Set Wkb = ThisWorkbook
'on boucle sur toutes les feuilles du classeur
For Each Sh In Wkb.Worksheets
     'On actualise chaque TCD de la feuille
      For Each oPivotTable In Sh.PivotTables
        On Error Resume Next
        oPivotTable.RefreshTable
      Next oPivotTable
Next
End Sub


Merci Pika ;-)
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
31 déc. 2014 à 14:54
Pas de quoi. C'est ma fainéantise chronique qui me pousse à écrire le moins possible...
A+
Et...

Bon réveillon, bonne nouvelle année à toi!
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
31 déc. 2014 à 14:58
C'est bien connu... pour être fainéant.. faut être intelligent :-)
( et moi j'en fou pas une... arghh.. mes chevilles enflent...:-) )
Bon réveillon à toi aussi et bonne année ^^
0
robbybasch Messages postés 100 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 19 août 2022
31 déc. 2014 à 14:58
Merci pour la rapidité de la réponse. Et la macro fonctionne parfaitement, je n'ai pas de graphiques donc la 1ère fonctionne nickel. Faut-il quand même mieux prendre la 2ème?
Une question que je ne comprends pas, si j'ai fait une erreur j'en suis navré, pourriez m'expliquer " avant de poser une question lire la charte du site" afin que je ne reproduise pas cette erreur.
CDL
Robby
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 31/12/2014 à 15:01
Salut,

Prend le code que tu veux, les deux fonctionnent. C'est juste un point de détail.

" avant de poser une question lire la charte du site"
Est la signature (message qui fait automatiquement partie de toutes les réponses) de Jordane45. Donc pas nécessairement destiné à toi.
Par contre, si tu n'as pas lu notre charte, je t'invite à le faire... ça peut toujours servir.
A+
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié par jordane45 le 31/12/2014 à 15:03
Bonjour,
Les "deux" fonctions sont identiques.. sauf que la première faisait une vérification supplémentaire.. complètement inutile.
Donc prend la seconde.

Pour ce qui est de la "charte" .. c'est ma signature ... aucun rapport avec ce que tu as fais... (elle s'affiche sur tous mes messages) .
:-)

EDIT : Uniquement sur mes REPONSES .. pas dans les commentaires
0