XL 2016 VBA : mettre 0 en fin de nombre

Yücel

XLDnaute Junior
Bonsoir,

Je souhaiterai que les chiffres de la colonne E soit au format "000 000" mais avec les zéro en fin de nombre et non en début.

Exemple :
615 = 615 000
4456 = 445 600
61 = 610 000

Merci d'avance !

Yücel.
 
Solution
@Yücel

je propose le fichier Excel ci-dessous.
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Column <> 5 Then Exit Sub
    If IsEmpty(.Value) Then Exit Sub
    If Not IsNumeric(.Value) Then Exit Sub
    Application.EnableEvents = 0
    .NumberFormat = "#,##0"
    .HorizontalAlignment = 4: .IndentLevel = 1
    .Value = Val(Left$(.Value & "00000", 6))
    Application.EnableEvents = -1
  End With
End Sub
a) regarde aussi ce qu'il se passe quand tu effaces un nombre avec
la touche Suppression. ;)

b) les valeurs texte sont ignorées, et ne font pas planter la sub...

soan

XLDnaute Barbatruc
Inactif
@Yücel

si tu as essayé le fichier de mon post #14, tu as pu voir que c'est pour des nombres entiers,
positifs ou négatifs ; exemples : 12120 000 ; -12-120 000 ; la nouvelle version de
ce post « gère » les nombres à virgule, mais d'une façon très spéciale (et c'est pas comme
dans le post #11 de @mapomme) :

12,56 120 000,56 ; et -12,56 -120 000,56

c'est-à-dire que ça fait pareil qu'avant pour la partie entière du nombre ;
puis ça ajoute la partie fractionnaire (les chiffres après la virgule).

seul hic : je ne sais pas trop si ça peut t'être utile ou non ! :p :rolleyes:


VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Column <> 5 Then Exit Sub
    If IsEmpty(.Value) Then Exit Sub
    If Not IsNumeric(.Value) Then Exit Sub
    Dim vx@, frc As Byte: Application.EnableEvents = 0
    .NumberFormat = "#,##0.00": .HorizontalAlignment = 4: .IndentLevel = 1
    vx = Abs(.Value): frc = Int((vx - Int(vx)) * 100)
    .Value = (Val(Left$(Int(vx) & "00000", 6)) + frc / 100) * Sgn(.Value)
    Application.EnableEvents = -1
  End With
End Sub
je pense que mapomme va peut-être dire : « c'est un peu tiré par les cheveux » ;
mais d'un autre côté, j'ai pensé que ça pourrait être une bonne solution, pour
concilier la transformation d'un nombre afin qu'il soit sur 6 chiffres et la saisie
simultanée d'une partie fractionnaire.

à part ça, c'était la dernière version qu'j'ai à proposer ; j'en n'ai plus d'autre
en réserve (même en cherchant bien ! :p).


soan
 

Pièces jointes

  • Exo Yücel.xlsm
    14.5 KB · Affichages: 8
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 088
Messages
2 085 203
Membres
102 818
dernier inscrit
NeoMaint