Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

pieds et pouces

239 views
Skip to first unread message

FxM

unread,
Aug 9, 2003, 2:50:05 PM8/9/03
to
michel dugas wrote:

> je voudrais savoir comment pour lire les mesures pieds et
> pouce dans les cellules (exemple cellule a1 2' 3"
> cellule a2 3' 10" je voudrais pouvoir additionné ou
> soustraire donc cellule a3 6' 1". merci de prendre le
> temps de m'aider.

Bonsoir Michel,

Quelle idée, ce système impérial ;o))
Avec les valeurs telles que tu les a écrites, à savoir :
A1 2' 3"
A2 3' 10"

AltF11 pour l'éditeur VBA
Insertion | module
copie dans ce module les trois fonctions ci-dessous :

Function res(chaine, car1, car2)
posa = InStr(1, chaine, car1)
ft = Mid(chaine, 1, posa - 1)
posg = InStr(1, chaine, car2)
po = Mid(chaine, posa + 1, posg - posa - 1)
ft = CSng(Replace(Replace(Replace(ft, " ", ""), car2, ""), car1, ""))
po = CSng(Replace(Replace(Replace(po, " ", ""), car2, ""), car1, _
"")) / 12
res = ft + po
End Function

Function plus(inp1, inp2)
Application.Volatile
chaine = inp1: car1 = "'": car2 = Chr(34)
inp1 = res(chaine, car1, car2)
chaine = inp2: car1 = "'": car2 = Chr(34)
inp2 = res(chaine, car1, car2)
tot = (inp1 + inp2) * 12
plus = Int(tot / 12) & "' " & (tot Mod 12) & Chr(34)
End Function

Function moins(inp1, inp2)
Application.Volatile
chaine = inp1: car1 = "'": car2 = Chr(34)
inp1 = res(chaine, car1, car2)
chaine = inp2: car1 = "'": car2 = Chr(34)
inp2 = res(chaine, car1, car2)
If inp1 < inp2 Then moins = "Arghhh!!": Exit Function
tot = (inp1 - inp2) * 12
moins = Int(tot / 12) & "' " & (tot Mod 12) & Chr(34)
End Function


Usage :

Pour additionner : =plus(A1;A2)
Pour soustraire : =moins(A1;A2)

Non testé pour les autres écritures (s'il manque ' ou ").

@+
FxM

Nicolas B.

unread,
Aug 9, 2003, 4:07:00 PM8/9/03
to
Bonsoir Michel,

Je te conseille pour ce genre de problème de convertir tes données en
décimal dans une colonne, de faire tes calculs sur ces nombres décimaux puis
de convertir le résultat en pieds/pouces.

Voici la formule pour convertir en décimal (à placer en b1 et à copier en
b2) :
=SI(ESTERREUR(CHERCHE("'";A1));"";GAUCHE(A1;CHERCHE("'";A1)-1)+SI(ESTERREUR(
CHERCHE(CAR(34);A1));;GAUCHE(DROITE(A1;3);2)/12))
Si la cellule est vide, ou contient un nombre décimal, la formule ne renvoie
rien.
Si seuls des pieds sont indiqués (par ex : 2'), la formule convertit en
décimal (ex : 2).
Les pouces peuvent être écrits avec 1 ou 2 chiffres, mais lorsqu'il n'y a
qu'un chiffre, il faut obligatoirement l'espace entre l'apostrophe et les
pouces.

Mets en b3 la formule de l'opération que tu souhaite (addition ou
soustraction).
Convertit ce résultat avec cette formule :
=ENT(B3)&"' "&ARRONDI((B3-ENT(B3))*12;0)&CAR(34)

--
Nicolas B.

michel dugas a récemment écrit dans un message de news :

gee-dee-

unread,
Aug 9, 2003, 6:56:07 PM8/9/03
to
Bonsoir,
il serait possible de convertir en valeurs metriques
effectuer le calcul 
puis reconvertir en valeur  pieds/pouces
 
Pour cela il existe la fonction CONVERT(valeur;"unité origine";"unité finale")
Convertit un nombre d'une unité à une autre unité. Par exemple, la fonction CONVERT peut traduire un tableau de distances en milles en un tableau de distances exprimées en kilomètres.
Si cette fonction n'est pas disponible et renvoie l'erreur #NOM ?, installez et chargez la macro complémentaire Utilitaire d'analyse.

Mais pour cela il faudrait que les valeurs soient exprimées de façon compréhensible par excel

Dans le cas présent le plus simple :
exprimer les valeurs en pieds et douzième de pieds
et d'utiliser la format personalisé : #" "??/12
 
soit  en a1 : 2 3/12           (mettre un espace avant le nombre de pieds puis un espace avant la fraction)
en A2:  3 10/12                (mettre un espace avant le nombre de pieds puis un espace avant la fraction)
en a3 somme(a1:a2)            =====> résultat  6 1/12
 
Il serait possible également de creer une macro pour effectuer automatiquement la conversion 2' 3" en 2 3/12
dans ce cas les calculs restent standards !!!!!
 
@+
 
"michel dugas" <michel...@videotron.ca> a écrit dans le message de news:009c01c35e9d$c70cb100$a301...@phx.gbl...

AV

unread,
Aug 10, 2003, 3:48:57 AM8/10/03
to
Opérations sur les pieds/pouces...pour le fun...
Ex. de saisies acceptées : 2'3" / 02'03" / 5" / 04'.etc..
Espace ou pas entre pieds et pouces

Function PiedsPouces(Plg1, Plg2, Opér$) 'AV
x = Plg1.Address
y1 = Evaluate("substitute(substitute(substitute(" & x & ",""'"","".""),""
"",""""),"""""""","""")")
y2 = Evaluate("if(iserr(find("".""," & y1 & ")),0,find("".""," & y1 & "))")
y3 = Evaluate("if(isnumber(" & y2 & ")," & y1 & ",""0.""&" & y1 & ")")
y4 = Evaluate("int(" & y3 & ")*12")
y5 = Evaluate("(((" & y3 & "-int(" & y3 & "))>0.11)*(" & y3 & "-int(" & y3 &
"))*10)+(((" & y3 & "-int(" & y3 & "))<=0.11)*(" & y3 & "-int(" & y3 &
"))*100)")
val1 = y4 + y5
x2 = Plg2.Address
y1 = Evaluate("substitute(substitute(substitute(" & x2 & ",""'"","".""),""
"",""""),"""""""","""")")
y2 = Evaluate("if(iserr(find("".""," & y1 & ")),0,find("".""," & y1 & "))")
y3 = Evaluate("if(isnumber(" & y2 & ")," & y1 & ",""0.""&" & y1 & ")")
y4 = Evaluate("int(" & y3 & ")*12")
y5 = Evaluate("(((" & y3 & "-int(" & y3 & "))>0.11)*(" & y3 & "-int(" & y3 &
"))*10)+(((" & y3 & "-int(" & y3 & "))<=0.11)*(" & y3 & "-int(" & y3 &
"))*100)")
val2 = y4 + y5

calc = Evaluate(val1 & Opér & val2)
PiedsPouces = Evaluate("int(" & calc & "/12)&""' ""&mod(int(" & calc &
"),12)&""""""""")

End Function

PS : Toutes les lignes du code commençant par "nom de la variable" suivi de "="
... sont sur une seule ligne !!
AV

"michel dugas" <michel...@videotron.ca> a écrit dans le message news:

0 new messages