Autres Fonction Pied pouce en pied pouce métrique

Carolinebd

XLDnaute Nouveau
Bonjour,

Je cherche un moyen d'automatiser la conversion de mes données en pied-pouce pour les mettre en pied pouce métrique.
Mes données sont habituellement écrite de cette manière. 2'-6 1/4" ce qui équivaut à 2.525 pied (valeur que j'aimerais qui soit indiqué)
Habituellement, je fais le procédé manuellement en mettant mes éléments dans des colonnes distincte grâce à l'outil "text to columns" et j'applique ensuite une formule.
À noter que je dois aussi effacer tout les ' et " quand je fais ma correction manuellement.

J'aimerais cependant savoir si une méthode plus simple peux exister?

Je vous remercie
 

Pièces jointes

  • Book1.xlsx
    8.6 KB · Affichages: 4
Solution
Bonsoir.
J'ai ces fonction perso en VBA
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é...

Dranreb

XLDnaute Barbatruc
Bonsoir.
J'ai ces fonction perso en VBA
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
 

Carolinebd

XLDnaute Nouveau
Bonsoir.
J'ai ces fonction perso en VBA
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
@Dranreb
Merci beaucoup je vais l'étudier pour la comprendre et l'appliquer dans mon document.
C'est exactement ce que j'avais de besoin c'est très gentil.
 

Hecatonchire

XLDnaute Nouveau
C'est une simple formule Excel

EXCEL_0mRUtM2TBu.png
 

Discussions similaires

Statistiques des forums

Discussions
315 085
Messages
2 116 074
Membres
112 650
dernier inscrit
badi44