Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Fraction bizarre dans excel

dessin direct

XLDnaute Nouveau
Bonjour,

j'ai des fractions du genre 11/12, 5/6. 1/6 …
comment régler cela pour avoir des fractions de mesure
correct comme un tape à mesurer automatiquement

Merci pour votre aide
 
Solution
Bonjour @JHA
Il me semble que le format personnalisé "0/#" affiche la fraction au minimum
Oui mais toujours en d'éventuels dénominateurs plus proches autre que 2, 4, 8 et de surcroit plus en 1/16 de pouce cette fois. Avec 2 chiffres au dénominateur, c'est aussi la fraction simplifiée qui est affichée.

J'avais proposé ces deux fonctions il y a quelques temps :
VB:
Option Explicit
Function MètresIm(ByVal Impé)
   Dim Pouces As Double, TSpl() As String
   If TypeOf Impé Is Range Then Impé = Impé.Value
   Select Case VarType(Impé)
      Case vbString
         TSpl = Split(Impé, "'")
         If UBound(TSpl) = 1 Then
            Pouces = 12 * Val(TSpl(0)): Impé = TSpl(1)
            End If
         TSpl = Split(Impé, """")...

Dranreb

XLDnaute Barbatruc
Bonsoir.
Je pense qu'en arrondissant au 1/16 ou 1/32 le plus proche ça ne devrait plus faire ça.
En F14 :
Code:
=ARRONDI(((H14*K14)+6)*16;0)/16
En F39 :
Code:
=ARRONDI(16*($B$5-$S$13-$S$15-$S$32)/3;0)/16
etc.
 

Dranreb

XLDnaute Barbatruc
Bonjour @JHA
Il me semble que le format personnalisé "0/#" affiche la fraction au minimum
Oui mais toujours en d'éventuels dénominateurs plus proches autre que 2, 4, 8 et de surcroit plus en 1/16 de pouce cette fois. Avec 2 chiffres au dénominateur, c'est aussi la fraction simplifiée qui est affichée.

J'avais proposé ces deux fonctions il y a quelques temps :
VB:
Option Explicit
Function MètresIm(ByVal Impé)
   Dim Pouces As Double, TSpl() As String
   If TypeOf Impé Is Range Then Impé = Impé.Value
   Select Case VarType(Impé)
      Case vbString
         TSpl = Split(Impé, "'")
         If UBound(TSpl) = 1 Then
            Pouces = 12 * Val(TSpl(0)): Impé = TSpl(1)
            End If
         TSpl = Split(Impé, """")
         If UBound(TSpl) = 1 Then
            TSpl = Split(TSpl(0))
            Pouces = Pouces + Val(TSpl(0))
            If UBound(TSpl) = 1 Then
               TSpl = Split(TSpl(1), "/")
               If UBound(TSpl) = 1 Then Pouces = Pouces + Val(TSpl(0)) / Val(TSpl(1))
               End If: End If
      Case vbDouble: Pouces = Impé
      Case Else: MètresIm = CVErr(xlErrValue): End Select
   MètresIm = 0.0254 * Pouces
   End Function
Function Impérial(ByVal m As Double) As String
   Dim Pouces As Double, Pieds As Integer, N&, D%, U$
   Pouces = Int(16 * m / 0.0254 + 0.5) / 16
   If Pouces >= 12 Then
      Pieds = Int(Pouces / 12)
      Impérial = Pieds & "'"
      Pouces = Pouces - 12 * Pieds
      End If
   If Pouces >= 1 Then
      Impérial = Impérial & Int(Pouces)
      Pouces = Pouces - Int(Pouces)
      U = """": End If
   If Pouces > 0 Then
      N = 16 * Pouces: D = 16
      While N Mod 2 = 0: N = N \ 2: D = D \ 2: Wend
      If Right$(Impérial, 1) > "'" Then Impérial = Impérial & " "
      Impérial = Impérial & N & "/" & D
      U = """": End If
   Impérial = Impérial & U
   End Function
 

dessin direct

XLDnaute Nouveau

Cette solution me semble intéressante pour intégrer dans mes fichiers source.
Je dois copier tout le code ? Merci
 

Discussions similaires

Réponses
6
Affichages
159
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…