Macro pour augmenter ou diminuer le nombre de décimale

Bonjour à tous,

Il existe dans Excel deux boutons permettant d'augmenter ou de diminuer le nombre de décimal d'un chiffre, à chaque clic sur l'un de ces boutons le nombre de décimale augmente ou diminue.

J'essaye désespérément de créer un raccourci clavier permettant de réaliser la même opération, mais sans succès

Pour info j'ai déjà essayé avec l'enregistreur de macro. Mais lors de l'exécution de la macro celle-ci de fonctionne qu'une fois (dans les fait la macro applique le format de la cellule enregistrée).

Si quelqu'un peut m'aider.

Merci d'avance.

bonjour,

voici 2 macros qui ajoutent (ppd) ou otent (mmd) des décimales aux cellules selectionnées

Sub pdd()
For Each c In Selection
f = c.NumberFormat
If f = "General" Then f = "0"
If InStr(f, ".") = 0 Then f = f & ".0" Else f = f & "0"
c.NumberFormat = f
Next
End Sub
Sub mdd()
For Each c In Selection
f = c.NumberFormat
If f = "General" Then f = "0"
If InStr(f, ".") <> 0 Then f = Left(f, Len(f) - 1)
c.NumberFormat = f
Next
End Sub

Merci pour votre réponse.

Les macros fonctionnent impeccablement pour des nombres au format standard

Dès que l'on passe sur un format personnalisé (type millier - que j'utilise beaucoup ainsi que d'autres) elles beuguent.

Message Erreur exécution 1004

Impossible de définir la propriété NumberFormat de la classe Range.

Merci d'avance


idem pour les %

Les décimales se mettent après le % (ex : 5%.52) au lieu de 5.52%.

Merci beaucoup

bonsoir,

voici le code adapté, pour la version FR il faut sans doute remplacer le point par la virgule

les formats date et time sont ignorés, pour les format personnalisés, il y a sans doute encore des cas qui ne passeront pas de même le format currency (monnaie ?)

'Const separateurdedecimale = "." 
const separateurdedecimale=","
Sub pdd()

For Each c In Selection
pc = ""
f = c.NumberFormat
If f = "General" Then f = "0"
If f Like "*[mMYyAaDdJjSs]" Then Exit Sub
If InStr(f, "%") Then f = Left(f, Len(f) - 1): pc = "%"
If InStr(f, separateurdedecimale) = 0 Then f = f & ".0" Else f = f & "0"
c.NumberFormat = f & pc
Next
End Sub
Sub mdd()

For Each c In Selection
pc = ""
f = c.NumberFormat
If f = "General" Then f = "0"
If f Like "*[mMYyAaDdJjSs]" Then Exit Sub
If InStr(f, "%") Then f = Left(f, Len(f) - 1): pc = "%"
If InStr(f, separateurdecimale) <> 0 Then f = Left(f, Len(f) - 1)
c.NumberFormat = f & pc
Next
End Sub

Merci pour ton aide.

Je débute sur vba et cherche aussi depuis pas mal de temps un raccourci clavier me permettant d'ajouter des décimales.

Les % sur excel étant exprimés sans décimales dans un 1er temps, la macro ci-dessus ne permet pas d'augmenter les décimales après virgule si justement cette virgule n'existe pas initialement. La macro va alors ajouter des "0" devant le chiffre obtenu :

Exemple : 4%, la macro pdd donnera 04% et non 4,x%

Y-a-t'il une autre possibilité ?

Merci beaucoup.

Bonsoir,

essaie ceci

'Const separateurdedecimale = "."
Const separateurdedecimale = ","
Sub pdd()

For Each c In Selection
pc = ""
f = c.NumberFormat
If f = "General" Then f = "0"
If f Like "*[mMYyAaDdJjSs]" Then Exit Sub
If InStr(f, "%") Then f = Left(f, Len(f) - 1): pc = "%"
If InStr(f, separateurdedecimale) = 0 Then f = f & separateurdedecimale & "0" Else f = f & "0"
c.NumberFormat = f & pc
Next
End Sub
Sub mdd()

For Each c In Selection
pc = ""
f = c.NumberFormat
If f = "General" Then f = "0"
If f Like "*[mMYyAaDdJjSs]" Then Exit Sub
If InStr(f, "%") Then f = Left(f, Len(f) - 1): pc = "%"
If InStr(f, separateurdedecimale) <> 0 Then f = Left(f, Len(f) - 1)
c.NumberFormat = f & pc
Next
End Sub

Merci beaucoup pour ta réponse rapide

Rechercher des sujets similaires à "macro augmenter diminuer nombre decimale"