XL 2019 Supprimer que les "0" ou "0.0000" dans 2 colonnes précises

  • Initiateur de la discussion Initiateur de la discussion Titof06
  • Date de début Date de début

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 !

Titof06

XLDnaute Occasionnel
Bonjour,

Je reviens vers vous pour une aide, svp.

Sur mon fichier joint, ainsi que la macro, je souhaiterais supprimer les "0" ou "0.0000" des Colonnes "EcoTaxe" & "EcoMobilier".

Je n'y arrive pas.

Je vous remercie par avance, et vous souhaite une agréable fin de journée,

Titof06
 

Pièces jointes

Qu'on supprime un zéro dans une cellule ou qu'on ne l'affiche pas, le résultat est le même pour l'œil humain, Nan ?
Pour l'oeil oui, mais il a clairement été demandé de ne pas simplement masquer les zéros mais de les supprimer.
Et pour l'instant on attend de savoir pourquoi.

Et les rendre invisibles serait-il suffisant ?
Hélas, non.

Comme valeur je dois avoir soit :
- rien, vide ou "", sans caractère
- une valeur du type "0.0200".
 
Bonjour @Titof06🙂, à tous😉,

Pour passer le temps, un code qui :
  • transforme les valeurs pouvant représenter un nombre en ce nombre (que le séparateur décimal soit une virgule ou un point)
  • remplace les valeurs égales à zéro par rien
Cliquer sur le bouton bleu. Le bouton saumon réinitialise les données. Le code est dans le module de la feuille "Source (4)" :
VB:
Sub ZeroParRien()
' remplace les valeurs (nombre ou texte) représentant un nombre par le nombre représenté ( séparateur = "," ou bien "." )
' si le nombre représenté est 0, alors on le remplace par rien
Dim t, i&, j&, x
   t = [m:n].Resize(ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1).Value2    ' t: array des valeurs
   For i = 1 To UBound(t): For j = 1 To UBound(t, 2)                       ' pour chaque valeur de l'array t
      x = Replace(t(i, j), ".", ",")                                       ' remplacer les points par des virgules
      If IsNumeric(x) Then x = CDbl(x): t(i, j) = IIf(x = 0, Empty, x)     ' remplacer le nombre représenté par ce nombre
   Next j, i
   Range("m:n").NumberFormat = "General"     ' mise au format "Standard" des colonnes m:n
   [m:n].Resize(UBound(t)) = t               ' transfert des nouvelles valeurs sur la feuille
End Sub
 

Pièces jointes

Dernière édition:
Re
"Comment faire autrement"' en supprimant la mise en forme dans la procédure !
A voir
VB:
on efface les "0"
        If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter
        Sheets(ongnouv).Range(lett & "2:" & lett & nbr_lig_mef).Select
        'Selection.NumberFormat = "0.00"
        Selection.NumberFormat = "# ##0,00;-# ##0,00;;" 'Ici
    Sheets(ongnouv).Range("A1").Select
Jean marie
Bonjour ChTi160,

Oui, même avec cette fonction (Selection.NumberFormat = "# ##0,00;-# ##0,00;;"), cela me laisse un "0" qui seulement n'est pas visible.

Cela ne m'arrange pas, il me faudrait réellement rien "".

Je vous remercie et vous souhaite une agréable fin de journée,

Titof06
 
Pour l'oeil oui, mais il a clairement été demandé de ne pas simplement masquer les zéros mais de les supprimer.
Et pour l'instant on attend de savoir pourquoi.
Bonjour TooFatBoy,

C'est un traitement qui me sert ensuite à intégrer une mise à jour tarifaire.

Le programme est fait de tel sorte, qu'il n'accepte pas les "0", il attend des vides "".

Voilà la raison.

Je vous remercie et vous souhaite une agréable fin de journée,

Titof06
 
Bonjour @Titof06🙂, à tous😉,

Pour passer le temps, un code qui :
  • transforme les valeurs pouvant représenter un nombre en ce nombre (que le séparateur décimal soit une virgule ou un point)
  • remplace les valeurs égales à zéro par rien
Cliquer sur le bouton bleu. Le bouton saumon réinitialise les données. Le code est dans le module de la feuille "Source (4)" :
VB:
Sub ZeroParRien()
' remplace les valeurs (nombre ou texte) représentant un nombre par le nombre représenté ( séparateur = "," ou bien "." )
' si le nombre représenté est 0, alors on le remplace par rien
Dim t, i&, j&, x
   t = [m:n].Resize(ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1).Value2    ' t: array des valeurs
   For i = 1 To UBound(t): For j = 1 To UBound(t, 2)                       ' pour chaque valeur de l'array t
      x = Replace(t(i, j), ".", ",")                                       ' remplacer les points par des virgules
      If IsNumeric(x) Then x = CDbl(x): t(i, j) = IIf(x = 0, Empty, x)     ' remplacer le nombre représenté par ce nombre
   Next j, i
   Range("m:n").NumberFormat = "General"     ' mise au format "Standard" des colonnes m:n
   [m:n].Resize(UBound(t)) = t               ' transfert des nouvelles valeurs sur la feuille
End Sub
Bonjour mapomme,

C'est un traitement fonctionne également parfaitement, comme sylvanu.

Encore un grand merci et je vous remercie et vous souhaite une agréable fin de journée,

Titof06
 
Hi,
Oui, ça fonctionne...
Mais tu parles à un néophyte, pas à un pro....
Condensé, optimisé, (mettre le moins de lettres possibles, pour éviter une crampe des doigts dans...) un code, c'est bien... l'adapter (l'expliquer) au demandeur, c'est mieux.... tu ne crois pas?
Re-,
D"ailleurs, au vu du sujet (travail sur un fichier txt), une solution Power Query aurait pu (du) être proposée...
VBA, c'est bien, un autre horizon, c'est envisageable 🙂
 
Hello Cousinhub,
Oui, ça fonctionne...
Mais tu parles à un néophyte, pas à un pro....
J'ai dit que je ne comprenais pas ce fil car :

- la solution que je propose au post #17 est évidente

- Titof06 n'est pas un néophyte, il est inscrit depuis 6 ans, pourquoi une question aussi simplette ?

- surtout pourquoi sylvanu, Staple1600 et mapomme ont-ils proposé des solutions alambiquées ?

A+
 
Bonsoir @job75😉,
- surtout pourquoi sylvanu, Staple1600 et mapomme ont-ils proposé des solutions alambiquées ?

Pour ma pomme, j'avais précisé que c'était pour :
  1. passer le temps
  2. transformer les nombres ou les textes représentant un nombre en véritable nombre et ceci que le séparateur décimal soit une virgule ou non
  3. et enfin supprimer les nombres égaux à zéro
Si on reprend mon classeur exemple, la macro que tu as proposée ne réalise pas toutes ces opérations.
Mais ta macro répond strictement à la demande de l'auteur du fil👍.
J'ai juste un peu extrapolé la demande (initiative personnelle).

Bonnet de nuit 😴 .
 
- 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
12
Affichages
619
Retour