> 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
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 :
Mais pour cela il faudrait que les valeurs soient exprimées de façon compréhensible par excel
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: