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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 !
 
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:
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
 
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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
900
Réponses
10
Affichages
2 K
A
Retour