Imprimir según valor de celda

Tengo un código el cual me rellena ciertos datos de un protocolo que yo ingreso en ciertas celdas el problema ejemplo si el primer dato tiene 3 wifi que me imprima 3 protocolos no se como darle esa instrucción ya que lo tengo que hacer manualmente

1407674T AP1

1407674T AP2

1407674T AP3

Y lo que quiero es colocar

1407674T                            y en otra celda  "3" que indique el numero de copias de ese protocolo

Y me rellene automáticamente el ap1, ap2, ap3 y me saque los 3 protocolos con el mismo numero pero diferente ap

Se podrá hacer eso el código que tengo ahora es

Sub Consecutivo()
Dim Desde, Hasta
Dim Activa As Range
Dim ncopias As Integer

Set Activa = Range("F2")
Desde = InputBox("Ingrese el numero inicial", "Desde")
Hasta = InputBox("Ingrese el numero final", "Hasta")

On Error GoTo Error
For i = Desde To Hasta
Activa.Value = i
Sheets(Array("ProtocoloAP")).Select
Sheets("ProtocoloAP").Activate

ActiveWindow.SelectedSheets.PrintOut Copies:=1

Next i
Exit Sub
Error:
MsgBox Error.Description

End Sub

1 respuesta

Respuesta
1

Utiliza lo siguiente:

Sub Consecutivo()
  Dim Desde As Long, Hasta As Long
  Dim protocolo As String
  Dim i As Long
  '
  protocolo = Range("F2").Value
  Desde = Application.InputBox("Ingrese el numero inicial", "Desde", Type:=1)
  If Desde = 0 Then Exit Sub
  Hasta = Application.InputBox("Ingrese el numero final", "Hasta", Type:=1)
  If Hasta = 0 Then Exit Sub
  '
  For i = Desde To Hasta
    Range("F2").Value = protocolo & " AP" & i
    ActiveSheet.PrintOut copies:=1
  Next
End Sub

Veo que estás interesada en aprender a programar en VBA. Te recomiendo los siguientes vídeos para empezar a programar y para declarar variables:

Consejos para desarrollar macros . curso de excel, curso de macros, excel, macros - YouTube

Declarar variables en vba excel. Curso de macros. - YouTube


En mi canal encontrarás otros consejos para programar en VBA.

Sal u dos Dante Amor

Hola creo no me explique bien lo que quiero que realice

Para ahorrar tiempo quisiera que existiera la siguiente formulación que realmente no se si se pueda

Eso es lo que quisiera para ahorarme mucho tiempo ya que hay proveedores que tienen más de 100 AP ojala me haya explicado mucho mejor y mil gracias por la respuesta pero yo aun sigo al pendiente para ver si se puede de esa manera que te digo y ya quedo la suscripción, Gracias

Otras recomendaciones de mi canal:

Excel vba dictionary parte 1 - YouTube

Generar archivos en automatico . curso de macros . excel . macros - YouTube


Faltan algunos datos:

- Cómo se llama la hoja donde tienes los datos.

- En cuál celda de la hoja "protocoloAP" hay que poner el ID.

- En cuál fila empiezan los ID.

Te adelanto, lo que pides sí se puede hacer. Pero no proporcionaste la información completa.

Voy preparando la macro, suponiendo los datos que te faltaron.

Mientras puedes echarle un vistazo a las recomendaciones:


Macro para copiar datos de un libro a otro utilizando Matrices. Curso de excel, curso de macros - YouTube

Otra pregunta.

¿Entonces considero la segunda imagen?

¿Ya no quieres la concatenación?

¿Tú vas a hacer la concatenación?

Creo que ya entendí un poco más.

Voy a poner en la macro la concatenación.

---

Solamente contesta estas duda:

- Cómo se llama la hoja donde tienes los datos.

- En cuál celda de la hoja "protocoloAP" hay que poner el ID.

- En cuál fila empiezan los ID.


Curso de Excel. Formato condicional para resaltar el valor máximo y mínimo. Excel - YouTube

Te paso la macro, puse unos comentarios entre las líneas de la macro para que actualices los datos:

Sub imprimir_protocolos()
'Por Dante Amor
  Dim sh As Worksheet
  Dim i As Long, k As Long
  '
  Set sh = Sheets("Hoja9")    'hoja con los ID
  '
  'cambia el 2 por el número de fila donde empiezan los ID
  For i = 2 To sh.Range("B" & Rows.Count).End(3).Row
    'imprime la hoja ProtocoloAP
    For k = 1 To sh.Range("D" & i).Value
      With Sheets("ProtocoloAP")
        'pone el ID en la celda F2
        .Range("F2").Value = sh.Range("B" & i).Value & " AP" & k
        .PrintOut copies:=1
      End With
    Next
    '
    'imprime la hoja ProtocoloSW
    For k = 1 To sh.Range("E" & i).Value
      With Sheets("ProtocoloSW")
        'pone el ID en la celda F2
        .Range("F2").Value = sh.Range("B" & i).Value & " SW" & k
        .PrintOut copies:=1
      End With
    Next
  Next
End Sub

Macros metodo find. Curso de macros - YouTube

Ok te quise enviar el documento no pude a ver si puedes visualizar y descargar con este link

si no pudiste te envío capturas mi doc tiene 3 pestañas

en la pestaña "sitios para datos" es la siguiente 

Ahí es donde coloco las asignaciones y manualmente pongo los ap "celdas en amarillo" que tengo que copiar y pegar el id 2 veces y colocar ap1 y ap2 porque mi código imprime por el consecutivo, yo quisiera que solo apareciera el id y el numero de ap ejemplo 2 que son los ap que llevaría 1413995X y en la celda que dice ap2 solo ponerle 2 para que me la imprima 2 veces

En la columna v solo utilizo CONCATENAR(C2,"-", D2) para que una el ID con el AP1 o AP2 según sea el caso misma columna que uilizo en el "menu".

La siguiente pestaña es la de "menu" en la cual es donde coloco los botones y hago que funcione elcodigo por consecutivo la celda c2 contiene BUSCARV($F$2,'SITIOS PARA DATOS'!A:B, 2, FALSO) en el cual me busca el consecutivo por medio de f2 si le pongo 1 al 10 el f2 cambia y va colocanco el id que le corresponde a cada numero

y en la tercer hoja que es el protocolo es mas o menos asi

En la cual en la celda "B11" esta la referencia =MENU!C2 que va cmbiando conforme cambia en menu y la celda "B29" es el mismo caso.

Para ahorrarme eso manualmente de ap1 ap2 ap3 etc, quisiera que si dice 2 en por celda me imprima automáticamente el mismo id 2 veces y que el primero diga ap1 y el segundo ap2

Ojala haya quedado más claro y muchas gracias por tu tiempo... saludos

Visita:

Cursos de Excel y Macros - YouTube


Te paso el código actualizado para imprimir las AP.

Descarga el archivo, ahí vienen la hoja actualizada y las instrucciones que debes seguir para ejecutar la macro.

https://drive.google.com/file/d/1GoVVdykEWHmaN0pKCQHSI-g8ttzJ6JTT/view?usp=sharing 

Sub Consecutivo()
'Por Dante Amor
  Dim sh1 As Worksheet, sh2 As Worksheet
  Dim i As Long, k As Long
  Dim sitio As String
  '
  Set sh1 = Sheets("SITIOS PARA DATOS")
  Set sh2 = Sheets("ProtocoloAP")
  '
  For i = 2 To sh1.Range("B" & Rows.Count).End(3).Row
    For k = 1 To sh1.Range("C" & i).Value
      sitio = sh1.Range("B" & i).Value & "-AP" & k
      sh2.Range("B11").Value = sitio
      sh2.Range("B29").Value = sitio
      sh2.PrintOut copies:=1
    Next
  Next
End Sub

Recomendación de la semana:

Excel formato condicional dinamico - YouTube

Sal u dos Dante Amor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas