Notifications
Clear all

Ajuda com Macro de Repetição

6 Posts
3 Usuários
0 Reactions
1,345 Visualizações
(@akilles)
Posts: 9
Active Member
Topic starter
 

Olá, pessoal tudo bem?

Estou fazendo uma macro de repetição que segue um determinado layout.

Estou com uma dificuldade numa questão que já faz um mês e não tem jeito que se resolva, minha principal duvida é no agrupamento do campo "PEDIDO", pois o PEDIDO tem relação de 1 para N (conforme o campo COD_PASTA), meu código está criando um "bloco" para cada pedido duplicando as informações exceto o pedido, minha duvida é como verificar se o COD_PASTA da linha atual é igual o da linha anterior (da aba DADOS).

Fiz algumas tentativas, mas ou ele duplicava o "bloco" trocando só o pedido, ou duplicava o "bloco" e não aparecia o pedido.

No anexo aparece o que acontece hoje na minha planilha.

 
Postado : 18/11/2013 1:34 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Creio que somente com uma imagem, vai ser um tanto quanto difícil obter retorno.
Um modelo de sua planilha (dados podem/devem ser fictícios), com a descrição do que é e como deseja; talvez facilite uma resposta

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 18/11/2013 2:27 pm
(@akilles)
Posts: 9
Active Member
Topic starter
 

Boa noite, abaixo anexo da planilha que eu fiz com a Macro, lembrando que a parte da repetição não está funcional.

 
Postado : 18/11/2013 3:39 pm
(@sergio-vilar)
Posts: 11
Active Member
 

akilles
Inclui uma variável cod para facilitar o controle de em qual código você está.
inseri a variável no inicio do primeiro bloco, e no loop que agrupa, alterei de = para <> (diferente).

Recomendo você organizar a planilha por ordem de código antes de executar que dará certo.

Loop principal

Do Until Sheets("DADOS").Cells(lin, 1) = ""
        cod = Sheets("DADOS").Cells(lin, 1)
        Sheets("Relatório").Cells(linha, 1).Font.Bold = True
        Sheets("Relatório").Cells(linha, 1) = Sheets("DADOS").Cells(lin, 7) 'NOME

        
        Sheets("Relatório").Cells(linha, 4).Font.Bold = True
        Sheets("Relatório").Cells(linha, 4) = "COD. " + cod 'COD_PASTA
        linha = linha + 1

Loop Agrupar

'AGRUPAR
        
        Do Until Sheets("DADOS").Cells(lin, 1) <> cod
 
Postado : 19/11/2013 2:15 pm
(@akilles)
Posts: 9
Active Member
Topic starter
 

Bom dia sergio.vilar, eu desmembrei o as tabelas em duas e fiz o seguinte loop e deu certo:

        Do Until Sheets("PROC").Cells(lin, 1) <> Sheets("VAL").Cells(lincomp, 1)
        Sheets("REL").Cells(linha, 1) = Sheets("VAL").Cells(linhacomp, 2)  'PEDIDO
        Sheets("REL").Cells(linha, 2) = Sheets("VAL").Cells(linhacomp, 4)  'RISCO
        
        Sheets("REL").Cells(linha, 4).HorizontalAlignment = xlCenter
        Sheets("REL").Cells(linha, 4).NumberFormat = "$ #,##0.00"
        Sheets("REL").Cells(linha, 4) = Sheets("VAL").Cells(linhacomp, 3)  'VALOR
        
        lincomp = lincomp + 1
        linha = linha + 1
        linhacomp = linhacomp + 1
        
        Loop

Queria fazer um merge na linha da coluna 1 a 7, o mais proximo que consegui fazer foi isso:

Sheets("REL").Cells(linha, 1) = "Objeto: " + Sheets("PROC").Cells(lin, 9) 'OBJETO
        Sheets("REL").Cells(linha, 1).Characters(Start:=1, Length:=6).Font.Bold = True
        Sheets("REL").Cells(linha, 1).Characters(Start:=7).Font.Bold = False
        Sheets("REL").Cells(linha, 1).Range(1 & ":" & 1).Merge

Só que ele tá mesclando do inicio ao fim da linha, queria que da linha ele mesclasse a coluna 1 até a 7, se altero de 1 a 7 ele mescla as sete linhas abaixo

 
Postado : 21/11/2013 7:49 am
(@akilles)
Posts: 9
Active Member
Topic starter
 

Alguém tem alguma idéia?

 
Postado : 26/11/2013 8:12 am