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

  • 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...
Bonsoir Yücel, mapomme,

a) formule en F1, à tirer vers le bas : =CNUM(GAUCHE(E1 & "00000";6))

b) format de cellule, 1er onglet Nombre :

* choisir Nombre
* Nombre de décimales : 0
* cocher : Utiliser le séparateur de milliers ( )


en E1 : 615 ➯ en F1 : 615 000
en E2 : 4456 ➯ en F2 : 445 600
en E3 : 61 ➯ en F3 : 610 000

vrais nombres, grâce à CNUM(), donc : alignés à droite

@mapomme : tu as raison : pas un format ; mais faut ruser ! 😉


soan
 
Dernière édition:
Bonsoir Mapomme, Soan,

C'est un petit fichier de comptabilité que j'essaye de mettre en place.

Soan, peut-on avoir ce même résultat mais avec du VBA qui modifiera autom??
Car lorsque je vais taper le compte 615 il faut que la cellule se transforme en 615 000 afin d'éviter des erreurs dans mon tableau.

En vous remerciant !
 
Bonsoir Mapomme, Soan,

C'est un petit fichier de comptabilité que j'essaye de mettre en place.

Soan, peut-on avoir ce même résultat mais avec du VBA qui modifiera automatiquement la colonne E ??
Car lorsque je vais taper le compte 615 il faut que la cellule se transforme en 615 000 afin d'éviter des erreurs dans mon tableau.
 
Re à tous,

Voir le fichier joint. Tapez un entier dans la colonne E.
Le code est dans le module de la feuille "Feuil1".
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   Application.EnableEvents = False
   If Target.Column = 5 And Target.Count = 1 Then Target = Val(Left(Target & "000000", 6))
   Application.EnableEvents = True
End Sub

edit : corrigé après la remarque de soan.
 

Pièces jointes

Dernière édition:
Re,

Une version qui accepte les valeurs texte, les nombres avec virgules et les entiers (positifs ou négatifs); seuls ces derniers seront modifiés.

Le code :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column = 5 And Target.Count = 1 Then
      If Target = "" Then Exit Sub
      If IsNumeric(Target) Then
         If Int(Abs(Target)) = Abs(Target) Then
            Application.EnableEvents = False
            Target = Sgn(Target) * Val(Left(Abs(Target) & "000000", 6))
            Application.EnableEvents = True
         End If
      End If
   End If
End Sub
 

Pièces jointes

Dernière édition:
@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

----------------------------------------------------------------------------------------

c) format de nombre avec 0 décimales et séparateur de milliers :
mis automatiquement

c'est ce qui te permet d'avoir « 615 000 » au lieu de « 615000 »,
donc les nombres sont plus lisibles ; ce qui est particulièrement
important en comptabilité, pour pouvoir lire plus facilement
des colonnes entières de chiffres !

d) alignement à droite et retrait de 1 : mis automatiquement

le retrait de 1 est utile pour éviter que le nombre saisi soit collé tout contre
le bord droit de la cellule (qu'il y aie une bordure droite ou non) ➯ c'est plus aéré,
et donc plus lisible.

----------------------------------------------------------------------------------------

cependant, c) et d) sont inutiles si tu les fait manuellement (au préalable) pour
toute la colonne E ; ou au moins pour la plage des nombres tu fais la saisie ;
par exemple : pour E5:E200 ; si c'est dans un tableau structuré, alors les lignes
ajoutées auront le même format et alignement que ceux de la ligne précédente
➯ le format et l'alignement pour la cellule E de la ligne qui a été ajouté seront
ok, de façon automatique. 🙂

mettre le format de nombre et l'alignement par VBA est utile uniquement
si la plage de saisie des nombres n'a pas été faite correctement dès le
départ, mais bien sûr, sans ton fichier, je ne peux pas le savoir ! 🙄

----------------------------------------------------------------------------------------

je n'ai rien fait pour des nombres négatifs car dans ton post #4, tu as noté :
« C'est un petit fichier de comptabilité » ; or en compta, dans une colonne
Débit ou une colonne Crédit, on saisit uniquement des nombres positifs.

----------------------------------------------------------------------------------------

si tu as besoin d'une adaptation pour ton vrai fichier, n'hésite pas
à me la demander ; à te lire pour avoir ton avis.


soan
 

Pièces jointes

Dernière édition:
@Yücel

Lis d'abord mon post #13 précédent.

pour le fun, j'ajoute quand même cette autre version,
pour la saisie de nombres entiers positifs et négatifs.

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", 7 + (Sgn(.Value) = 1)))
    Application.EnableEvents = -1
  End With
End Sub
mais ne pas s'en servir pour une colonne unique de conversion euros/francs,
puisque là, la conversion est faite par une formule ➯ c'est pas une saisie !


pour la saisie de nombres avec virgule, voir le post #11 de @mapomme.


soan
 

Pièces jointes

- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…