Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 !


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 ! ).


soan
 

Pièces jointes

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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…