XL 2016 VBA : mettre 0 en fin de nombre

  • Initiateur de la discussion Initiateur de la discussion Yücel
  • 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 !

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...
@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

Dernière édition:
- 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
38
Affichages
1 K
Retour