Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
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'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.
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.
oui, j'avais bien vu ton post #4 ; pourquoi tu l'écris de nouveau dans ton post #6 ?
j'ai répondu à ton post #4 avec mon post #5 : relis-le, et patiente un moment. 😉
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
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
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 où 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.
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.
- 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