Jump to content

ikanni

Members
  • Content Count

    270
  • Joined

  • Last visited

  • Days Won

    8

ikanni last won the day on April 21 2017

ikanni had the most liked content!

About ikanni

  • Rank
    Advanced Member

Profile information

  • Localización:
    Tafalla

Converted

  • Campos
    ;

Recent Profile Visitors

1,252 profile views
  1. Vaya TitoFart, no has entendido nada y además estás muy perdido, mi consejo es que busques algún tutorial básico de access y te lo curres un poco... Sí me cuelgas una BBDD con unos pocos registros (no menos de 100, para afinar mejor) y con un poco de tiempo te preparo los cimientos...
  2. Hola, Vamos a ver, Con el campo fecha puesdes obtener los campos : Dia, Dia_del_Mes para que guardarlos en la tabla? con el Campo id_turno puedes obtener los campos: Inicio_Turno, Term_Turno para que guardarlos en la tabla? Con tipo de dia, por el registro que pusistes en el ejemplo me da la sensación que se podria indexar tipo :Laboral, festivo , .... Bueno es una idea, no tengo todos los datos para dar una opinión más exacta.
  3. Hola, Le he echado un vistazo y ese modelo relacional se puede mejorar, con todos los repetos. No tengo tiempo para poder echarte una mano el lo que pides pero si te voy a poner como haría yo el modelo relaccional y la estructura de las tablas para lo que necesitas. Repites muchos campos en la tablas y eso cuesta espacio y tiempo, entre otras cosas. Quito campos repetidos en la tabla de Registros. He creado una tabla nueva TipoDia. Los campos indice, mi consejo es que sean siempre numerico tipo Long. Saludos
  4. Ah! , tambien colocaria application.ScreenUpdating =False, con tantas filas ayudaria a excel.
  5. Hola Luis, Pues la verdad no sé que puede ser. 300k filas, la verdad se me escapa, nunca he tratado con tantos registros con excel. Pero en teoría no debería ser ningún problema. ¡Has probado con 100 filas? ?Pasa lo mismo?. Acabo de probar con la excel que colgaste y funciona. Y no le debería costar mucho hacer las 300k filas.
  6. Hola Te dejo una opción con diccionario. En la columna G de la hoja 1 elijes la columna, en una celda desplegable, que quieras visualizar de la hoja 2. Espero sea lo que buscabas Saludos Dictionary.rar
  7. Prueba esto Sub ActualizaExistencias() Dim c As Range, Registros As Object Dim celda Set c = Hoja1.Range("D3:F" & Hoja1.Range("c" & Rows.Count).End(xlUp).Row) c.ClearContents 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 CInt(.Offset(, 6)) > 0 Then Registros.Add .Text & .Offset(, 1).Text & "@" & _ .Offset(, 2).Text & "@" & .Offset(, 3).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 For Each key In Registros.Keys Dim mArray mArray = Split(key, "@") If mArray(0) = .Text & .Offset(, 1).Text Then .Offset(, 2).Value = mArray(1) .Offset(, 3).Value = mArray(2) .Offset(, 4).Value = Registros(key) Registros.Remove (key) Exit For End If Next key End With Next Set Registros = Nothing MsgBox "Existencias actualizadas" End Sub
  8. Hola, Os cuelgo el modulo y la clase en archivo de texto. El modulo se incluye como modulo independiente. Luego el formulario que quieres se redimensione en sus eventos Open y resize debes colocar esto. ----------------------------------------------------------------- Private Sub Form_Open(Cancel As Integer) ScaleFormWindow Me Me.InsideWidth = 15309 ' a tu gusto Me.InsideHeight = 11340 ' a tu gusto End Sub Private Sub Form_Resize() ScaleFormControls Me End Sub ----------------------------------------------------------- La clase la debes de llamar con su nombre. REPITO esto funciona en access en excel no lo sé..las apis funcionaran pero todo en su conjunto, no lo sé. Suerte Clase_clFormWindow.txt Modulo.txt
  9. Hola a todos, Como dice bigpetroman la historia es algo mas complicada de lo que parece en un principio. Tengo un módulo(Mòdulo + Clase) que te lo hace y funciona bien pero es para formularios de Access y no se sí se le podría hacer funcionar en Excel y ahora estoy de vacas. El ejemplo lo desarrolló una comunidad de Access allá por 2007 ya que en esa época comenzaban los monitores con resoluciones superiores a 1024x768x96 y los problemas fueron importantes. El ejemplo coje la resolución del PC en el que se ejecuta y redimensiona la ventana y los controles del formulario y luego le das el tamaño que quieres dentro de la pantalla en que se ejecuta. SIno desistes lo comentas y colgaré el módulo.
  10. Bueno lo que te puse ayer no funciona, pero es que ya no entiendo nada😀. Hoy he hecho pruebas y me ratifico que esto que te puse mas arriba FUNCIONA como quieres. Suerte amigo!!!!
  11. Cambia lo que hay por esto ... 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) Else .Offset(, 4) = 0 End If End With Next ...
  12. A ver esto Sub ActualizaExistencias() Dim c As Range, Registros As Object Dim celda 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(.Offset(, 4)) <> 0 And (.Offset(, 5) - .Offset(, 4) <> 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) Else .Offset(, 4) = 0: .Offset(, 3) = "": .Offset(, 2) = "" End If End With Next Set Registros = Nothing MsgBox "Existencias actualizadas" End Sub
  13. >Hola Pues sí te hubieses esforzado un poco lo podrías haber arreglado tu, salvo que hagas un copia pega sin mirar lo que hace y sí es así pues .... con cambiar un numero funciona como tu quieres. Y te voy a dar una ayudita. Hay que cambiarlo en esta linea If Len(celda.Offset(, 5)) <> 0 Then Ala curratelo un poco
×
×
  • Create New...

Important Information

Privacy Policy