Software gratuito para comparar ofertas de empresas de construcción

baisary

Novel
Buenos días, compañeros.

Busco un software gratuito que me ayude a hacer una tarea especifica.

La tarea es la siguiente:
Una vez lanzo al mercado las necesidades de mi proyecto de obra civil o estructura metálica, etc., empiezo a recibir varias ofertas de las respectivas empresas de construcción. Busco un programa en el que pueda ir añadiendo cada oferta que voy recibiendo y así poder compararlas. Lo ideal sería si el programa también me muestra las mejores ofertas por precio unitario o total, si las puedo ir organizando según diferentes criterios. Y si ofrece otras funcionalidades tales como el cálculo de diferencias de precios, etc.

Si alguien sabe de algún programa gratuito que pueda realizar esta tarea me haría un gran favor.

Gracias de antemano y buena suerte.
 
Una simple hoja de cálculo (en local o en la nube) te puede ayudar:
- Columna A: código de partida.
- Columna B: texto de partida.
- Columna C: medición.
- Columna D: precio unitario empresa A.
- Columna E: precio unitario empresa B.
...

Con ayuda del formato condicional puedes hacer que se resalten los unitarios más altos/bajos, por encima de media...

En Internet hay bastantes plantillas disponibles, como:
https://www.ama-arquitectura.es/comparar-presupuestos-constructoras/
http://eljefeapiedeobra.blogspot.com.es/p/comparativos.html
https://www.planillaexcel.com/comparacion-de-precios-en-excel

Es un proceso algo manual (la introducción de datos), pero te aseguras que comparas peras con peras y manzanas con manzanas, es decir, partidas iguales.

Saludos.
 

baisary

Novel
Esa es la manera que uso actualmente, y a medida que aumentan los proyectos y las diferentes ofertas, las hojas de cálculo se hacen cada vez más gordas y el proceso de introducción de datos se vuelve cada vez más tedioso. CYPEPROJECT dispone de un apartado que realiza lo que pido. Pero el programa es demasiado grande y bastante caro, no vale la pena si voy a usar solo una función. Buscaba una alternativa.

Por ahora iré probando las plantillas que me has pasado, a menos que alguien ofrezca una solución mejor.

Gracias @javiersmp.
 

ADAM

Diamante
llas hojas de cálculo se hacen cada vez más gordas y el proceso de introducción de datos se vuelve cada vez más tedioso
De introducir los datos no te vas a libras con ningún software.
Supongo que tu problema con Excel es que los quieres tener ordenados y te toca andar insertando filas cada vez que metes datos nuevos, pero eso lo puedes solventar con dos hojas dentro del mismo libro, una para meter datos y otra que te los ordene.
 
Puedes bajarte la versión personal de DataFlex
Creo que no tiene nada que ver este programa con lo que se está respondiendo en este tema.
DataFlex es una base de datos relacional con su propio lenguaje de programación para realizar aplicaciones a medida y no tiene nada que permita realizar un comparativo de ofertas mejor que una simple hoja de cálculo.

Para hacer un comparativo de ofertas y seleccionar la mejor oferta presentada, no hay nada mejor que una hoja de cálculo, porque hay que interpretar las ofertas presentadas y sus variantes y particularidades, porque no todos los proveedores contestan al pie de la letra el presupuesto enviado y, además, que a veces se añaden partidas no contempladas en presupuesto o un desglose pormenorizado de otras por no estar lo suficientemente definidas, etc. Realizar eso dentro de un ERP de la empresa constructora o dentro de una programa de gestión de obras es farragoso y complicado, en cambio, con la hoja de cálculo es mucho menos engorrosa la introducción de datos.
Evidentemente, hay que partir de una versión del presupuesto dentro de una hoja de cálculo e ir añadiendo las columnas para las ofertas de los diferentes proveedores y subcontratas.
Yo lo llevo haciendo así desde hace años y no he encontrado mejor sistema.
 

davidn

Diamante
Efectivamente, @Aitor Solozabal Merino, conozco tus hojas de cálculo y reconozco que están muy conseguidas.

Y cierto que DataFlex es una base de datos relacional, pero es relativamente muy fácil diseñar ese tipo de tablas y, una vez realizada la entrada de datos, generar todos los informes que necesites. para novatos, el "Wizard" funciona muy bien, pero, evidentemente, son necesarios unos conocimientos básicos de programación, y si ya tienes experiencia en C, mejor. Mi caso es el contrario al tuyo, cuando necesito algo lo programo en DataFlex y las hojas de cálculo las dejo para cálculos muy puntuales.

No es una competencia con las hojas de cálculo, es un tema diferente.

Tambien se puede generar la entrada de datos en Excel o VDF y generar informes en Crystal Reports, pero claro, ya no es gratuito.
 
He de decirte que del año 1984 a 1989 fui programador de DataFlex cuando todavía no era un lenguaje orientado a objetos, porque en aquella época era de lo poco que había realmente multiusuario en redes locales sobre MS-DOS y era muy fácil de programar, ya que con una pantalla de captura de datos realizada con un editor de textos (en aquella época no había pantallas gráficas ni ratones) se generaba toda una gestión con creación, modificación y borrado de registros de una base de datos, una herramienta impresionante en aquellos momentos y realizamos múltiples aplicaciones de gestión contable y comercial a medida (y algunas todavía están corriendo hoy en día, "30 años después", en consola MS-DOS bajo Windows a una velocidad de vértigo).
 

