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
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
Bonjour @JHA

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

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
142

Statistiques des forums

Discussions
312 103
Messages
2 085 310
Membres
102 859
dernier inscrit
Diallokass