DenisHen Posté(e) le 13 juin 2006 Posté(e) le 13 juin 2006 Re bonsoir à tous.... Voilà, j'ai fais une routine en VBA qui transforme une superficie (exprimée en mètre carré) en une contenance cadastrale (exprimée en hectare ares centiares) Je vous donnes quelques exemples de convertion... ( les 0 sont très importants...) 1m² = 0a 01ca10m² = 0a 10ca101m² = 1a 01ca110m² = 1a 10ca123456m² = 12ha 34a 56ca123456789m² = 12 345ha 67a 89ca Voilà, j'avais écris une routine en VBA mais je n'ai jamais eu l'occasion de la tester, Mais elle devait ressembler à ça (mais je n'en suis pas sûr...C'est de tête...) : Public Sub Surf2Aire() Dim Ha, A, Ca As String Aire = "": Ca = "": A = "": Ha = "": Texte = "" If Right(VarCherche, 2) = "m²" Then VarCherche = Left(VarCherche, Len(VarCherche) - 2) 'Isole les Centiares If Len(VarCherche) > 1 Then Ca = Right(VarCherche, 2) If Len(VarCherche) = 1 Then Ca = VarCherche: VarCherche = "" If Len(VarCherche) > 2 Then VarCherche = Left(VarCherche, Len(VarCherche) - 2) 'Isole les Ares If Len(VarCherche) > 1 Then A = Right(VarCherche, 2) If Len(VarCherche) = 1 Then A = VarCherche: VarCherche = "" If Len(VarCherche) > 2 Then VarCherche = Left(VarCherche, Len(VarCherche) - 2) 'Isole les Hectares If Len(VarCherche) > 0 Then Ha = VarCherche 'Aire = Ha & " ha " & A & " a " & Ca & " ca" If Ha <> "" Then Aire = Ha & " ha " If A <> "" Then Aire = Aire & A & " a " Else Aire = "0 a " If Len(Ca) = 1 Then Ca = "0" & Ca If Ca <> "" Then Aire = Aire & Ca & " ca" Texte = Aire End Sub Bon.... Qui veut répondre est le bienvenu... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 14 juin 2006 Posté(e) le 14 juin 2006 Salut, Un exemle avec substr, l'argument peut être une chaine de caractère du type :"123456 m2" ou "123456m2" ou "123456"ou un nombre (les décimales des réels sont tronquées (fix))123456 ou 123456.25 (defun surf2aire (surf / len) ;; si l'argument est un nombre, il est transformé en chaine (if (numberp surf) (setq surf (itoa (fix surf))) ) ;; suppression des caractères " m2" à la fin de la chaine (setq surf (vl-string-right-trim " m2" surf)) ;; longueur de la chaine (setq len (strlen surf)) ;; nouvelle chaine en fonction de la longueur (cond (( (strcat (substr surf 1 (- len 4)) "ha " (substr surf (- len 3) 2) "a " (substr surf (- len 1) 2) "ca " ) ) (( (strcat (substr surf 1 (- len 2)) "a " (substr surf (- len 1) 2) "ca " ) ) (( (strcat "0a " surf "ca ") ) (T (strcat "0a 0" surf "ca ")) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 14 juin 2006 Posté(e) le 14 juin 2006 Je pense qu'on pourrait aussi s'aider de la fonction (cvunit), voir le fichier AutoCAD.UNT pour les conversion possible. Vite fait pour l'exemple, certainement à creuser: ((lambda ( / ) (setq l_s '(1 10 101 110 123456 123456789)) (foreach n l_s (print (strcat (itoa n) " m2= " (rtos (cvunit n "centare" "centare")) " ca")) (print (strcat (itoa n) " m2= " (rtos (cvunit n "centare" "are")) " a")) (print (strcat (itoa n) " m2= " (rtos (cvunit n "centare" "hectare")) " ha")) ) (prin1))) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant