Excel pour les null ne pas afficher les zeros (bwz blank when zero)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 674 fois - Téléchargée 22 fois

Contenu du snippet

Memento sur les cellules a zéro.

Traitement des Cellules quand une formule de calcul conditionnée ou non retourne la valeur zéro.
Soit la formule retourne un zéro que l'on ne veux pas voir affiché
Soit la formule retourne une chaine vide qui perturbe les calculs.

Ci dessous différentes solutions aux problemes rencontrés.

Source / Exemple :


'
' ----------------------------------------------------------------------
' BWZ : Blank When Zéro  EXCEL POUR LES NULL  (Zéro est arrivé)
' ----------------------------------------------------------------------
' La fonction SI retourne une valeur de type numérique ou Alpha qui peut être gênante
'
' Syntaxe N°1 Exemple de condition qui retourne le nombre zéro
'    retourne la valeur numérique zéro avec les syntaxes suivantes (dans le cas ou A1 est égal a zéro ou estVide) 
'       A1 = 0
'       B1 = SI(A1<>0;"Pas nul";)
'       B1 = SI(A1<>0;"Pas nul";0)
'       B1 = SI(A1=0;;"Pas nul")
'       B1 = SI(A1=0;0;"Pas nul")
'    Avec cette syntaxe
'       C1 = B1 + 22      --> 22 sans problème
'       Mais la valeur 0 retournée en B1 n'est pas forcément souhaitée à l'affichage.
'       Pour ne pas afficher les zéros dans certaines cellules d'une feuille : 
'          utiliser un mask d'édition personnalisé avec la condition d'affichage [<>0] 
'          Format Cell Personnalisé :  [<>0]# ##0.00;""
'       Ou bien si aucune valeur à zéro n'est à afficher dans la feuille ou dans le classeur
'          Options Excel / Options avancées / Décocher la case "Afficher un zéro dans les cellules qui ont une valeur nulle"
'
' Syntaxe N°2 Exemple de condition qui retourne une chaine vide ""
'    retourne une chaine alpha vide avec les syntaxes suivantes (dans le cas ou A1 est égal a zéro ou estVide) 
'       A1 = 0
'       B1 = SI(A1<>0;"Pas nul";"")
'       B1 = SI(A1=0;"";"Pas nul")
'       Avec cette syntaxe
'          La valeur "" retournée est gênante quand la cellule entre dans une formule arithmétique 
'          C1 = B1 + 22         --> #VALEUR car la cellule B1 contient de l'alpha
'          Pour contourner le problème il faut faire
'          C1 = SOMME(B1) + 22  --> 22  
'          Il n'y a pas de 0 affiché puisque la cellule est de type texte et contient ""
' 
' NOTA 1 Le Mask d'affichage ne change ni le type ni la valeur des cellules.
' NOTA 2 Quelque soit la syntaxe utilisée, la cellule B1 n'est plus vide car elle contient soit 0 soit une chaine vide
'       et la fonction ESTVIDE(B1) retourne toujours FAUX car la cellule n'a plus le type vbEmpty
' NOTA 3 si on exporte le fichier au format .TXT ou .CSV les données sont exportées formatées comme elles sont affichées.

A voir également

Ajouter un commentaire

Commentaires

cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
62 -
Mes excuses, je n'ai pas lu en profondeur (3 coups de bâton)
JACK :
Pas peur : le problème énoncé n'est pas l'affichage de la valeur nulle ou "", mais son existence même, qui empêche l'objectif du graphique. Auquel s'ajoute une recherche de vitesse de calcul... Mes essais par cette fonctionnalité confirme que cela ne marche pas.

Merci quand même !

Par contre, j'ai réalisé un classeur qui mets en œuvre la solution que j'ai proposé, cela à l'air de bien marcher.
cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
62 -
C'est pas pour vous faire peur, mais l'option "Afficher un zéro dans les cellules qui ont une valeur nulle" de Excel ne vous plait pas ?
Il y a même, dans les "formats de cellule", la possibilité de masquer les zéros, cellule par cellule.
Super, je comprends parfaitement le principe !
En fait, cela veut dire qu'il est peut-être plus efficace (=plus rapide) de d'abord faire et de charger tous les calculs dans un fichier .txt, puis de transférer l'ensemble dans la feuille excel, plutôt que de faire les calculs en en écrivant les résultats un à un directement dans la feuille Excel.
Dès que j'ai un moment, je fais un test !
Quel qu'en soit le résultat, j'aurai grâce à votre aide ouvert un nouvel horizon... mille mercis ne serait-ce que pour ça.
Cordialement
Bonjour,

Nos problématiques sont de manipuler beaucoup de lignes de fichiers textes.
Il faut selon les cas récupérer des infos sur ces lignes, sur toutes ou selon des critères. Des fois faire des totalisations de montant pour plusieurs lignes, comparer différentes zones de la ligne, etc...
Puis disposer de ces infos dans des fichiers Excel.

Perso, j'importais par macro le fichier texte et faisait calculer/écrire mes résultats au fur et à mesure dans les feuilles Excel par des calculs en VBA ou/et des écritures de formules.

J'ai appris à travailler à partir du fichier texte source, faire les calculs en VBA, écrire les résultats dans des fichiers textes, puis importer ces résultats dans Excel.
L’exécution est beaucoup plus rapide.

J'imagine le scénario suivant pour vous :
- exporter en txt la plage des données source de vos calculs (données en ligne pour travailler avec les fonctionnalités VBA de manipulation de texte - genre Open "données.txt" For Input As #1, Line Input #1, Ligne ... )
- ouvrir ce fichier et générer par les calculs en VBA les résultats, toujours en ligne
- importer ce fichier résultats.txt dans la plage Excel source du graphique.

Exemple simple : calculer le périmètre et la surface d'un rectangle
source excel : colonne A et B
10 5
15 12
7 8
exporter en texte données.txt, ouvrir avec "données.txt" for Input as #1
écrire dans le fichier txt Résultat les lignes
30 50
54 180
30 56
importer ce txt en colonnes C et D

Pas très simple peut-être à mettre en œuvre, mais le principe doit fonctionner.
Répond-t-il à la demande ? Peut-être...
A tester si c'est plus rapide et si j'ai compris ce que vous vouliez faire !

Cordialement
Frédéric

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.