Tronquer un nombre à 1 chiffre après la virgule

Toho

XLDnaute Nouveau
Bonjour le Forum!

Je suis nouveau sur Excel-Downloads et je me tourne vers vous car j'ai besoin d'un peu d'aide...
Je vous expose mon problème :

je souhaiterais tronquer des nombres à 1 chiffe après la virgule

exemple 3.12 -> 3.1 ; 12.78 -> 12.7

Sous une feuille excel, très facile (=TRONQUE(E5;1)) mais ça devient plus compliqué quand on essaie en VBA...
J'ai essayé de résoudre mon problème de plusieurs manières avec les fonctions ROUND, FormatNumber mais ces dernières arrondissent alors que je souhaite tronquer...
J'ai essayé avec une macro enregistrée mais le problème c'est que le nombre de données à tronquer est variable et cela ne répond pas à mon besoin.

Autre détail important, je suis novice en VBA et "autodidacte" (si je puis dire, merci les forums) : j'ai dû apprendre sur le tas et je n'ai pas toutes les bases.

Merci d'avance! :)
 

Pièces jointes

  • trunc.xls
    37 KB · Affichages: 56

Toho

XLDnaute Nouveau
Re : Tronquer un nombre à 1 chiffre après la virgule

Bonjour Caillou et merci de ta réactivité,

j'ai modifié la ligne de code mais ça me supprime tous les chiffres après la virgule (je souhaite conserver les dixièmes) et de plus
me multiplie le nombre entier par 10 ...
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Tronquer un nombre à 1 chiffre après la virgule

Bonjour Toho et bienvenu, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim cel As Range
Dim e As Integer
Dim d As Double

For Each cel In Range("E5").CurrentRegion
   e = CInt(Split(cel.Value, ",")(0))
   d = CDbl(Left(Split(cel.Value, ",")(1), 1) / 10)
   cel.Value = e + d
Next
End Sub

[Édition]
Bonjour Philippe, Cailllou on s'est croisé... Pourquoi faire simple quand on peut faire compliquer ? Hein ! je pose la question...
 
Dernière édition:

Toho

XLDnaute Nouveau
Re : Tronquer un nombre à 1 chiffre après la virgule

Arf ... Que dire? Parfait. Comment ne pas y avoir pensé, à trop vouloir chercher une fonction qui le fasse on en oublie les bases...

Merci beaucoup Caillou, Merci beaucoup Philippe.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Tronquer un nombre à 1 chiffre après la virgule

Re,
Autre détail important, je suis novice en VBA et "autodidacte" (si je puis dire, merci les forums) : j'ai dû apprendre sur le tas et je n'ai pas toutes les bases.
Bonjour Toho et bienvenu, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim cel As Range
Dim e As Integer
Dim d As Double

For Each cel In Range("E5").CurrentRegion
   e = CInt(Split(cel.Value, ",")(0))
   d = CDbl(Left(Split(cel.Value, ",")(1), 1) / 10)
   cel.Value = e + d
Next
End Sub
Robert, tu fournis également le Doliprane où le Daffalgan ;)

à+
Philippe
 

Si...

XLDnaute Barbatruc
Re : Tronquer un nombre à 1 chiffre après la virgule

salut

@Philippe : chez moi, à condition d'avoir déclaré la variable C en Range comme le fait Robert;) . Si... ce n'est pas le cas ajouter .Value
Code:
Sub Macro1()
  Dim C As Range
  For Each C In Range([E5], [E5].End(xlDown))
     C = Int(C * 10) / 10
  Next
End Sub
ou
Code:
Sub Macro1()
   For Each C In Range([E5], [E5].End(xlDown))
     C.Value = Int(C * 10) / 10
   Next
End Sub
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Tronquer un nombre à 1 chiffre après la virgule

Re,
salut

@Philippe : chez moi, à condition d'avoir déclaré la variable C en Range comme le fait Robert;) . Si... ce n'est pas le cas ajouter .Value
Code:
Sub Macro1()
  Dim C As Range
  For Each C In Range([E5], [E5].End(xlDown))
     C = Int(C * 10) / 10
  Next
End Sub
ou
Code:
Sub Macro1()
   For Each C In Range([E5], [E5].End(xlDown))
     C.Value = Int(C * 10) / 10
   Next
End Sub



@ Si :
Pourquoi alors avoir oublié le .value derrrière le second "C" ---> C.Value = Int(C * 10) / 10

.Value
n'est pas nécessaire puisque c'est la propriété prise par défaut

à+
Philippe
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Tronquer un nombre à 1 chiffre après la virgule

Re,
J'essaie d'avoir les codes les plus courts et le tien, que j'avais déjà trouvé, ne fonctionne pas chez moi !
c'est parce que je n'ai posté que la partie de code à modifier, il est nécessaire de le remettre en bonne place place dans le code du fichier joint à la question post#1

à+
Philippe

Edit: j'avais effectivement ajouté Dim cell as Range lors de mon test sur fichier
mais il a échappé au copier/coller :( par oubli
 
Dernière édition:

Discussions similaires