XL 2016 Dax fonction If / erreur type de données variant

androu

XLDnaute Nouveau
Bonjour

La formule ci dessous dans dax me retourne l'erreur ci dessous:

Erreur: Les expressions qui retournent un type de données variant ne peuvent pas être utilisées pour définir des colonnes calculées.

=IF([OT_Qualification_Weekly]="b [1 week delay]";[ETD]-7-3;IF([OT_Qualification_Weekly]="c [2 weeks delay]";[ETD]-14-3;IF([OT_Qualification_Weekly]="d [3 weeks delay]";[ETD]-21-3;IF([OT_Qualification_Weekly]="e [4 weeks delay]";[ETD]-28-3;[OT_Qualification_Weekly]))))

Il semblerait que le souci vient du dernier élément false de la fonction IF => "[OT_Qualification_Weekly])"
J'ai essayé d'ajouter d'autres fonctions comme format mais sans succès merci ...

Merci par avance pour votre aide

Androu
 

Amilo

XLDnaute Accro
Bonsoir Androu, vgendron,
Votre table est déjà ajoutée au modèle de données, pourquoi ne pas utiliser une colonne personnalisée dans Power Query directement,
Cette colonne s'ajoute automatiquement dans Power Pivot.
Voici une bonne partie du code en langage M à tester dans Power Query :

=if [OT_Qualification_Weekly] = "b [1 week delay]" then Date.AddDays([ETD],-7-3) else if [OT_Qualification_Weekly] = "c [2 weeks delay]" then Date.AddDays([ETD],-14-3) else if [OT_Qualification_Weekly] = "d [3 weeks delay]" then Date.AddDays([ETD],-21-3) else [OT_Qualification_Weekly]

Cordialement
 

Pièces jointes

  • Androu_Colonne personnalisée.png
    Androu_Colonne personnalisée.png
    17.2 KB · Affichages: 79
Dernière édition:

androu

XLDnaute Nouveau
Bonjour oui en effet c'est une solution merci :) mais es ce que c'est possible de le faire dans la partie power pivot ? désolé je suis novice c'est pour essayer de comprendre aussi ce qui est faisable ou pas au cas ou j'en aurais besoin par la suite et de mieux comprendre le fonctionnement. merci par avance
 

Amilo

XLDnaute Accro
Re,
désolé, j'étais trop vite,
Essayez ceci sinon,
Vous pouvez l'adapter en insérant la fonction Format([ETD);"General date") à votre formule initiale normalement,
=SWITCH([OT_Qualification_Weekly];"b [1 week delay]";FORMAT([ETD]-7-3;"General Date");"c [2 weeks delay]";FORMAT([ETD]-14-3;"General Date");"d [3 weeks delay]";FORMAT([ETD]-21-3;"General Date");[OT_Qualification_Weekly])

Bonne soirée
 
Dernière édition:

Amilo

XLDnaute Accro
Bonsoir le forum, bonsoir androu,

La fonction Format() en DAX est l'équivalent de la fonction Texte() dans les formules d'Excel,
Elle convertit une valeur donnée vers un format texte mais permet aussi de personnaliser le résultat selon le 2ème argument saisi après le point-vigule à l'intérieur de la fonction format() ou texte().
Vous connaissez certainement quelques arguments de la fonction texte() pour personnaliser les nombres ou les dates (date courte, date longue, date avec heures, date dans l'ordre "année/mois/jour"....etc).
On aurait pu remplacer "General Date" par simplement des ""
"General Date" signifie qu'il n'y a pas de personnalisation particulière à notre colonne de dates.

Sinon, sans rentrer dans les détails sous peine de peut-être me tromper (confusion parfois entre langage M et DAX), j'ajouterais que certaines fonctions comme IF ou SWITCH demandent un même typage obligatoire entre les arguments. Comme un peu, certaines fonctions Excel notamment Recherchev() où certaines colonnes doivent être de même type.
Dans notre cas, sauf erreur de ma part, le 2ème et 3ème argument de IF(test logique;résultat si vrai;sinon si faux) doivent être au même format soit Texte d'où la conversion de la colonne Date au format Texte.

J'espère avoir répondu à votre demande.

Bonne soirée
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 904
Membres
101 834
dernier inscrit
Jeremy06510