Logo Hardware.com.br
carla-rp-vidro
carla-rp-vid... Novo Membro Registrado
3 Mensagens 0 Curtidas

Excel: Colar informações repetidamente

#1 Por carla-rp-vid... 16/01/2018 - 13:00
Boa tarde.
Tenho uma planilha no excel que exportei de um outro programa, onde, na coluna A tenho o número do pedido. Cada linha representa um item do pedido, então qdo tenho vários itens, tenho várias linhas com o mesmo número do pedido.
Preciso, a cada vez que este número muda, inserir três linhas em branco (até já encontrei a macro aqui no fórum e deu certo) e nessas linhas que foram inseridas, copiar sempre a mesma informação, que seria um cabeçalho e rodapé.
Então, eu preciso de uma ajuda pra que o excel entenda que ele vai procurar na coluna e qdo achar uma em branco, cola a informação e assim por diante, até acabar.
Coloqeui em anexo o que já consegui. e no mesmo arquivo como gostaria que ficasse. Na verdade ainda não ficaria 100%, pois no formato "de saída" cada pedido tem espaço para 6 itens, e algumas vezes só tenho 1, aí eu teria que inserir essas linhas faltantes, pois depois vou recortar esses papeis para usar na fabrica, se eu não inserir, ficara muito pequeno para manuseio.

Anexos

osvaldomp
osvaldomp Geek Registrado
753 Mensagens 558 Curtidas
#4 Por osvaldomp
20/01/2018 - 12:04
carla-rp-vidro disse:

Preciso, a cada vez que este número muda, inserir três linhas em branco (até já encontrei a macro aqui no fórum e deu certo) e nessas linhas que foram inseridas, copiar sempre a mesma informação, que seria um cabeçalho e rodapé.


Segue outra opção. Mantenha a tabela da planilha Plan7 na forma original, ou seja, sem inserir linhas vazias (nem cabeçalhos e nem rodapés).
Se você já inseriu linhas vazias: selecione a coluna A / aperte F5 / Especial / Em branco / OK,
em seguida clique com o direito em qualquer célula que ficou selecionada / Excluir / Linha inteira / OK,
em seguida rode o código abaixo.



Sub ImprimePedidos()
Dim LR As Long, n As Long, x As Long, i As Long, wsO As Worksheet
Set wsO = Sheets("Plan7&quot
LR = wsO.Cells(Rows.Count, 1).End(3).Row
n = 2
Do
With Sheets("CFI&quot
Union(.[A3:I8], .[A12:I17], .[A21:I26], .[A30:I35]).Value = ""
For i = 1 To 4
If wsO.Cells(n, 1) = "" Then .PrintOut: Exit Sub
x = Application.CountIf(wsO.Range(wsO.Cells(n, 1), wsO.Cells(LR, 1)), wsO.Cells(n, 1))
.Cells(3 + 9 * i - 9, 1).Resize(x, 9).Value = wsO.Cells(n, 1).Resize(x, 9).Value
n = n + x
If n >= 25 Then .PrintOut: Exit Sub
Next i
.PrintOut
End With
Loop
End Sub



obs.
1. para você testar, inicialmente eu deixei um comando para imprimir somente os 8 primeiros pedidos, 4 pedidos em cada folha da planilha CFI, se o resultado for o desejado então apague esta linha do código If n >= 25 Then .PrintOut: Exit Sub aí ao rodar o código novamente serão impressos todos os pedidos da tabela da Plna7, 4 pedidos em cada folha
2. se você quiser imprimir outros pedidos que não os 8 primeiros então altere os valores de n no código , assim: ~~~> altere n = 2 ~~~> no lugar do número 2 coloque o número da linha em que está o primeiro pedido a ser impresso e altere ~~~> If n >= 25 Then .PrintOut: Exit Sub ~~~> no lugar do número 25 coloque o número da linha logo abaixo da linha em que está o último pedido a ser impresso
3. é possível adicionar ao código acima alguns comandos para selecionar/limitar os pedidos a serem impressos, retorne se houver interesse em implementar esses recursos
Osvaldo
carla-rp-vidro
carla-rp-vid... Novo Membro Registrado
3 Mensagens 0 Curtidas
#5 Por carla-rp-vid...
23/01/2018 - 14:20
Osvaldo, boa tarde!
Obrigada pelo seu retorno.
Pelo que entendi, o codigo copia as informações da plan7, cola na planilha CFI e manda direto pra impressora...
Fiquei testando varias vezes antes de perceber q imprimia direto, kkkkkk
Bem, da certo, mas minha CFI está inicialmente configurada para 6 itens, e tenho alguns pedidos que tem mais itens. Aí "encavala" informações no rodapé e cabeçalho.
Tem como ajustar?
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal