Jump to content

AlexanderS

Moderators
  • Content Count

    1,356
  • Joined

  • Last visited

  • Days Won

    54
  • Country

    Costa Rica

Everything posted by AlexanderS

  1. Bueno eso si no me equivoco es un bug del control en si, por lo que sin importar el código vas a tener el mismo problema, tendrías que utilizar una instrucción diferente para cargar el control que no sea un .additem, puede ser con un .rowsourse o un .Column Saludos.
  2. @JuanP, es una lastima que no consideres mi primera propuesta, creo que no seria difícil de adaptar incluso es mas fácil que usar solo VBA, pero bueno te dejo una opción sin SQL. Comentas . Saludos a todos. Doble busqueda (1).xlsm
  3. Existe alguna razón por la que no utilizas una tabla dinámica? Saludos.
  4. Hola @andres palacios, puede probar el adjunto, utiliza el mismo código que un viejo aporte mio al foro. Saludos. Macro correo outlook1.xlsm
  5. ¿Que tal @JuanP? Te dejo una opción que utiliza SQL para la carga del campo Nombre y para realizar lo que quieres, he clonado tu formulario y lo modifique un poco. Te invito a estudiar el código SQL, que aunque lo que hice aquí es sencillo tiene mucho potencial al combinarlo con VBA. Saludos !! Doble busqueda.xlsm
  6. @Pedriro la formula seria la misma pero cambiando el "=" por "<>" que es como un "no igual a". Sin AT:=CALCULATE(sum(Tabla1[Cantidad vendida]),Tabla1[TT]<>"AT") Saludos
  7. Hola @Pedriro, lo correcto seria: Cantidad total_AT:=CALCULATE(SUM(Tabla1[Cantidad vendida]),Tabla1[TT]="AT") o Cantidad total_AT:=CALCULATE(SUM(Tabla1[Cantidad vendida]),FILTER(Tabla1,Tabla1[TT]="AT")) Comentas, saludos.
  8. Hola, el código debería ir así: Sub CopyPaste() Dim xRng As Range On Error Resume Next Set xRng = Application.InputBox("Selecciones el rango:", "MS Excel", , , , , , 8) If xRng Is Nothing Then Exit Sub xRng.SpecialCells(xlCellTypeBlanks).Select Range("A1").End(xlDown).Offset(1, 0) = "=R[-1]C" Columns("A:A").SpecialCells(xlCellTypeFormulas, 23).Copy ' Range("A1").End(xlDown).Copy ActiveSheet.Paste End Sub Saludos
  9. Hola @nickmartinez, dejo una forma de hacerlo. Comentas, saludos. ejemplo.xlsx
  10. Que tal @vulkatho, prueba el adjunto, solo click en la flecha azul. Saludos Ayuda.xlsm
  11. Hola, para mi código esta es la solución: Function CONCATENARCELDAS(rango As Variant) On Error GoTo er CONCATENARCELDAS = Join(Application.Transpose(Application.Transpose(rango)), ",") Exit Function er: CONCATENARCELDAS = Join(Application.Transpose(rango), ",") End Function Saludos
  12. Hola @manzano, puede probar asi: Function CONCATENARCELDAS(rango As Variant) CONCATENARCELDAS = Join(Application.Transpose(Application.Transpose(rango)), ",") End Function Comentas, saludos.
  13. Creo que deberia ir asi : Sheets("Hoja" & dia).Range("B" & filadia & ":O" & filadia).Copy Saludos
  14. @Sil, te recomendaria ver algunos tutoriales en youtube hay bastantes videos sobre la "Dinamización de Columnas" y la "Anulación de Dinamización de Columnas", aunque mi recomendación es usar fórmulas en DAX como en el primer ejemplo que te envie dadas sus ventajas a la hora de realizar cálculos. De igual manera todos los pasos que realice en excel desde el editor de Power Query los puedes replicar en Power BI dando el mismo resultado. Por el momento es lo único que se me ocurre para realizar lo que pides. Saludos.
  15. @Sil, integrarlo dentro de una columna es un poco más complicado, tendrias que dinamizar la columna KPI, luego crear una columna calculada con la división de Errores/Ingresos, después volver a dinamizar estas columnas en una sola. Además debes tomar en cuenta las limitaciones de las columnas calculadas en lenguaje "M" frente a DAX, ya que tendrás problemas si no realizas una agrupación antes pero esto te hará perder algunas variables de tu tabla. En el excel adjunto puedes ver el resultado en la tabla dinámica, y los pasos en el editor de Power Query. Saludos. autogestion2 (1).xlsx
  16. @Sil puedes utilizar la siguiente fórmula DAX para realizar el calculo que necesitas, esta funciona tanto en excel como en Power BI. = CALCULATE ( SUM ( Rango[Q] ), Rango[KPI] = "Errores", ALLEXCEPT ( Rango, Rango[ORIGEN] ) ) / CALCULATE ( SUM ( Rango[Q] ), Rango[KPI] = "Ingreso total", ALLEXCEPT ( Rango, Rango[ORIGEN] ) ) Comentas, saludos. autogestion2.xlsx
  17. @Sil, si pudieras adjuntar un excel de ejemplo para ver la estructura de tus datos sería más simple ayudarte. Saludos
  18. Hola @eoscar88, me tome la libertad de realizar unas modificaciones a tu código, el progreso sale en la esquina inferior izquierda de excel. Sub Copiar_Filas() Dim I#, J#, Y# J = 2 Y = 5000 For I = 2 To Y DoEvents Application.StatusBar = "Progreso = " & FormatPercent(I / Y, 0) With Sheets("Descarga03") If .Cells(I, "A").Value = "Verification" Then .Range(.Cells(I, "A"), .Cells(I, "DP")).Copy Sheets("Verifs").Cells(J, "A") J = J + 1 End If End With Next Application.StatusBar = False End Sub Comentas, saludos.
  19. Hola @hernanmrx, puede utilizar la siguiente fórmula en DAX, suponiendo que la tabla que contiene los datos se llama "Tabla1": = CALCULATE ( SUM ( Tabla1[Stock] ), ALLEXCEPT ( Tabla1, Tabla1[Orden de Venta] ) ) Saludos. Columna DAX.xlsx
  20. Hola @giordancisco, desde el editor de Power Query seleccionas una de las columnas con los saltos de líneas, click derecho en "Dividir columna -> por delimitador", en el cuadro debes expandir "opciones avanzadas" y seleccionar "Filas", debe quedar de esta forma: Aceptar y listo, debes realizar este paso en cada columna con saltos de línea. Saludos.
  21. A simple vista creo que el error esta en que abres 2 veces la conexión. La segunda te da el error ya que la conexión ya estaba abierta e intentas volver a abrirla. Saludos
  22. Hola @pepe1970, cuando programas dentro de un formulario se entiende que "Textbox33" es un control dentro de este formulario. Pero como en tu caso estás tratando de hacer una referencia a un "Textbox33" dentro de un módulo que está fuera del formulario, por lo que función "Query1" trata al "Textbox33" como una variable no declarada. Siempre es aconsejable que manejes las instrucciones que hacen referencia a controles de formulario dentro del mismo formulario, si aún así por alguna razón tienes que tenerlo en un módulo aparte debes colocar el nombre del formulario antes del nombre del control: Userfrom1.TextBox33 = "" Saludos
  23. @Juan Pelfort, si sientes que el tono usado por un usuario hacia ti fue inapropiado puedes reportar el mensaje para que los moderadores podamos revisar el caso. También puedes usar el mensajero personal del foro si necesitas comunicarte con alguien, claro siempre manteniendo el respeto. Saludos.
  24. @pepe1970 es muy difícil poder darte una respuesta adecuada con tan poca información, por lo que voy a tratar de explicarte de forma general como son los pasos a seguir para conectar excel a un SQL Server y traer datos a un textbox en un formulario. Lo primero que debemos hacer es conectarnos al servidor SQL, para esto debemos abrir la coneccion mediante el siguiente código: *Debes copiar el código entero dentro de un módulo Public miConexion As New ADODB.Connection Public rs As New ADODB.Recordset Sub Conecta() Dim ConnectionString As String, BD As String On Error GoTo salir BD = "NOMBRE DE LA BASE DE DATOS" '<<<<<<<< Coloca el nombre de la base de datos de SQL 'En "Data Source=" debe ir la dirección IP del servidor SQL ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=" & BD & ";Data Source=10.10.0.130" If miConexion.State = 1 Then miConexion.Close Set cnn = New ADODB.Connection miConexion.Open ConnectionString miConexion.CommandTimeout = 900 Exit Sub salir: MsgBox err.Description & vbCrLf & vbCrLf & "Imposible conectar con la Base de Datos" & vbCrLf & _ "Detalles de la conexón:" & vbCrLf & ConnectionString, vbExclamation, "Error de Conexión" End Sub Debes modificar el nombre de la base de datos "BD" , la ruta de tu base "Data Source" e ingresar el Usuario y contraseña para conectarse a la BD Con esto abres una conección al servidor SQL, ahora imaginando que tienes un formulario creado con 2 textbox, siendo el textbox1 el que utilizaras para buscar y el textbox2 donde obtendras el resultado, podemos utilizar el siguiente ejemplo: *En mi ejemplo usare una hipotética tabla llamada "Clientes" donde tendré un campo numérico llamado "DNI" con los DNI de los clientes y otro llamado "Nombre" con los nombres de los clientes. Private Sub CommandButton1_Click() Dim SQL As String Call Conecta '<<<< Abrimos la conección al SQL Set rs = New ADODB.Recordset SQL = "SELECT [Nombre] FROM Clientes where [DNI] = " & CDbl(TextBox1) '<<< Cadena SQL rs.Open SQL, miConexion, 3, 3, adCmdText '<<<< Se realiza la consulta al servidor SQL If rs.EOF = False Then '<<< Comprobamos que la consulta nos traiga resultados Me.TextBox2 = rs.Fields("Nombre") '<<< Pasamos los resultados al Textbox End If End Sub Como verás necesitarás al menos un mínimo conocimiento de las cadenas de consulta en SQL, por lo que te recomiendo buscar sobre el tema. Esto es un muy resumido ejemplo de como realizar la conexión al SQL y realizar una pequeña consulta, espero al menos te de una idea de lo que debes buscar de ahora en adelante. Saludos.
  25. Hola @pepe1970, debes ser mas especifico con tu consulta, adjuntar con archivo de ejemplo con el progreso que tengas e indicar de una forma más exacta donde está el problema. Saludos.
×
×
  • Create New...

Important Information

Privacy Policy