Actualiser un TCD comprenant une ligne vide

Amilo

XLDnaute Accro
Bonsoir le forum,

J'ai dans mon fichier ci-joint un tableau en A1:B25 qui comprend une ligne vide et une plage de saisie en A3:B25,

La plage de saisie est variable et au maximum en A25,

A chaque nouvelle saisie j'actualise mon TCD à l'aide du bouton(j'ai créé un nom défini pour la plage dynamique),

Mon problème, c'est que j'ai une ligne vide en A2 que j'ai désactivée dans mon TCD,
j'ai décoché simplement la sélection (Vide) dans mon filtre du TCD,

Et donc le souci, c'est que lorsque je saisie une nouvelle valeur ou Article dans ma plage, cette nouvelle donnée n'est pas prise en compte après actualisation du TCD.....!!!

Je dois aller dans le filtre du TCD et cocher manuellement le nom du nouvel article pour qu'il se mette à jour....!!!

Je ne peux pas faire autrement avec ma ligne vide en ligne 2 et sans laquelle je n'aurais pas eu ce problème,

Avez-vous svp une solution à ce problème ??

Merci d'avance

Cordialement
 

Pièces jointes

  • Actualiser TCD avec une ligne vide.xlsm
    23.4 KB · Affichages: 39
  • Actualiser TCD avec une ligne vide.xlsm
    23.4 KB · Affichages: 37
  • Actualiser TCD avec une ligne vide.xlsm
    23.4 KB · Affichages: 38

david84

XLDnaute Barbatruc
Re : Actualiser un TCD comprenant une ligne vide

Bonsoir,
essaie comme cela :
Code:
Sub ActualiserTCD()
If Range("SourceTCD").Rows.Count > 1 Then
    With ActiveSheet.PivotTables("Tableau croisé dynamique1")
        .PivotFields("Article").PivotItems("(blank)").Visible = True
        .PivotCache.Refresh
        .PivotFields("Article").PivotItems("(blank)").Visible = False
    End With
End If
End Sub
A+
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Actualiser un TCD comprenant une ligne vide

Bonsoir,
Bonsoir david84,

Ton code fonctionne pour gérer la ligne vide, mais il ne gère pas les ajouts d'items.

Je n'ai pas testé pour la suppression d'items.
Bizarre...testé chez moi sans problème concernant l'ajout ou la suppression de données dans la plage située en colonnes A et B.
A+
 

Gareth

XLDnaute Impliqué
Re : Actualiser un TCD comprenant une ligne vide

Bonsoir,

Ci-joint une solution qui semble fontionner.
 

Pièces jointes

  • Actualiser TCD avec une ligne vide.xlsm
    26.1 KB · Affichages: 50
  • Actualiser TCD avec une ligne vide.xlsm
    26.1 KB · Affichages: 52
  • Actualiser TCD avec une ligne vide.xlsm
    26.1 KB · Affichages: 54

Gelinotte

XLDnaute Accro
Re : Actualiser un TCD comprenant une ligne vide

Bonsoir

David84 : les éléments s'effacent mais aucun ne s'ajoute.

Gareth : si on supprime les éléments dans les colonnes A et B, elles restent dans le filtres, elles ne sont que décochées

Merci vos propositions.


G
 

sihamidi

XLDnaute Occasionnel
Re : Actualiser un TCD comprenant une ligne vide

Bonjour

vous pouvez utiliser un Nom formule
SourceTCD=DECALER(Feuil1!$A$1;;;MAX(SI(Feuil1!$A$2:$B$1000<>"";LIGNE(Feuil1!$A$2:$B$1000);0));2)


et à chaque ligne ajouter même non joignable sera prise en compte


a+
 

Pièces jointes

  • Actualiser TCD avec une ligne vide().xlsx
    14.7 KB · Affichages: 26

Gelinotte

XLDnaute Accro
Re : Actualiser un TCD comprenant une ligne vide

Bonsoir,

J'aime beaucoup le code de Gareth.

Pour l'agrémenter, si on veux faire effacer les items obsolètes, il suffit d'ajouter au début :
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.MissingItemsLimit = xlMissingItemsNone

Merci


G
 

Gareth

XLDnaute Impliqué

Pièces jointes

  • Actualiser TCD avec une ligne vide.xlsm
    26.2 KB · Affichages: 30
  • Actualiser TCD avec une ligne vide.xlsm
    26.2 KB · Affichages: 34
  • Actualiser TCD avec une ligne vide.xlsm
    26.2 KB · Affichages: 32

Gelinotte

XLDnaute Accro
Re : Actualiser un TCD comprenant une ligne vide

Bonsoir david84,

Après avoir ajouté la ligne du début de ton code :
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.MissingItemsLimit = xlMissingItemsNone

Tout fonctionne bien.

Tout à l'heure, ce devait être ma machine qui était mêlée. J'ai pris le temps de la redémarrer.



Merci


G
 

Gelinotte

XLDnaute Accro
Re : Actualiser un TCD comprenant une ligne vide

Bonsoir Gelinotte,

Merci pour l'astuce, je ne connaissais pas.
Je me demande si cette propriété existait dans la version Excel XP ?

Je n'ai pas grand mérite ... c'est mon ami Google qui m'a soufflé cela à l'oreille :rolleyes:

J'ai testé sour Excel 2002 (Excel XP), ce code ne fonctionne pas du tout.


G
 
Dernière édition:

Gareth

XLDnaute Impliqué
Re : Actualiser un TCD comprenant une ligne vide

Re,

Le code devient alors !
Code:
Sub Test()
Application.ScreenUpdating = False
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.MissingItemsLimit = xlMissingItemsNone
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Article")
    For Each X In .PivotItems
        X.Visible = True
    Next
    .PivotItems("(blank)").Visible = False
End With
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • Actualiser TCD avec une ligne vide.xlsm
    26.2 KB · Affichages: 29
  • Actualiser TCD avec une ligne vide.xlsm
    26.2 KB · Affichages: 32
  • Actualiser TCD avec une ligne vide.xlsm
    26.2 KB · Affichages: 31
Dernière édition:

chris

XLDnaute Barbatruc
Re : Actualiser un TCD comprenant une ligne vide

Bonjour

Re,

Les champs conservés, il s'agit d'un vieux "bug" avec les TCD.

Voir la solutions dans le fichier joint et les posts ci-dessous.

https://www.excel-downloads.com/threads/tcd-bug-lors-de-mise-a-jour.114233/
https://www.excel-downloads.com/threads/purger-historique-tcd.96518/

Concernant ce "bug", en fait non réinitialisation du cube (cache) du TCD, depuis la version 2007 on peut aussi le régler sans code : il suffit, dans les options du TCD, onglet Données, Nombre d’éléments à retenir par champs, de sélectionner "aucun" et d'actualiser pour régénérer un cube propre.
 

Statistiques des forums

Discussions
312 163
Messages
2 085 860
Membres
103 005
dernier inscrit
gilles.hery