Tengo una duda que requiero resolver, Copiar n hojas a un libro nuevo de acuerdo a cantidad definida en una variable en vba.
Paso a describir lo que requiero, tengo una lista de datos variable, las mismas salen de otra macro de autofiltro de 10 campos, que según una selección en una celda me muestra los códigos y detalles de productos asociados a esa marca, ejemplo FO para FORD, CH para CHEVROLET y así con otras n cantidad de marcas, eso está dominado mediante una macro, ahora bien, los datos mostrados en ese autofiltro son variables, es ejemplo FO tiene 10 registros en filas, desde la celda D6 hasta la D15, si aplico otro filtro para otra marca ejemplo CH tiene 1506 registros en el mismo rango, ¿qué hago con esos datos? A parte de quedarme ciego analizando, debo llenar una planilla de pedido que solo me acepta 20 códigos por planilla, en esto también lo tengo dominado mediante otra macro que cuenta desde abajo hasta arriba y me copia sin problemas en la planilla cuando la marca y la condición me muestran 20 códigos o menos, ahora como no me gusta la cosa tan simple, empieza la verdadera duda, cuando son mas de 20 códigos requiero la CantidadProductos/20, esto me da numero de hojas aplicando esta formula CantProdAux = Int(cantprod / 20) + 1, aqui no hay problemas, hasta aquí se cuantos códigos son, cuantas hojas requiero para meter de 20 en 20 esos códigos, Aquí esta la duda, ¿cómo hago para que se me copie CantProdAux veces el formato de pedido y que me copie de 20 en 20 en cada hoja y que cada hoja sea el numero de hoja de pedido?, ejemplo tengo 61 productos, esto me da 61/20 = 3.05 es decir 3 hojas y 1 celda, para corregir aplico Int(61/ 20) + 1, y me da 4 hojas. Aqui llevo este codigo
Sub pedidomay20()
Application.ScreenUpdating = False
Static F As Long
Dim a As Integer
Dim cont As Integer
Dim numhoja As Integer
Sheets("CONSULTA").Activate
Range("d6:d45000").Select 'selecciono la columna donde están los códigos
cantprod = (Range("d" & Rows. Count).End(xlUp). Row) - 5 'son 5 filas de nombres y formatos de tablas
If cantprod > 20 Then
CantProdAux = Int(cantprod / 20) + 1
MsgBox "se cargarán " & cantprod & " Productos en " & CantProdAux & " hojas de pedido" 'aviso la cantidad de productos y cant de hojas
Sheets("CONSULTA").Activate
For Fila = 6 To cantprod Step 20
ActiveSheet. Range(Cells(Fila, 11), Cells(Fila + 19, 11)).Select 'el primer codigo en la celda d6
Selection.Copy
Sheets("pedido").Activate 'nombre de hoja destino
Range("d39:d58").Select 'rango de pegado de codigos
ActiveSheet.Paste
Sheets("pedido").Select
Sheets("pedido").Copy
For numhoja = 1 To CantProdAux
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name , Name = numhoja
Next numhoja
Next Fila
End If
End Sub