davidn

Diamante
Ya recuerdo, el famoso "reread" para evitar la corrupción de datos en trabajos en red.
Empecé un pelín más tarde, también DOS. La orientación a objetos fue a partir de la V.3. Aunque es a partir de la V.10, con la creación de ejecutables que te librabas del runtime y permite crear aplicaciones web y para móvil cuando ha pegado un salto cualitativo de verdad.

Evidentemente, toda la gestión del estudio la tengo en VDF, cualquier día me animo a ordenarlo y cuelgo la aplicación en Internet.
 
Aunque un poco tarde, pongo a disposición una hoja de calculo ejemplo de un comparativo para resaltar los precios mejor y peor de las ofertas recibidas.



La macro que realiza la labor de resaltar los precios es la siguiente:

Código:
Option Explicit
Sub ConditionalFormatMinMaxValuesInARow(Optional r As Variant)
          ' ----------------------------------------------------------------
          ' Procedure : ConditionalFormatMinMaxValuesInARow
          ' Purpose   : Setup the conditional formating of the selected cells (from column/row to column/row) with the formulas to Max and Minimum values in a row
          ' Parameter : optional R (Variant) is the Range of the selected cells by code (type range or type string)
          '             the default value if it is missing or not is valid is the user selection
          ' usage     : A) ConditionalFormatMinMaxValuesInARow("G5:O22") from a VBA code script
          '             or
          '             B)If a range of cells is selected previously by user then execute this macro
          ' Author    : Aitor Solozabal Merino - email:aitorsolozabal@gmail.com
          ' Date      : 10/10/2017
          ' ----------------------------------------------------------------

10        On Error GoTo ConditionalFormatMinMaxValuesInARow_Error
          Dim Rango As Range
          'check if an argument has been sent
20        If Not IsMissing(r) Then
              'there is an argument sent
              'check type of the argument
30            If TypeOf r Is Range Then
                  'It's a range
40                Set Rango = r
50            Else
                  'It's not a range
60                If TypeName(r) = "String" Then
                      'It's a string
70                    If Len(r) > 4 Then
                          'is not empty and has 5 characters as minimum (A1:B1)
                          'then choose string with the address specified as an argument
80                        Set Rango = Range(r)
90                    Else
                          'it is empty or not valid then choose user selection
100                       Set Rango = Range(Selection.Address)
110                   End If
120               Else
                      'the argument is diferent from a string and from a range and/or is not valid
                      'it is like empty and then choose user selection
130                   Set Rango = Range(Selection.Address)
140               End If
150           End If
160       Else
              'it is missing the argument then choose user selection
170           Set Rango = Range(Selection.Address)
180       End If
190       If IsValidAddress(Rango.Address) Then
200           Rango.Select
210           With Selection
                  'Delete any previous conditional formatting
220               .FormatConditions.Delete
                  '============================================ MAX VALUE
                  'add conditional formatting MAX to selected cells
230               .FormatConditions.Add Type:=xlExpression, Formula1:="=" _
                      & Selection.Cells(1).Address(False, False) _
                      & "=MAX(" & Rango.Rows(1).Address(False, True) & ")"
                  'Assigning red color for the conditional formatting MAX
240               .FormatConditions(1).Interior.ColorIndex = 3
250               .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
260               .FormatConditions(1).StopIfTrue = False
                  '============================================ MIN VALUE
                  'add conditional formatting MIN to selected cells
270               .FormatConditions.Add Type:=xlExpression, Formula1:="=" _
                      & Selection.Cells(1).Address(False, False) _
                      & "=MIN(" & Rango.Rows(1).Address(False, True) & ")"
                  'Assigning green color for the conditional formatting MIN
280               .FormatConditions(2).Interior.ColorIndex = 4
290               .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
300               .FormatConditions(2).StopIfTrue = False
310           End With
320       Else
330           MsgBox Rango.Address & " IT IS NOT A VALID RANGE"
340       End If
350       Range("A1").Select
360       On Error GoTo 0
370       Exit Sub
ConditionalFormatMinMaxValuesInARow_Error:
380       MsgBox "Error " & Err.Number & " (" & Err.Description & ") in Sub ConditionalFormatMinMaxValuesInARow, line " & Erl & "."
End Sub
Function IsValidAddress(strAddress As String) As Boolean
          ' ----------------------------------------------------------------
          ' Procedure : IsValidAddress
          ' Purpose   : Check if a range of cells specified by code is a valid excel spreadsheet range
          ' Parameter : A string with the range example: "G5:O22"
          ' Author    : Aitor Solozabal Merino - email:aitorsolozabal@gmail.com
          ' Date      : 10/10/2017
          ' ----------------------------------------------------------------
10        On Error GoTo IsValidAddress_Error
          Dim r As Range
20        Set r = Worksheets(1).Range(strAddress)
30        If Not r Is Nothing Then IsValidAddress = True
40        On Error GoTo 0
50        Exit Function
IsValidAddress_Error:
60        MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure IsValidAddress, line " & Erl & "."
End Function
Introducir este código en el editor de Visual Basic de vuestra hoja de cálculo.
 
Arriba