XL 2019 Affichage mesure impérial Ft/In

C-B

XLDnaute Nouveau
Bonjour,

J'ai un problème d'afficher avec les unité de mesure impérial. Mon logiciel de dessin me permet d'exporter la quantité et les dimension de mes composantes...

EM10156Latte2 1/2"3/4"10'0"
#VALEUR!​
EM10114Latte2 1/2"3/4"3'11 5/16"
EM10180Latte2 1/2"3/4"7'10 3/4"
EM10214Latte2 1/2"3/4"4'1"
ME30156Latte2 1/2"3/4"10'0"
ME30114Latte2 1/2"3/4"3'11 5/16"
ME30180Latte2 1/2"3/4"8'11"
ME30214Latte2 1/2"3/4"4'1"
ME40156Latte2 1/2"3/4"10'0"
ME40114Latte2 1/2"3/4"3'11 5/16"
ME40180Latte2 1/2"3/4"8'3/4"
ME40214Latte2 1/2"3/4"4'1"
Total pi/Li

Mais j'aimerais pouvoir avoir 56 lattes x 10'0" = 560'0"... ou quelques chose d'équivalent...

Que dois-je faire???

Merci
 

Laurent78

XLDnaute Occasionnel
Bonjour,
Plusieurs petites questions :
2 1/2" correspond à quoi ?
56, c'est bien une quantité ?
à quoi correspond le total pi/Li ?
Je suppose qu'il s'agit d'un fichier texte à importer dans Excel
Avez-vous essayé en changeant les paramètres régionaux du PC ?
Cdlt
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Passez peut être par le mètre en utilisant ces fonctions personnalisées à mettre dans un module standard VBA :
VB:
Option Explicit
Function MètresImpérial(ByVal Txt As String) As Double
   Dim Pouces As Double, TSpl() As String
   TSpl = Split(Txt, "'")
   If UBound(TSpl) = 1 Then
      Pouces = 12 * Val(TSpl(0)): Txt = TSpl(1)
      End If
   TSpl = Split(Txt, """")
   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
   MètresImpérial = 0.0254 * Pouces
   End Function
Function ImpérialMètres(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érialMètres = Pieds & "'"
      Pouces = Pouces - 12 * Pieds
      End If
   If Pouces >= 1 Then
      ImpérialMètres = ImpérialMètres & 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érialMètres, 1) > "'" Then ImpérialMètres = ImpérialMètres & " "
      ImpérialMètres = ImpérialMètres & N & "/" & D
      U = """": End If
   ImpérialMètres = ImpérialMètres & U
   End Function
=ImpérialMètres(MètresImpérial("10'0""")*56) affiche "560'"
 
Dernière édition:

Laurent78

XLDnaute Occasionnel
et également à regarder (pour ceux qui passeraient par là) la fonction Excel CONVERT et le fils :
qui peuvent aussi donner des idées.
 

C-B

XLDnaute Nouveau
Bonjour,
Plusieurs petites questions :
2 1/2" correspond à quoi ?
56, c'est bien une quantité ?
à quoi correspond le total pi/Li ?
Je suppose qu'il s'agit d'un fichier texte à importer dans Excel
Avez-vous essayé en changeant les paramètres régionaux du PC ?
Cdlt
Merci Laurent78 d'avoir prix du temp pour me répondre. Donc vos réponses:
2 1/2" correspond à la largeur de la pièce de bois et 3/4" son épaisseur. Ses 2 variables me serve seulement à identifier le type de produit.
56 est la quantité de pièces de cette longueur
Pi/Li = Pied linaire, donc la longueur bout à bout

En résumé ma première ligne me dit que j'ai 56 latte de 2.5po x 0.75po de 10pi de long chacune. J'ai donc besoin 560Pi/Li

Merci
 

C-B

XLDnaute Nouveau
Bonjour à tous,

un début de piste pour les "pieds"
VB:
=(STXT(G3;1;CHERCHE("'";G3)-1)*C3)&"'"

JHA
Bonjour JHA,

Ceci fonction pour multiplier les pieds, mais ceci ne me permet de multiplier les pouces...
1614778426107.png

14 lattes 3'-11 5/16" devrait donner 55'-2 3/8" et non pas 42' comme indiquer ci-haut...

De plus, comment faire le total?

Merci pour votre temp:)
 

C-B

XLDnaute Nouveau
Bonsoir.
Passez peut être par le mètre en utilisant ces fonctions personnalisées à mettre dans un module standard VBA :
VB:
Option Explicit
Function MètresImpérial(ByVal Txt As String) As Double
   Dim Pouces As Double, TSpl() As String
   TSpl = Split(Txt, "'")
   If UBound(TSpl) = 1 Then
      Pouces = 12 * Val(TSpl(0)): Txt = TSpl(1)
      End If
   TSpl = Split(Txt, """")
   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
   MètresImpérial = 0.0254 * Pouces
   End Function
Function ImpérialMètres(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érialMètres = Pieds & "'"
      Pouces = Pouces - 12 * Pieds
      End If
   If Pouces >= 1 Then
      ImpérialMètres = ImpérialMètres & 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érialMètres, 1) > "'" Then ImpérialMètres = ImpérialMètres & " "
      ImpérialMètres = ImpérialMètres & N & "/" & D
      U = """": End If
   ImpérialMètres = ImpérialMètres & U
   End Function
=ImpérialMètres(MètresImpérial("10'0""")*56) affiche "560'"
Merci Dranreb,

Vous avez surement passer du temp pour votre explication, mais je ne suis pas sur de comprendre ce que je doit faire... Mais je vais faire quelques teste

Encore merci
 

Laurent78

XLDnaute Occasionnel
Bonjour,
Ci-joint un fichier Excel en utilisant les fonctions personnalisées fournies par Dranreb (J'ai modifié leurs noms, je les comprenais à l'envers ;))

Le dernier soucis, c'est le Total, que souhaitez vous ?
 

Pièces jointes

  • Imperiales.xlsm
    17.1 KB · Affichages: 8

Discussions similaires

Réponses
2
Affichages
511

Statistiques des forums

Discussions
312 103
Messages
2 085 317
Membres
102 862
dernier inscrit
Emma35400