Jump to content

ikanni

Members
  • Content Count

    254
  • Joined

  • Last visited

  • Days Won

    8

About ikanni

  • Rank
    Advanced Member

Profile information

  • Gender Array
  • Localización: Array

Converted

  • Campos Array

Recent Profile Visitors

1,095 profile views
  1. Hola Prueba esta macro, a ver sí es lo que buscas.. Colócala en un módulo indepediente y la llamas desde donde necesites Sub ActualizaExistencias() Dim c As Range, Registros As Object Dim celda, x As Long On Error Resume Next Set Registros = CreateObject("Scripting.Dictionary") Set c = Hoja3.Range("B3:B" & Hoja1.Range("B" & Rows.Count).End(xlUp).Row) For Each celda In c With celda If Len(celda.Offset(, 5)) <> 0 Then Registros.Add .Text & .Offset(, 1).Text & .Offset(, 2).Text, .Offset(, 6).Text End If End With Next Set c = Hoja1.Range("B3:B" & Hoja1.Range("B" & Rows.Count).End(xlUp).Row) For Each celda In c With celda If Registros.Exists(.Text & .Offset(, 1).Text & .Offset(, 2).Text) Then _ .Offset(, 4) = Registros(.Text & .Offset(, 1).Text & .Offset(, 2).Text) End With Next Set Registros = Nothing MsgBox "Existencias actualizadas" End Sub
  2. Hola girdascino, encantado que te sirva. Cualquier otra duda o consultapor aqui me encontraras. Saludos
  3. Hola Giordancisco, Yo estoy hablando de peras, pero me da la sensación que tu estas hablando de manzanas.😑 Te dejo la BBDD que colgaste con las consultas hechas. Y de paso te he hecho un formulario para visualizarlo. A ver sí es eso lo que buscas.... y te olvidas de Excel 😀 Enlace: https://1drv.ms/u/s!AlIYhsQ9-og1gSLHl3EIhRQl2_yU?e=nt6FjQ Si quieres seguir viendo los datos en un listbox desde excel, con que llames a la consulta que la llamo Stock con tu conexión para rellenar el ListBox, te saldran los datos Ya comentas
  4. y esto que es ??? rs.Open AuxiliarE, Conexion En tu primer msg del hilo decias esto: Desde excel envío los registros de salida de productos a una tabla de access que se llama "Salidas" la cual tiene los siguientes campos Si estas enviando los datos a una tabla de access, ¿para que haces una conexión ????? La tabla la tendrás en local y no te hace falta conectarte a nada. Si lo que quieres es ver los datos como tabla, Crea las consultas que te he puesto arriba y guardalas. Solo tienes que ejecutar la tercera para ver los datos, la tercera se apoya en las otras dos. Y cuando vuelvas a actualizar nuevos registros con ejecutar la tercera consulta tendrás los datos sin hacer nada mas. Si lo quieres hacer con formulario, tambien tienes que crear las dos auxiliares y guardarlas. Y para llenar el Form: Me.RecordSOurce="SELECT AuxliarE.Cod, Nz([Q],0) AS QtyE, Nz([Qs],0) AS QtyS, [PUE]*[Qtye] AS IpC, AuxliarE.PrecioUnitario AS PUE, Nz([PUS]*[QtyS],0) AS IpS, AuxliarS.PrecioUnitario AS PUS, [QtyE]-[QtyS] AS Stock, [Stock]*[pue] AS [Valor Sotck] FROM AuxliarE LEFT JOIN AuxliarS ON AuxliarE.Cod = AuxliarS.Cod;"
  5. Hola, Vamos a ver que no lo hice bien, estaba enpanado. Lo que quieres hacer no se me ocurre mas que hacerlo con tres consultas. Crea una consulta y llamala: AuxiliarE SELECT Entradas.Cod, Entradas.Descripción, Entradas.PrecioUnitario, Sum(Entradas.Cantidad) AS Q, Sum(Entradas.SubTotal) AS T FROM Entradas GROUP BY Entradas.Cod, Entradas.Descripción, Entradas.PrecioUnitario; Crea otra consulta y llamala: AuxiliarS SELECT salidas.Cod, salidas.PrecioUnitario, Sum(Nz([Cantidad],0)) AS Qs, Sum(Nz([SubTotal],0)) AS Ts FROM salidas GROUP BY salidas.Cod, salidas.PrecioUnitario; Y la tercera que será la que te de los datos que tu buscas. Como cuesta lo mismo tambien te dará los importes totales de entrada y salida, para que te hagas una idea... Crea consulta Stocks SELECT AuxliarE.Cod, Nz([Q],0) AS QtyE, Nz([Qs],0) AS QtyS, [PUE]*[Qtye] AS IpC, AuxliarE.PrecioUnitario AS PUE, Nz([PUS]*[QtyS],0) AS IpS, AuxliarS.PrecioUnitario AS PUS, [QtyE]-[QtyS] AS Stock FROM AuxliarE LEFT JOIN AuxliarS ON AuxliarE.Cod = AuxliarS.Cod; Ya comentas...
  6. Mejor así: SELECT Entradas.Cod, Entradas.Cantidad, salidas.Cantidad, [entradas].[cantidad]-[salidas].[cantidad] AS Stock FROM Entradas LEFT JOIN salidas ON Entradas.Cod = salidas.Cod;
  7. Hola En un principio no es complicado hacer eso pero a Word hay que decirle el numero que va. ¿Donde sabes que numero de carta le toca? Saludos
  8. Hola Crea una consulta nueva ponla en modo visual SQL y lo que haya lo cambias por esto SELECT Entradas.Cod, Entradas.Cantidad, salidas.Cantidad, [entradas].[cantidad]-[salidas].[cantidad] AS Stock FROM Entradas INNER JOIN salidas ON Entradas.Cod = salidas.Cod; comenta Saludos
  9. Vamos a ver. Yo lo entiendo así: Set variable_objeto = {[New] expresión_objeto | Nothing} Set en una instrucción que lo que hace es asignar una referencia de un objeto a una variable. No se crea ninguna copia del objeto en esa variable, se crea una referencia al objeto --------------------------------------------------------- ej: Dim Hoja As Objet Set Hoja = Sheets(“Hoja1”) - en este caso da igual que la vacies si esta declarada a nivel de procedimiento.En cuanto sale del procedimiento desaparece 🤨 - en el caso de que la declares a nivel de módulo, entonces tu sabrás. ---------------------------------------------------------- Pero si usamos la parte New, entonces lo que estamos haciendo es crear una instancia de un objeto/libreria en concreto. ---------------------------------------------------------- ej: Set Hoja = New Excel - Aquí mi consejo es que cada vez que la uses para lo que sea, despues de usarla hay que cerrarla. No sé porque exactamente pero todo el mundo lo cierra. Así que por mi parte siempre lo cierro 😉 - SI la usas a nivel de modulo , entonces con repetir Set Hoja = New Excel, vacias ---------------------------------------------------------------------- A esta hora no se me ocurre nada más. Espero te sirva
  10. Hola Vamos a ver, lo que hace es una tonteria pero esta muy enrrebesado porque tus datos están muy enrebesados. Mi consejo, lo primero, es que introduzca los datos a la hoja con mas orden y concierto eso te lo facitará en un futuro. Segundo, lo que yo hago cuando no entiendo un código es poner puntos de interrepción, uso los debug.print, la ventana de inspección y locales para saber que valores cojen las variables e intento seguirlo hasta entenderlo. Ahí tienes tarea para este fin de semana😀 Si hay algo puntual que no entiendes, en algún momento, vuelve a preguntar la cosa puntual y concreta que seguro que hay unos cuantos en este foro que te dan las mejores soluciones. Un saludo cordial
  11. Hola a tod@s, La verdad Romeo, mira que nos lo poneis dificil. Tienes una hoja de datos mal estructurada, con casillas vacias (sin saber si pueden estar vacias o es un error y casillas con N/A), con errores de introduccion de datos (ej: HIni : 20.00, con punto) así es imposible ayudar , datos sin formatear, infomación incompleta y no clara, en fin un desastre. Interpretando lo que has escrito y deduciendo lo que falta de información te lo he hecho a mi gusto. Me a costado hacerlo no por su dificultad sino por su laboriosidad. Igual no te vale para nada pero es lo que yo he deducido e interpretado y me apetecía hacerlo. Lo que hago es presentarlo en un formulario congiendo como filtro el Op y la fecha, y que te muestre segun te entendi (hIni la menor, Hfin la mayor, etc...). Si en algo me equivocado lo puedes modificar a tu gusto... autollamado_IK.xlsm
  12. Hola, Sacado de la ayuda de MsOffice... Se produce un desbordamiento cuando se intenta crear una asignación que excede los límites del destino de la asignación. - El resultado de una asignación, cálculo o conversión de tipo de datos es demasiado grande como para que se pueda representar dentro del rango de valores permitidos para ese tipo de variable. Ejemplo : Dim x As Long x = 2000 * 365 ' Error: Overflow solución x= CLng(2000) * 365 Con la información que das no es posible darte mas ayuda. Espero te sirva
  13. Aiva!!!! tienes razon Gonza. pues aquí lo tienes. Nada había que hacerle un pequeño arreglo, lo siento se me paso. Prueba_Conca_Ik.xlsm
  14. Hola A mi me sale esto Function ArreglaCAdena(ByVal cadena As String) As String Dim dSep As String dSep = Mid(cadena, 3, 1) With CreateObject("vbscript.regexp"): .Pattern = "[0-9]+" If .Test(cadena) Then With .Execute(cadena) ArreglaCAdena = dSep & CInt(.Item(0)) End With End If End With End Function
×
×
  • Create New...

Important Information

Privacy Policy

Ayuda Excel - Madrid, Madrid, ES - Valorada por 5112 personas - Aprender Excel - Total: 4.7 / 5