TCD & Champ calculé, référence à une cellule donnée

Bonjour,

Je cherche à créer un champ calculé dans un TCD, qui utiliserait une référence à une cellule extérieure au TCD.

exemple avec un TCD contenant des montant hors taxe :

Champ Calculé = 'Montant HT' * Feuil2!$A$1

L'avantage serait de pouvoir faire une sorte de scénario, en modifiant la valeur de la cellule pour estimer les retombées de telle ou telle valeur.

Je ne souhaite pas intervenir sur la base de données du TCD car c'est une source de données externe qui s'actualise au lancement du fichier...

Est-ce possible, et si oui comment l'écrire cette formule ??

Merci d'avance.

Asi

Bonjour,

Je pense que tu dois voir du coté de la fonction LIREDONNEESTABCROIS...

Vois ce lien si besoin --> https://forum.excel-pratique.com/cours-astuces/lire-donnees-tableaux-croises-dynamiques-t2574.html

Amicalement

A priori non, la formule que tu indiques fait le contraire de mon besoin.

Elle permet de récupérer la valeur d'une cellule d'un TDC pour l'exploiter ailleurs que dans le TCD. Hors moi je cherche à récupérer la valeur d'une cellule exterieure au TCD pour l'exploiter DANS le TCD.

Exemple complètement fictif et simpliste:

  • je cumule des montants HT dans un TCD
  • je cherche à créer un champ calculé qui me calcule le montant TTC, en fonction d'un taux de TVA qui se trouve dans une cellule lambda d'une autre feuille.
  • quand je modifie cette valeur mon champ calculé peut se mettre à jour.

cf fichier exemple.

Merci !

227tcd-refcelluleext.xls (18.50 Ko)

re,

Merci de tes explications mais malheureusement avec un TCD tu ne pourras pas réaliser ce que tu souhaites. Les solutions possibles sont soir l'utilisation de la formule LIRE.... ou de créer un autre tableau qui reprend les articles sans doublons et qui fait référence à la cellule F1.

A te relire

Bonsoir,

Bonsoir, Dan

Tout d'abord, tu créés ton champ calculé, dans ton TCD.

Par exemple : Champ1

Formule : ='Prix HT'*1,19

Puis, tu mets ce code dans l'évènement de feuille (clic droit sur le nom de l'onglet, "Visualiser le code") et colle le code dans la page blanche...

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not IsNumeric(Target) Then Exit Sub
If Target.Address = "$F$1" Then
    Me.PivotTables("Tableau croisé dynamique2").CalculatedFields("Champ1") _
        .StandardFormula = "='Prix HT'*" & Replace(Target, ",", ".")
End If
End Sub

Si la cellule contenant le taux à appliquer est différente de F1, modifie la ligne :

If Target.Address = "$F$1" Then

Vérifie ensuite le nom de ton TCD, ainsi que le nom de ton champ calculé, et adapte le code en conséquence

Nota, la fonction Replace est obligatoire, car le champ calculé ne prend pas les virgules en VBA....

Bon courage

Re,

Effectivement Cousinhub c'est aussi une autre solution à laquelle je n'avais pas pensé vu que l'on parlait de formule.

Toutefois, ton code ne fonctionne pas sous MAC (peu d'importance ici bien sûr).

Code à essayer si cela fonctionne sous les versions excel windows :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not IsNumeric(Target) Then Exit Sub
If Target.Address = "$F$1" Then
    Me.PivotTables("Tableau croisé dynamique2").CalculatedFields("Champ1") _
        .Formula = "='Prix HT'*" & Target
End If
End Sub

Avec "Tableau croisé dynamique2" le nom de ton TCD que tu peux modifier par clique droite dans le TCD puis choisir "Option du tableau". Dans la rubrique "Nom" tu peux voir le nom du TCD.

Si ok, oublie pas de cloturer le fil en cliquant sur le V en vert.

Amicalement

Ca marche !

Merci Cousin... 8)

Maintenant, passons la seconde.....

Puis-je complexifier la formule de sorte que le taux appliqué soit dépendant de la valeur du champ article.

Exemple :

  • etc...

Les différentes valeurs possibles pouvant être indiquées dans une zone à part, un peu comme ce que l'on utilise pour définir des critères.

Je me demande si ce genre de champ calculé, dont le résultat dépend de la valeur de l'étiquette de ligne est implémenté dans excel... je lui en demande ptet trop ...

Asi

re,

Puis-je complexifier la formule de sorte que le taux appliqué soit dépendant de la valeur du champ article.

Là le code ne sert plus à rien. il faudrait refaire un code mais qui sera bien plus complexe.

Pour faire plus simple, pourquoi ne pas faire un troisième colonne qui par une formule te donne le Taux de TVA en fonction de l'article.

De là tu peux faire intervenir le taux directement dans le TCD sans passer par code.

Bonjour,

  • Maintenant, passons la seconde.....

Désolé, je ne participe pas à un jeu....

Je rends service, dans la limite de mes possibilités, et faire des fils, à en devenir des pelotes, ceci ne m'intéresse pas du tout...

Si c'était un test, pour la 1ère, ravi d'y avoir réussi....

Pour la seconde, une simple formule, dans la cellule qui va bien, mais en changeant d'évènement, devrait suffire...

(Look at évènement "Calculate")

Bonne journée

cousinhub a écrit :

Bonjour,

  • Maintenant, passons la seconde.....

Désolé, je ne participe pas à un jeu....

Ah mais je ne joue pas non plus !

Mon besoin se complexifie au fur et à mesure que je propose des solutions (en vérité je ne suis qu'un intermédiaire dans cette histoire...).

Concrètement, le souci que je rencontre pour aller plus loin est de créer une formule dans mon TCD qui donne une valeur différente selon l'étiquette.

Pour continuer avec mon exemple, j'ai créé un champ "Taux TVA", en indiquant une formule tout bete :

= SI(Article ="A";1,19; 1,05)

Mais apparemment le résultat est toujours 1,05, comme si ma condition renvoyait toujours "FAUX"

Pour faire plus simple, pourquoi ne pas faire un troisième colonne qui par une formule te donne le Taux de TVA en fonction de l'article.

De là tu peux faire intervenir le taux directement dans le TCD sans passer par code.

Voila, c'est exactement ce que je cherche ... mais je bute sur la formule à utiliser...

elle ferait la meme chose que la fonction select case qu'on peut trouver dans certains langages :

       SELECT CASE (Article)
           CASE ("A")      
              taux = 1,05
           CASE ("B")      
              taux = 1,45
           CASE DEFAULT
              taux = 1,19
       END SELECT

re,

Vois le fichier joint avec une solution en mettant en colonne F les TVA et en créant une colonne C avec une formule spécifique pour appliquer le taux de TVA correct en rapport à l'article en colonne A.

Amicalement

ok merci Dan

La solution de passer par une modification de la source de données (ajout d'une colonne) ne me va pas, j'y avais déjà pensé mais ça fait partie de mes contraintes de ne pas pouvoir y toucher.

Mais plus ça va plus je me dis que je ne pourrai pas l'éviter.

Apres réflexion il me semble impossible qu'un champ calculé dépende de la valeur d'un champ qui se trouve en étiquettes...

merci quand meme, le code de cousinhub m'a déjà ouvert de nouvelles possibilités ...

Bonsoir,

J'ai du rater quelque chose.....

  • Ah mais je ne joue pas non plus !
    Mon besoin se complexifie au fur et à mesure que je propose des solutions

C'est un fait, il en a proposé, des solutions.....

Byyyyyyyyyyyye

Rechercher des sujets similaires à "tcd champ calcule reference donnee"