OVH Cloud OVH Cloud

TCD maitriser les champs!!!

4 réponses
Avatar
serge
Bonjour à tous,
J'ai des TCD qui s'update automatiquement par des macros. Le problème bien
sûr est le choix des valeurs dans les listes déroulantes.
Ces TCD concatènent des lignes de commandes par rapport à la référence
produits. Je ne souhaite pas faire apparaître certaines références.
Le problème est le suivant : dès qu'une nouvelle référence apparaît dans une
nouvelle ligne, automatiquement le TCD la prend en compte et l'active. Donc
je dois manuellement aller dans la liste déroulante et l'enlever.
Savez-vous comment définir une fois pour toute les valeurs des listes
déroulantes des TCD ? et qu'elles ne changent pas suivant l'ajout ou non de
nouvelles références?

merci d'avance.

Cordialement,

Serge

4 réponses

Avatar
poy-poy
Bonjour Serge,

On doit pourvoir le faire via VBA.

Voici un code à adapter : feuille: "pivot", nom du pivot : "pivot1", champs
: "reference" (je suis en version anglaise)

Ici, j'ai mis seulement 2 références que tu voulais voir : Pouic et Meuh.
Dans le cas ou tu en aurais beaucoup, je te conseille de les mettre sur une
feuille et faire le test du nom du champs sur cette liste.

sub choix()

Dim pt as pivoitem

for each pt in
sheets("pivot").pivottables("pivot1").pivotfields("reference").pivotitems
if pt.name = "Pouic" or pt.name="meuh" then
else:
pt.visible úlse
end if
next pt

sheets("pivot").pivottables("pivot1").pivotfields("reference").currentpage =
"all"
end sub

Cordialement
Benjamin


Bonjour à tous,
J'ai des TCD qui s'update automatiquement par des macros. Le problème bien
sûr est le choix des valeurs dans les listes déroulantes.
Ces TCD concatènent des lignes de commandes par rapport à la référence
produits. Je ne souhaite pas faire apparaître certaines références.
Le problème est le suivant : dès qu'une nouvelle référence apparaît dans une
nouvelle ligne, automatiquement le TCD la prend en compte et l'active. Donc
je dois manuellement aller dans la liste déroulante et l'enlever.
Savez-vous comment définir une fois pour toute les valeurs des listes
déroulantes des TCD ? et qu'elles ne changent pas suivant l'ajout ou non de
nouvelles références?

merci d'avance.

Cordialement,

Serge


Avatar
serge
Merci, mais en fait ton code n'a pas l'aire fonctionner très bien (il faut
dire que je ne suis pas très bon en VBA). voici mon code :

Sub Macro1()
Dim pt As PivotItem

For Each pt In Sheets("Monday - SRs Ranking").PivotTables("Tableau croisé
dynamique1").PivotFields("Install Rep Split").PivotItems
If pt.Name = "VSM123" Or pt.Name = "9840AB" Then
Else:
pt.Visible = True
End If
Next pt

Sheets("Monday - SRs Ranking").PivotTables("Tableau croisé
dynamique1").PivotFields("Install Rep Split").CurrentPage = "all"
end sub

Sur la ligne pt.Visible = true, j'ai le message suivant :
Unable to set the visible property of the PivotItem class

sais-tu d'où ca vient?

merci.





"poy-poy" wrote:

Bonjour Serge,

On doit pourvoir le faire via VBA.

Voici un code à adapter : feuille: "pivot", nom du pivot : "pivot1", champs
: "reference" (je suis en version anglaise)

Ici, j'ai mis seulement 2 références que tu voulais voir : Pouic et Meuh.
Dans le cas ou tu en aurais beaucoup, je te conseille de les mettre sur une
feuille et faire le test du nom du champs sur cette liste.

sub choix()

Dim pt as pivoitem

for each pt in
sheets("pivot").pivottables("pivot1").pivotfields("reference").pivotitems
if pt.name = "Pouic" or pt.name="meuh" then
else:
pt.visible úlse
end if
next pt

sheets("pivot").pivottables("pivot1").pivotfields("reference").currentpage =
"all"
end sub

Cordialement
Benjamin


Bonjour à tous,
J'ai des TCD qui s'update automatiquement par des macros. Le problème bien
sûr est le choix des valeurs dans les listes déroulantes.
Ces TCD concatènent des lignes de commandes par rapport à la référence
produits. Je ne souhaite pas faire apparaître certaines références.
Le problème est le suivant : dès qu'une nouvelle référence apparaît dans une
nouvelle ligne, automatiquement le TCD la prend en compte et l'active. Donc
je dois manuellement aller dans la liste déroulante et l'enlever.
Savez-vous comment définir une fois pour toute les valeurs des listes
déroulantes des TCD ? et qu'elles ne changent pas suivant l'ajout ou non de
nouvelles références?

merci d'avance.

Cordialement,

Serge




Avatar
poy-poy
Bonjour Serge,

Tout d'abord, est tu sur que tu veux mettre true sur ton pt.visible ? Parce
que ceux à qui tu fais l'action sont ceux don't tu n'as pas mis le nom et
donc ceux que tu ne devrais pas voir apparaître (enfin c'etait l'idée
initiale, mais tu peux le faire en sens inverse en deselectionnant tous les
champs en premier)

Deuxièmement, j'ai pas fais gaffe mais j'ai fait comme si ton champs était
en champs de page. Si c'est un champ de colonne ou de ligne, la dernière
ligne .currentpage = "all" ne peut pas s'appliquer et n'est pas necessaire
qui plus est.

Enfin, à propos de ta question, je ne sais pas trop lol. Désolé, mais chez
moi ton code passe (et le mien aussi par la meme occasion si on remplace
pivoitem par pivotitem comme tu l'as fait.). Il est possible que si c'est un
champs calculé cela plante (généralement faut alors passer par orientation)
mais comme cela n'a pas l'air d'etre ton cas...

Bonne chance !
Cordialement
Benjamin




Merci, mais en fait ton code n'a pas l'aire fonctionner très bien (il faut
dire que je ne suis pas très bon en VBA). voici mon code :

Sub Macro1()
Dim pt As PivotItem

For Each pt In Sheets("Monday - SRs Ranking").PivotTables("Tableau croisé
dynamique1").PivotFields("Install Rep Split").PivotItems
If pt.Name = "VSM123" Or pt.Name = "9840AB" Then
Else:
pt.Visible = True
End If
Next pt

Sheets("Monday - SRs Ranking").PivotTables("Tableau croisé
dynamique1").PivotFields("Install Rep Split").CurrentPage = "all"
end sub

Sur la ligne pt.Visible = true, j'ai le message suivant :
Unable to set the visible property of the PivotItem class

sais-tu d'où ca vient?

merci.





"poy-poy" wrote:

Bonjour Serge,

On doit pourvoir le faire via VBA.

Voici un code à adapter : feuille: "pivot", nom du pivot : "pivot1", champs
: "reference" (je suis en version anglaise)

Ici, j'ai mis seulement 2 références que tu voulais voir : Pouic et Meuh.
Dans le cas ou tu en aurais beaucoup, je te conseille de les mettre sur une
feuille et faire le test du nom du champs sur cette liste.

sub choix()

Dim pt as pivoitem

for each pt in
sheets("pivot").pivottables("pivot1").pivotfields("reference").pivotitems
if pt.name = "Pouic" or pt.name="meuh" then
else:
pt.visible úlse
end if
next pt

sheets("pivot").pivottables("pivot1").pivotfields("reference").currentpage =
"all"
end sub

Cordialement
Benjamin


Bonjour à tous,
J'ai des TCD qui s'update automatiquement par des macros. Le problème bien
sûr est le choix des valeurs dans les listes déroulantes.
Ces TCD concatènent des lignes de commandes par rapport à la référence
produits. Je ne souhaite pas faire apparaître certaines références.
Le problème est le suivant : dès qu'une nouvelle référence apparaît dans une
nouvelle ligne, automatiquement le TCD la prend en compte et l'active. Donc
je dois manuellement aller dans la liste déroulante et l'enlever.
Savez-vous comment définir une fois pour toute les valeurs des listes
déroulantes des TCD ? et qu'elles ne changent pas suivant l'ajout ou non de
nouvelles références?

merci d'avance.

Cordialement,

Serge






Avatar
poy-poy
Bonjour Serge,

Je suis idiot, la solution est toute simple...
Il faut juste refresher le pivot parce que sinon tu n'est pas autorisé à le
modifier tant que tu ne l'as pas fait une fois depuis l'ouverture du fichier
(quand c'est un gros pivot ).

Le code donne donc (je conserve mon idée première qui me parait plus simple,
fais juste attention à ce que les lignes ne soient pas coupées quand tu le
colles dans le module )

sub choix()

Dim pt as pivotitem

sheets("Monday - SRs Ranking").pivottables("Tableau croisé
dynamique1").pivotcache.refresh
for each pt in sheets("Monday - SRs Ranking").pivottables("Tableau croisé
dynamique1").pivotfields("Install Rep Split").pivotitems
if pt.name = "VSM123" or pt.name="9840AB" then
else:
pt.visible úlse
end if
next pt

' et si c'est un champs de page, sinon enlève la ligne suivante
sheets("Monday - SRs Ranking").pivottables("Tableau croisé
dynamique1").pivotfields("Install Rep Split").currentpage = "all"
end sub

Cordialement
Benjamin



Merci, mais en fait ton code n'a pas l'aire fonctionner très bien (il faut
dire que je ne suis pas très bon en VBA). voici mon code :

Sub Macro1()
Dim pt As PivotItem

For Each pt In Sheets("Monday - SRs Ranking").PivotTables("Tableau croisé
dynamique1").PivotFields("Install Rep Split").PivotItems
If pt.Name = "VSM123" Or pt.Name = "9840AB" Then
Else:
pt.Visible = True
End If
Next pt

Sheets("Monday - SRs Ranking").PivotTables("Tableau croisé
dynamique1").PivotFields("Install Rep Split").CurrentPage = "all"
end sub

Sur la ligne pt.Visible = true, j'ai le message suivant :
Unable to set the visible property of the PivotItem class

sais-tu d'où ca vient?

merci.





"poy-poy" wrote:

Bonjour Serge,

On doit pourvoir le faire via VBA.

Voici un code à adapter : feuille: "pivot", nom du pivot : "pivot1", champs
: "reference" (je suis en version anglaise)

Ici, j'ai mis seulement 2 références que tu voulais voir : Pouic et Meuh.
Dans le cas ou tu en aurais beaucoup, je te conseille de les mettre sur une
feuille et faire le test du nom du champs sur cette liste.

sub choix()

Dim pt as pivoitem

for each pt in
sheets("pivot").pivottables("pivot1").pivotfields("reference").pivotitems
if pt.name = "Pouic" or pt.name="meuh" then
else:
pt.visible úlse
end if
next pt

sheets("pivot").pivottables("pivot1").pivotfields("reference").currentpage =
"all"
end sub

Cordialement
Benjamin


Bonjour à tous,
J'ai des TCD qui s'update automatiquement par des macros. Le problème bien
sûr est le choix des valeurs dans les listes déroulantes.
Ces TCD concatènent des lignes de commandes par rapport à la référence
produits. Je ne souhaite pas faire apparaître certaines références.
Le problème est le suivant : dès qu'une nouvelle référence apparaît dans une
nouvelle ligne, automatiquement le TCD la prend en compte et l'active. Donc
je dois manuellement aller dans la liste déroulante et l'enlever.
Savez-vous comment définir une fois pour toute les valeurs des listes
déroulantes des TCD ? et qu'elles ne changent pas suivant l'ajout ou non de
nouvelles références?

merci d'avance.

Cordialement,

Serge