Saltar al contenido

Distribuir texto en las filas de columnas combinadas bigpetroman!!!


Recommended Posts

publicado

Este tema lo estaban tratando en una consulta anterior:

https://www.ayudaexcel.com/foro/macros-programacion-vba-10/expertos-distribuir-texto-varias-celdas-30242/index2.html#post145900

Yo solicite la ayuda de uno de los colaboradores pues su programación funciona bien, pero creo que el problema es que tengo las columnas combinadas de la "D" a la "I", y quizá por esto sea el error, adjunto el archivo en el que trabajo, lleno desde la fila 11 y puedo llegar hasta la 1000, (en realidad solo he llegado a la 780), pero las descripciones de mi stock ha ido en aumento... hay algunos botones el archivo, es de excel 2007, un botón borra la captura, otro selecciona un área que yo establezco para la impresión y otro guarda un informe con el nombre de mi numero de entrada.

Ademas de esto me gustaría saber si es posible que al enviar la impresión, después del numero de paginas resultantes, el área que se anexa, que es el rango "J8:M10" puede imprimirse al final sin salto de pagina, es decir si se queda a la mitad de la pagina 18 (solo es un ejemplo, podrían ser mas o menos paginas) se imprima inmediatamente después de esa mitad en la misma pagina como si fuera la fila consecutiva y no en otra pagina aparte...

De antemano gracias por su ayuda, que tengan un buen día...

post-152227-145877008332_thumb.jpg

post-152227-145877008333_thumb.jpg

Ejemplo.zip

publicado

amigo, elimina el codigo del evento Worksheet_Change y coloca este otro, funciona en el archivo que subistes.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sTextOriginal As String
Dim sTextRecorta As String
Dim nCaracteres As Integer
Dim nUltEspacio As Integer

'si ya estamso procesando una palabra, salimos
If bRecortando = True Then Exit Sub
'si la columnos no es la A, salimos
If Target.Column <> 1 Or Target.Rows.Count > 1 Then Exit Sub

bRecortando = True
nCaracteres = 80
sTextOriginal = Target.Cells(1, 1).Value
sTextRecorta = Target.Cells(1, 1).Value

'si el texto es mayor que el numero de caracteres requeridos, lo dividimos, dejamos siempre
'la ultima palabra completa conseguida
If Len(sTextOriginal) > nCaracteres Then
sTextRecorta = Mid(sTextOriginal, 1, nCaracteres)

nUltEspacio = InStrRev(sTextRecorta, " ")
If nUltEspacio < nCaracteres Then
sTextRecorta = Mid(sTextRecorta, 1, nUltEspacio)
sTextRecorta = Trim(sTextRecorta)
End If

Target.Cells(1, 1).Value = sTextRecorta
sTextOriginal = Replace(sTextOriginal, sTextRecorta, "")

'despues de procesar, copiamos el resto en la siguiente línea
bRecortando = False
Target.Offset(1, 0).Select
Selection.Value = Trim(sTextOriginal)

End If

bRecortando = False

End Sub[/CODE]

lo otro que pides no lo entendi, tu archivo está completamente vacio, no se realmente que es lo que quieres, suerte

publicado

Saludos Cordiales "bigpetroman" en efecto funciona perfecto... la parte que no supe explicar te la defino en el archivo que adjunto, supongamos que el botón que tiene la macro asignada, selecciona el rango hasta la ultima fila llena en "D", al tener la selección establezco esta como área de impresión, pero el rango de "K8:N10" se imprime en una hoja aparte, mi intención es omitir este ultimo salto de pagina, es decir que este rango se imprima como si correspondiera a las filas que siguen bajo la ultima fila llenada en el formato, para que mas o menos tengas una idea de mi problema hice el formato (aprox) el original esta en una hoja con membrete). Si se puede esto ultimo estaré eternamente agradecido con usted, pero si no es posible no tengo problema, buscare la forma o alternativa y al tenerlo terminado lo subiré al foro, creo que es muy útil...

De antemano gracias y tenga usted un excel-ente fin de semana

P.D. el archivo es Nuevo ejemplo

Nuevo ejemplo.zip

publicado

Amigo, así como lo planteas no creo que se pueda hacer directamente, se me ocurre la idea de colocar esa pequeña tabla (copiarla) al final de la tabla principal para que quede lista para imprimir, revisa la macro a ver si te sirve así, lo que pudieras hacer es borrar esa parte con una macro luego de imprimir.

cualquier duda pregunta

Ejemplo_InFauve_SM.zip

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.