Power Query Power BI - Remplacer les valeurs de toutes les colonnes sauf celle spécifiée

Moss

XLDnaute Nouveau
Bonjour à tous,

Sur Power Bi, j'aimerai remplacer les "0" par "null" dans toutes les colonnes sauf pour la colonne appelée "référence".
Ce remplacement de valeur s'effectue sur 5 colonnes différentes et ces colonnes ont un nom évolutif (c'est pourquoi j'aimerai trouver un autre moyen que de les nommer dans ma requête) :

Prenons l'exemple ici avec les colonnes "A" & "B" & "C" & "D" & "E"
= Table.ReplaceValue(#"Requête ajoutée",0,null,Replacer.ReplaceValue,{"A", "B", "C", "D", "E"})

Si quelqu'un à une solution à m'apporter, ce serait top !

Merci d'avance et bonne journée !
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Bon ben le fichier n'est pas là ?

Si toutes les colonnes sauf "Référence" :
List.Difference(Table.ColumnNames(LaTable),{"Référence"})
Si "Référence" est colonne 0 et qu'on veut les 5 suivantes :
List.Range(Table.ColumnNames(LaTable),1,5)

Avec l'une ou l'autre, quelque chose comme :
= Table.ReplaceValue(#"Requête ajoutée",0,null,Replacer.ReplaceValue,List.Range(Table.ColumnNames(#"Requête ajoutée),1,5) )

And so, and so.

Mais comme on ne sait rien ....
 
Dernière édition:

Moss

XLDnaute Nouveau
Re Hasco,

Désolé je n'avais pas vu ta demande de fichier exemple à temps.
Dans mon cas c'était : Si toutes les colonnes sauf "Référence"

J'ai donc essayé une nouvelle requête avec tes éléments de réponses :

= Table.ReplaceValue(#"Requête ajoutée",0,null,Replacer.ReplaceValue,List.Difference(Table.ColumnNames(#"Requête ajoutée"),{"Reference"}))

Ca fonctionne !! Les valeurs "0" de mes différentes colonnes sont passées en "null".

Un grand merci à toi,
Bonne soirée
Requête .jpg
 

job75

XLDnaute Barbatruc
Bonjour à tous,

J'espère que Power BI sert à bien d'autres choses que "null".

Car il est très simple d'afficher "null" à l'aide d'une mise en forme conditionnelle (MFC).

Voyez le fichier joint.

A+
 

Pièces jointes

  • MFC(1).xlsx
    9.8 KB · Affichages: 3

job75

XLDnaute Barbatruc
La demande equivaut donc à supprimer les 0 pas à les maquiller...
Dans ce cas si comme moi on n'aime pas Power Query il faut du VBA, voyez le fichier joint :
VB:
Private Sub Worksheet_Change(ByVal R As Range)
Set R = Intersect([A:E], UsedRange)
If R Is Nothing Then Exit Sub
Dim tablo, ub%, i&, j%
tablo = R.Resize(R.Rows.Count + 1).Value2 'matrice, plus rapide, au moins 2 éléments
ub = UBound(tablo, 2)
For i = 1 To UBound(tablo)
    For j = 1 To ub
        If CStr(tablo(i, j)) = "0" Then tablo(i, j) = "null"
Next j, i
Application.EnableEvents = False 'désactive les évènements
R = tablo
Application.EnableEvents = True 'réactive les évènements
End Sub
Question : la méthode du post #2 remplace-t-elle les dates et heures nulles ?
 

Pièces jointes

  • Null(1).xlsm
    17.6 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonjour chris, le forum,

Effectivement c'est dans Power BI et pas dans Excel qu'il faut obtenir les "null".

Or les 'null" correspondent aux cellules vides du tableau source.

Par conséquent en VBA il faut effacer les valeurs zéro du tableau source, voyez ce fichier (2) :
VB:
Private Sub Worksheet_Change(ByVal R As Range)
Dim tablo, ub%, i&, j%
Set R = ListObjects(1).Range.Resize(, 5) '5 colonnes du tableau structuré
tablo = R.Formula 'matrice, plus rapide
ub = UBound(tablo, 2)
For i = 2 To UBound(tablo)
    For j = 1 To ub
        If tablo(i, j) = "0" Then tablo(i, j) = "" 'efface les valeurs zéro
Next j, i
Application.EnableEvents = False 'désactive les évènements
R = tablo 'restitution
Application.EnableEvents = True 'réactive les évènements
ThisWorkbook.RefreshAll 'mise à jour du résultat de la requête
End Sub
A+
 

Pièces jointes

  • Null(2).xlsm
    27.9 KB · Affichages: 3

Discussions similaires

Réponses
2
Affichages
498