macro afficher valeur TCD une après l'autre pour impression separée

benjy555

XLDnaute Junior
Bonjour

Je cherche une macro qui permettrait d'afficher toutes les valeurs d'un TCD mais une après l'autre et entre chaque étape imprimer le TCD.

je m'explique :
Imaginons que sur mon TCD il y ait 10 lignes donc 10 valeurs affichées (sans aucun filtre en place).
Sur mon filtre de champs j'aurais donc 10 cases que je peux décocher ou cocher suivant l'affichage que je veux.
Je commence par cocher la première valeur uniquement donc les 9 autres se masquent.
A ce moment je veux imprimer le résultat obtenu sur le TCD

Puis, il faudrait que automatiquement le filtre passe à la valeurs suivante et imprime le résultat aussi

etc jusqu’à la dernière valeur du TCD

une idée ?

Je ne fais pas de fichier témoin car le concept s'applique à n'importe quelle base de donnée de plusieurs lignes ou on appliquerait un TCD
merci
 

benjy555

XLDnaute Junior
bonjour

voici une réponse pertinente que j'ai obtenu sur un autre forum
dans ce cas les feuilles s'impriment une par un et il faut valider les aperçu manuellement pour que l'impression se lance. Il faudrait que tout s'imprime d'un coup idéalement.


merci
 

Pièces jointes

  • xlp - Benjy555.xlsm
    29.7 KB · Affichages: 24

benjy555

XLDnaute Junior
Bonjour benjy,

voir fichier joint

à+
Philippe
bonjour

merci cela marche parfaitement
mais une question : quand il est écrit
For i = 1 To 10

Le 10 correspond à quoi ? au nombre de fois ou la manipulation doit etre reproduite ? car dans mon cas il y aura suivant les fois un nombre totalement variable de lignes dans le TCD et peu importe le nombre il faudra a chaque fois que toutes les lignes s'impriment une par une...

(désolé si c'est une question bête..)
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re-bonjour

mais une question : quand il est écrit
For i = 1 To 10

Le 10 correspond à quoi ?


c'est parce que la question initiale était:


Imaginons que sur mon TCD il y ait 10 lignes donc 10 valeurs affichées (sans aucun filtre en place).


avec ceci, il peut y avoir n'importe quel nombre de ligne
Code:
For i = 1 To ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("MOMS").PivotItems.Count

à+
Philippe
 

Pièces jointes

  • 111.xlsm
    22.5 KB · Affichages: 36

benjy555

XLDnaute Junior
Re-bonjour




c'est parce que la question initiale était:





avec ceci, il peut y avoir n'importe quel nombre de ligne
Code:
For i = 1 To ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("MOMS").PivotItems.Count

à+
Philippe
ok en effet je n'ai pas été assez précis

en fait à chaque utilisation je n'aurais jamais le meme nombre de ligne donc je dois utilisation le fameux "count"

du coup j'imagine que pour le
For k = 1 To 10 j
e dois remplacer aussi par
For k = 1 To ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("MOMS").PivotItems.Count
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re,

du coup j'imagine que pour le
For k = 1 To 10 j
je dois remplacer aussi par
For k = 1 To ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("MOMS").PivotItems.Count

Bien vu, ma réponse a été faite dans la précipitation (deux petits-fils à la maison, ce n'est pas facile de concilier Excel, Papy gâteau et agent de police)

voici le code complet:
Code:
Sub Macro2()
Application.ScreenUpdating = False
' réactualisation du TCD avant impression
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh

For i = 1 To ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("MOMS").PivotItems.Count
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("MOMS").PivotItems(i).Visible = True
For k = 1 To ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("MOMS").PivotItems.Count
If k <> i Then
   ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("MOMS").PivotItems(k).Visible = False
End If
Next k
' impression
Range("H14:M17").PrintOut ' zone d'impression à adapter

' réaffichage
For k = 1 To ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("MOMS").PivotItems.Count
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("MOMS").PivotItems(k).Visible = True
    End With
Next k
Application.ScreenUpdating = True
Range("H1").Select
End Sub

à+
Philippe
 

benjy555

XLDnaute Junior
Je comprend tout à fait pas évident tout cela... quand vous aurez du temps j'ai malheureusement d'autres questions

J'ai tenté d'adapter à mon cas concret votre code mais la je bloque pour de bon alors je vous place en pj mon vrai fichier dans lequel vous trouverez votre code ajusté en module5

Quand je lance la macro j'ai bien 1 sortie d'impression par ligne mais une fois que tout est sorti il y a un bug de macro en clic sur debogage cela surligne en jaune le passage ou il y a le count....
je ne sais pas comment faire ou à quoi cela est du

merci pour votre aide préciseuse
 

Pièces jointes

  • Entrée en stock.xlsm
    73.4 KB · Affichages: 24

benjy555

XLDnaute Junior
nop .. (j'ai bien remplacé l'un par l'autre a chaque fois que PivotFields("Colis") est présent dans le code )

là il ne se passe plus rien

message d'erreur :

impossible de definir la propiete visible de la classe PivoItem

(j'ai bien remplacé l'un par l'autre a chaque fois)
 

Discussions similaires

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko