Este fórum foi descontinuado. LEIA AQUI e participe da Comunidade BABOO :)

Ir para conteúdo
mfp2010

Macro de copiar e colar dentro da planilha(loop)

Mensagem Recomendada

Veja se atende.

1. no lugar do seu código CopiaColaImprime utilize este abaixo

Sub ReplicaCódigosAjustaLinhasGeraPDF()
 Dim LR As Long, i As Long
  LR = Cells(Rows.Count, 12).End(3).Row
    For i = 7 To LR
     [J7] = Cells(i, 12)
     Call ajustar
     Call PDF_
    Next i
End Sub

 

2. substitua o seu código Ajustar pelo código abaixo.

Sub ajustar()
 Rows("14:113").EntireRow.AutoFit
 ActiveSheet.Range("A12:J12").AutoFilter Field:=1, Criteria1:=0
End Sub

 

3. no seu código PDF_ acrescente End Sub como última linha do código

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 05/02/2019 at 12:20 PM, osvaldomp disse:

Veja se atende.

1. no lugar do seu código CopiaColaImprime utilize este abaixo

Sub ReplicaCódigosAjustaLinhasGeraPDF()
 Dim LR As Long, i As Long
  LR = Cells(Rows.Count, 12).End(3).Row
    For i = 7 To LR
     [J7] = Cells(i, 12)
     Call ajustar
     Call PDF_
    Next i
End Sub

 

2. substitua o seu código Ajustar pelo código abaixo.

Sub ajustar()
 Rows("14:113").EntireRow.AutoFit
 ActiveSheet.Range("A12:J12").AutoFilter Field:=1, Criteria1:=0
End Sub

 

3. no seu código PDF_ acrescente End Sub como última linha do código

 

Bom dia Osvaldo, muuuito obrigado, era isso mesmo o que eu queria, só tem uma coisa que não está executando da maneira correta, a macro Ajustar não altera quando eu troco os códigos, ela fica com o mesmo para todos os arquivos gerados, não filtra os "0" de cada código, tirando isso tá perfeito! 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Gustavo Paschoal disse:

.. a macro Ajustar não altera ...
Não altera o que?

... quando eu troco os códigos,...
O que é "trocar os códigos" ? Você quis dizer quando você insere nova lista de códigos?

ela fica com o mesmo para todos os arquivos gerados, não filtra os "0" de cada código,...
Fica com o mesmo o que ?

 

Ainda, disponibilize uma nova amostra do seu arquivo Excel, com alguns dados e com os códigos atuais instalados.


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
45 minutos atrás, osvaldomp disse:

Ainda, disponibilize uma nova amostra do seu arquivo Excel, com alguns dados e com os códigos atuais instalados.

Não altera o que?

A macro não filtra os itens zerados da coluna A quando os códigos são alterados, de acordo com a lista de códigos. Cada código tem uma quantidade de 0, que geralmente não são iguais, uma coisa que percebi quando essa macro ajustar é executada, me parece que ela cria um filtro na aba Justificativas que não é alterado quando cada código é inserido na célula J7. Estou enviando 2 exemplos de como deveriam ficar a aba Justificativa nos arquivos em pdf gerados.

O que é "trocar os códigos" ? Você quis dizer quando você insere nova lista de códigos?

Quis dizer que a macro pega o primeiro número, ajusta as células e depois gera o pdf, depois pega o segundo código e repete o processo, nisso a aba Justificativas ela se altera, conforme a quantidade de 0 existente na coluna A, aumentando ou diminuindo as linhas da aba.

Fica com o mesmo o que ?

Fica com a mesma quantidade de zeros na coluna A, independente se você muda o código, na lista de códigos, fazendo com que as linhas da aba permaneçam as mesmas, não se alterando.

Essa planilha é atualizada com links em outra planilha,

Obrigado!

Editado por Gustavo Paschoal

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 horas atrás, osvaldomp disse:

Ainda, disponibilize uma nova amostra do seu arquivo Excel, com alguns dados e com os códigos atuais instalados.

Não encontrei o arquivo.


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 08/02/2019 at 7:57 PM, osvaldomp disse:

Não encontrei o arquivo.

Bom dia Osvaldo, me desculpe, não vi que eu tinha limite para subir aquivos, segue o arquivo.

Planilha_Teste_1.xlsm

Editado por Gustavo Paschoal

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 08/02/2019 at 12:04 PM, Gustavo Paschoal disse:

Gustavo, algumas afirmações suas não batem com os dados da sua planilha Justificativas, conforme abaixo.

Cada código tem uma quantidade de 0, que geralmente não são iguais,
Os zeros que estão na coluna A, em que é aplicado o Filtro, não se alteram ao mudar o código em J7 e tampouco se alteram se J7 estiver vazia. Isso ocorre porque na coluna A há fórmulas, ex. em A13 =Variáveis!G2, e na coluna G da planilha Variáveis há constantes, que nada tem a ver com J7. Ou seja, qualquer que seja o valor em J7 os valores na coluna A não se alteram.

Nos primeiros posts você comentou que queria ajustar a altura das linhas da coluna J para assim poder visualizar o texto completo em cada célula, no entanto os textos da coluna J também não dependem do código inserido em J7.

As únicas células cujo conteúdo é alterado de acordo com o conteúdo de J7 são as células do intervalo F6:F10.

Então, se a minha análise estiver correta os seus códigos pode ser resumidos a:
1. filtra a coluna A ~~~> critério 0
2. ajusta a altura das linhas da coluna J
3. gera um PDF para cada código relacionado na coluna L
4. desfaz o filtro

É isso ?

 

 

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 minutos atrás, osvaldomp disse:

 

É exatamente isso, os códigos não se alteram pois essa planilha estava com vínculos em outra que eu não tive a liberação de enviar aqui, mas conforme os códigos são inseridos na J7 pela sua macro, deveria fazer essa ordem que você citou, 

1. filtra a coluna A ~~~> critério 0
2. ajusta a altura das linhas da coluna J
3. gera o PDF para cada código relacionado na coluna L
4. desfaz o filtro

Após isso, recomeça a macro novamente. Espero que eu tenha conseguido passar como deveria ser o procedimento. Mais uma vez, muito obrigado por disponibilizar do seu tempo para me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, Gustavo Paschoal disse:

É exatamente isso, os códigos não se alteram pois essa planilha estava com vínculos em outra que eu não tive a liberação de enviar aqui, ...

Faltou você informar se a macro será aplicada na planilha do seu exemplo, em que a coluna A não se altera, ou se será  aplicada na planilha com vínculos ? Se for na planilha com vínculos, a coluna A se altera ao alterar J7 ?


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
30 minutos atrás, osvaldomp disse:

Faltou você informar se a macro será aplicada na planilha do seu exemplo, em que a coluna A não se altera, ou se será  aplicada na planilha com vínculos ? Se for na planilha com vínculos, a coluna A se altera ao alterar J7 ?

Isso, vou aplicar na planilha com vínculos, a coluna A se altera sim, conforme altera a célula J7.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos tentar simplificar. Utilize somente o código abaixo no lugar dos 3 anteriores.
Considerei que o conteúdo da coluna J não se altera ao alterar J7, por isso o comando que ajusta a altura das linhas atua uma única vez. Porém, se as células de J se alteram com J7 aí é só passar o comando que ajusta as linhas para o interior do Loop.

Segue a sequência que o código faz:

1. remove o Auto Filtro, se houver
2. ajusta a altura das linhas
3. cola cada código de L em J7
para cada código colado:
4. aplica o Auto Filtro na coluna A, critério =0
5. gera e salva .pdf
6. remove o Auto Filtro

Sub ReplicaCódigosAjustaLinhasGeraPDF()
 Dim LR As Long, i As Long, nome As String
  ActiveSheet.AutoFilterMode = False
  Rows("13:113").EntireRow.AutoFit
  LR = Cells(Rows.Count, 12).End(3).Row
   For i = 7 To LR
    [J7] = Cells(i, 12)
    ActiveSheet.Range("A12:J12").AutoFilter Field:=1, Criteria1:=0
    nome = ThisWorkbook.Path & "\Consistência" & "_" & ActiveSheet.Range("MES").Value & " - " & ActiveSheet.Range("Nome_Concessionaria").Value & ".pdf"
    nome = Replace(nome, "/", "-")
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nome, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    ActiveSheet.AutoFilterMode = False
   Next i
End Sub

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 minutos atrás, osvaldomp disse:

Vamos tentar simplificar. Utilize somente o código abaixo no lugar dos 3 anteriores.
Considerei que o conteúdo da coluna J não se altera ao alterar J7, por isso o comando que ajusta a altura das linhas atua uma única vez. Porém, se as células de J se alteram com J7 aí é só passar o comando que ajusta as linhas para o interior do Loop.

Segue a sequência que o código faz:

1. remove o Auto Filtro, se houver
2. ajusta a altura das linhas
3. cola cada código de L em J7
para cada código colado:
4. aplica o Auto Filtro na coluna A, critério =0
5. gera e salva .pdf
6. remove o Auto Filtro


Sub ReplicaCódigosAjustaLinhasGeraPDF()
 Dim LR As Long, i As Long, nome As String
  ActiveSheet.AutoFilterMode = False
  Rows("13:113").EntireRow.AutoFit
  LR = Cells(Rows.Count, 12).End(3).Row
   For i = 7 To LR
    [J7] = Cells(i, 12)
    ActiveSheet.Range("A12:J12").AutoFilter Field:=1, Criteria1:=0
    nome = ThisWorkbook.Path & "\Consistência" & "_" & ActiveSheet.Range("MES").Value & " - " & ActiveSheet.Range("Nome_Concessionaria").Value & ".pdf"
    nome = Replace(nome, "/", "-")
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nome, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    ActiveSheet.AutoFilterMode = False
   Next i
End Sub

 

Primeiramente obrigado mais uma vez, o conteúdo da coluna J (comentários) se altera também, conforme a coluna A (coluna dos zeros), o código fica assim? 

 

Sub ReplicaCódigosAjustaLinhasGeraPDF()
 Dim LR As Long, i As Long, nome As String
  ActiveSheet.AutoFilterMode = False
For i = 7 To LR  
  Rows("13:113").EntireRow.AutoFit
  LR = Cells(Rows.Count, 12).End(3).Row
  [J7] = Cells(i, 12)
    ActiveSheet.Range("A12:J12").AutoFilter Field:=1, Criteria1:=0
    nome = ThisWorkbook.Path & "\Consistência" & "_" & ActiveSheet.Range("MES").Value & " - " & ActiveSheet.Range("Nome_Concessionaria").Value & ".pdf"
    nome = Replace(nome, "/", "-")
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nome, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    ActiveSheet.AutoFilterMode = False
   Next i
End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

×
×
  • Criar Novo...