Déterminer un champ de tableau croisé dynamique par une référence

EmmaZL

XLDnaute Nouveau
Bonjour,

Voici mon problème. Je souhaite que la valeur d'un champ de tableau croisé dynamique soit déterminé par une référence à une autre cellule. Plus concrètement, dans l'exemple ci dessous, je souhaite pouvoir mettre, dans la cellule B7, la formule suivante : =$F$2

excel.PNG

Saut que quand je fais ça, j'ai un joli message d'erreur :

excel2.PNG

Alors bon, je comprends bien que c'est pas possible, mais je voudrais vraiment faire ça et je voulais donc savoir s'il n'y aurait pas un moyen de contourner la chose ou si quelqu'un aurait une idée, même si c'est pour obtenir le même résultat de façon tout à fait différente (je suis open :p)

Merci d'avance !

Le fichier excel est en pièce jointe...
 

Pièces jointes

  • excel.PNG
    excel.PNG
    24.7 KB · Affichages: 94
  • excel.PNG
    excel.PNG
    24.7 KB · Affichages: 94
  • excel2.PNG
    excel2.PNG
    18.6 KB · Affichages: 55
  • excel2.PNG
    excel2.PNG
    18.6 KB · Affichages: 58
  • exemple_excel.xlsx
    12.7 KB · Affichages: 42
  • exemple_excel.xlsx
    12.7 KB · Affichages: 47
  • exemple_excel.xlsx
    12.7 KB · Affichages: 43

Dugenou

XLDnaute Barbatruc
Re : Déterminer un champ de tableau croisé dynamique par une référence

Bonjour,
Plusieurs contournements sont possibles :
Une macro pourrait appliquer la valeur de f2 en b7
On pourrait reconstruire un tableau avec des formules matricielles (sans tcd)
On pourrait recontruire le tableau avec des formules liretableaucroise... (mais conserver un tcd complet sur une autre feuille)

Edit : exemple avec formules matricielles en pj
 

Pièces jointes

  • emmaZL TCD V1.xlsx
    11.3 KB · Affichages: 47
Dernière édition:

Caillou

XLDnaute Impliqué
Re : Déterminer un champ de tableau croisé dynamique par une référence

bonjour,

Avec une procédure évenementielle sur la feuille de calcul (evenement Change) :
- on teste si c''est la cellule F2 qui a été modifiée
- dans ce cas on place son contenu en B7
Ce qui donne (code à placer dans le module de la Feuille contenant le TCD) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$F$2" Then
    Range("B7") = Range("F2")
  End If
End Sub
Par contre, je vois pas trop l'intérêt !

Caillou
 

Pierrot93

XLDnaute Barbatruc
Re : Déterminer un champ de tableau croisé dynamique par une référence

Bonjour à tous,

une autre approche vba, ok 2010, à placer dans le module de la feuille concernée, le classeur devant prendre en charge les macros :
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim pi As PivotItem
If Target.Address <> "$F$2" Then Exit Sub
Application.EnableEvents = False
With Me.PivotTables(1).PivotFields("Qualité")
    .ClearManualFilter
    If Target = "" Then GoTo fin
    For Each pi In .PivotItems
        If .VisibleItems.Count > 1 Then pi.Visible = pi.Value = Target
    Next pi
End With
fin:
Application.EnableEvents = True
End Sub

bon après midi
@+
 

EmmaZL

XLDnaute Nouveau
Re : Déterminer un champ de tableau croisé dynamique par une référence

Wow ! :)

Merci pour toutes ces réponses ! Je vais aller étudier tout ça et voir quelle est la solution qui convient le mieux à mon problème.

@Caillou : Je comprends que tu ne voies pas trop l'intérêt. :p En fait mon vrai fichier c'est pas des pommes et des poires. Je peux juste pas le mettre en pièce jointe parce que c'est des données client confidentielles de mon entreprise. Mais en gros, ma feuille contient plusieurs TCD avec toujours le même champ dans la partie "filtre du rapport". Je dois faire quelque chose de facilement utilisable par des utilisateurs qui n'ont que des notions de base d'Excel (voire pas du tout de notion) et je voudrais qu'ils n'aient pas à modifier chaque TCD pour mettre à jour les données. Je veux qu'ils n'aient à entrer la valeur que dans une seule cellule (en l'occurrence le numéro de client) et que ça mette toute la feuille à jour en fonction de ce numéro de client. Voilà en gros... ;-)

Quoi qu'il en soit merci beaucoup !! Je vous donne des news si j'arrive à mettre en place tout ça... ;-)
 

EmmaZL

XLDnaute Nouveau
Re : Déterminer un champ de tableau croisé dynamique par une référence

JHA :

Ca marche bien dans le fichier exemple, mais quand je mets tout ça dans mon fichier de travail ça ne marche pas. Je ne peux malheureusement pas le partager pour des raisons de confidentialité...

vb.jpg

Edit : j'ai juste fait copy/paste et changé la référence de la cellule et le nom du champ... je n'y connais rien en visual basic... :(
 

Pièces jointes

  • vb.jpg
    vb.jpg
    47.9 KB · Affichages: 80
  • vb.jpg
    vb.jpg
    47.9 KB · Affichages: 86

JHA

XLDnaute Barbatruc
Re : Déterminer un champ de tableau croisé dynamique par une référence

Re,

Désolé, je suis aussi une bille en VBA mais as tu mis le Worksheet_Change dans la feuille de la cellule en référence ("$F$2").
Exemple joint avec 2 TCD

JHA
 

Pièces jointes

  • exemple_excel 1.xlsm
    19.7 KB · Affichages: 46

EmmaZL

XLDnaute Nouveau
Re : Déterminer un champ de tableau croisé dynamique par une référence

Re,

Désolé, je suis aussi une bille en VBA mais as tu mis le Worksheet_Change dans la feuille de la cellule en référence ("$F$2").
Exemple joint avec 2 TCD

JHA

Oui c'est ce que j'ai fait. La cellule en référence est d'ailleurs dans la même feuille que les TCD

je comprends pas. Ta solution est exactement ce qu'il me faut malheureusement quand je copy/paste le code dans mon fichier de travail ça ne marche plus.
Demain je vais essayer de refaire une nouvelle feuille plus simple. je te dirai ce que ça donne. merci de ton aide
 

EmmaZL

XLDnaute Nouveau
Re : Déterminer un champ de tableau croisé dynamique par une référence

Rebonjour,

Bon, j'ai fait tout un tas de tests et je ne comprends pas pourquoi ça ne marche pas. En fait ça fonctionne seulement quand je crée un petit tableau avec des données fictives, mais pas quand je suis dans mon fichier clients.
Cela peut-il être dû au fait que mes données clients proviennent d'une requête SQL effectuée avec Microsoft Query qui va chercher les données dans la base de données de mon ERP ??
Quoi qu'il en soit, je joins un fichier issu de ma base de données clients. Il n'y a aucun nom ni aucune donnée sensible.
j'y ai mis le script VBA mais ça ne fonctionne pas... et je sais pas pourquoi.
 

Pièces jointes

  • testvba2.xlsm
    89.3 KB · Affichages: 46

EmmaZL

XLDnaute Nouveau
Re : Déterminer un champ de tableau croisé dynamique par une référence

Wow !!! :eek: J'aurais jamais pensé que c'était sensible à la casse. Tellement l'habitude de taper les numéros de cellule sans m'en soucier dans Excel... Bon ben voilà la réponse... un grand merci !!!! Je vais aller retester tout ça !!! ;-)
 

Discussions similaires

Statistiques des forums

Discussions
312 332
Messages
2 087 361
Membres
103 530
dernier inscrit
Chess01