Notifications
Clear all

AJUDA NA MACRO PARA ORGANIZAR DADOS

5 Posts
2 Usuários
0 Reactions
813 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá pessoal, estou com dificuldade em fazer uma condicional em uma macro de organização de dados.
O funcionamento será assim: Todos os dias, vou gerar um boletim no sistema e exportar para Excel. Neste boletim contem dados diário, semanal, mensal e acumulado, e os dados corresponde informações acumuladas até a data diária selecionada. Na aba (Capa) terá um botão onde deverá ser o acionador da macro. Segue abaixo algumas condicionais que deverão ter na macro:

1.1 Na aba (Diário) os dados serão inseridos por linha, isto é, cada linha terá uma data diferente extraída do boletim, e se a anterior for diferente de vazio passa para outra linha. (linha = linha + 1)

1.2 Na aba (Semanal) já na primeira coluna (Semana) estarão às datas da semana em cada linha Ex.: linha 1 = 05/08 a 11/08, linha 2 = 12/08 a 18/08. Porém como os dados do boletim são acumulados até a data selecionada, é preciso ter uma condicional que quando a última data diária lançada Ex.: 06/08 estiver entre as datas da semana Ex.: 05/08 a 11/08, os dados deverão ser sobreposto até que a data diária Ex.: 12/08 não corresponder mais a linha da semana Ex.: 05/08 a 11/08, passando os dados para outra linha da semana e assim por adiante.

1.3 Na aba (Mensal e Anual) não é diferente do item 1.2, porém a condicional buscará a última data lançada na aba (Diária) para verificar se a data corresponde ao mês prescrito na primeira coluna da aba (Mensal) e o ano prescrito na primeira coluna da aba (Anual), e caso não seja correspondente às informações passarão para outra linha, ou seja, outro mês ou ano.

silva_jmp

 
Postado : 16/08/2013 9:41 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

:cry: Olá pessoal faz tempo que minha duvida esta fórum, alguém por favor poderia me ajudar, o titulo "organização de dados" eu já tenho a macro, mas este projeto tem algumas condições que não sei com fazer, se alguém não entendeu favor comentar.

silvajmp

 
Postado : 04/10/2013 7:01 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Eu não entendi onde estarão os dados que vc quer copiar.

Também não entendi direito o que deve ocorrer nas planilhas semanal, mensal e anual. Seria a soma dos dados na planilha diário? Se for isso, não é melhor colocar uma função de soma condicional em vez de inserir o valor via VBA? E também, vc tem várias planilhas, não seria mais interessante deixar apenas 1 planilha que possa trazer as opções de visualização de relatório semanal, mensal e anual?

 
Postado : 06/10/2013 7:49 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

;) Olá gtsalikis obrigado por comentar em minha duvida, bom deixo tentar explicar novamente.
1 - A planinha onde irá extrair os dados para organizar está na aba (B.S.), os dados serão alterados diariamente extraídos do meu sistema da empresa.
2 - Os dados diário serão organizados a cada data em uma linha na aba (Diário) extraídas na aba (B.S.) coluna C, até aqui eu acho que consigo fazer,
3 - Na aba (Semanal) é aqui que eu não consigo fazer a condicional, pois o raciocínio é o seguinte:
3.1 - A semana de controle começa na segunda a domingo, na aba (B.S.) os dados são do dia 25/07/2013, portanto esta data corresponde a semana 22/07 a 28/07
na Aba (Semanal) na coluna A já estarão as semanas em cada linha correspondente ao controle, portanto, toda vez que alterado os dados na Aba (B.S.)
isto é, é exportado o dia seguinte, gostaria que houve uma verificação na data na Aba (B.S.) na coluna C, e se ela corresponde-se a semana do exemplo
22/07 a 28/07 os dados seriam sobreposto ao dados anteriores até que a data não corresponda mais aquela semana 22/07 a 28/07, passando os dados para
linha posterior correspondente a semana seguinte.
4 - Se você entendeu o processo do item 3.1 é o mesmo raciocínio para as Abas (Mensal e Anual)

Bom, caso tenha duvidas :?: faça os comentários para tentar novamente explicar a minha necessidade.

silva_jmp

 
Postado : 13/10/2013 7:45 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

;) Olá pessoal vi que não entenderão a minha necessidade, por isso, mudei a forma do meu controle, fiz uma macro para copiar os dados de um arquivo em Excel extraído do sistema da empresa, onde ele e colado na aba(Plan2) do arquivo CONT_DISP-APR.xlsm, a partir dai a macro deverá localizar os dados conforme a minha necessidade de colunas e linhas dos dados da aba(Plan2) e organizado em linha na aba(Boletim Geral), mas não consegui obter todo o resultado esperado, a macro esta copiando e colando conforme necessito, mas não esta organizando.

Segue o código utilizado.

Sub Imp_Dados()

'Definições de variáveis

Dim linha
Dim name

'Definição de valores nas variáveis

linha = 4
name = "CONT_DISP-APR.xlsm"

    Workbooks.Open Filename:= _
    Plan1.Cells(4, 7).Text
    Windows("boletim.xls").Activate
    Range("A1:G100").Select
    Selection.Copy
    Windows(name).Activate
    Plan6.Activate
    Range("A1:G100").Select
    ActiveSheet.Paste
    Plan6.Cells(100, 1) = "FIM"
    
    Plan2.Activate
    Windows("boletim.xls").Activate
    ActiveWindow.Close
    
    While (Plan2.Cells(linha, 2) <> "")
     linha = linha + 1
    Wend

    Plan2.Cells(linha, 1).Select
    
    While (Plan6.Cells(100, 1).Text <> "FIM")
      
      If (Plan6.Cells(1, 1).Text = "Safra:") Then
          
          Plan2.Cells(linha, 1) = CDate(Mid(Plan6.Cells(9, 3).Text, 1, 6) & Mid(Plan6.Cells(9, 4).Text, 9, 2))
          Plan2.Cells(linha, 2) = Plan6.Cells(12, 3) 'horas de moagem diario geral
          Plan2.Cells(linha, 3) = Plan6.Cells(13, 3) 'horas pedidas ponderada diario geral
          Plan2.Cells(linha, 4) = Plan6.Cells(16, 3) 'tempo de aproveitamento diario geral
          Plan2.Cells(linha, 5) = Plan6.Cells(32, 3) 'cana moida por hora efetiva diario geral
          Plan2.Cells(linha, 6) = Plan6.Cells(31, 3) 'cana moida diario geral
          Plan2.Cells(linha, 7) = Plan6.Cells(19, 3) 'horas de moagem diario mda 54
          Plan2.Cells(linha, 8) = Plan6.Cells(20, 3) 'horas pedidas diario mda 54
          Plan2.Cells(linha, 9) = Plan6.Cells(23, 3) 'tempo de aproveitamento diario mda 54
          Plan2.Cells(linha, 10) = Plan6.Cells(49, 3) 'cana moida por hora efetiva diario mda 54
          Plan2.Cells(linha, 11) = Plan6.Cells(48, 3) 'cana moida diario mda 54
          Plan2.Cells(linha, 12) = Plan6.Cells(25, 3) 'horas de moagem diario mda 66
          Plan2.Cells(linha, 13) = Plan6.Cells(26, 3) 'horas pedidas diario mda 66
          Plan2.Cells(linha, 14) = Plan6.Cells(29, 3) 'tempo de aproveitamento diario mda 66
          Plan2.Cells(linha, 15) = Plan6.Cells(73, 3) 'cana moida por hora efetiva diario mda 66
          Plan2.Cells(linha, 16) = Plan6.Cells(72, 3) 'cana moida diario mda 66

          Plan2.Cells(linha, 17) = Application.WorksheetFunction.VLookup(Cells(A3).Value, Sheets("Parâmetros").[D2:J367], 2, 0) 'semanal correspondente a linha da data diária
          Plan2.Cells(linha, 18) = Plan6.Cells(12, 4) 'horas de moagem semanal geral
          Plan2.Cells(linha, 19) = Plan6.Cells(13, 4) 'horas pedidas ponderada semanal geral
          Plan2.Cells(linha, 20) = Plan6.Cells(16, 4) 'tempo de aproveitamento semanal geral
          Plan2.Cells(linha, 21) = Plan6.Cells(32, 4) 'cana moida por hora efetiva semanal geral
          Plan2.Cells(linha, 22) = Plan6.Cells(31, 4) 'cana moida semanal geral
          Plan2.Cells(linha, 23) = Plan6.Cells(19, 4) 'horas de moagem semanal mda 54
          Plan2.Cells(linha, 24) = Plan6.Cells(20, 4) 'horas pedidas semanal mda 54
          Plan2.Cells(linha, 25) = Plan6.Cells(23, 4) 'tempo de aproveitamento semanal mda 54
          Plan2.Cells(linha, 26) = Plan6.Cells(49, 4) 'cana moida por hora efetiva semanal mda 54
          Plan2.Cells(linha, 27) = Plan6.Cells(48, 4) 'cana moida semanal mda 54
          Plan2.Cells(linha, 28) = Plan6.Cells(25, 4) 'horas de moagem semanal mda 66
          Plan2.Cells(linha, 29) = Plan6.Cells(26, 4) 'horas pedidas semanal mda 66
          Plan2.Cells(linha, 30) = Plan6.Cells(29, 4) 'tempo de aproveitamento semanal mda 66
          Plan2.Cells(linha, 31) = Plan6.Cells(73, 4) 'cana moida por hora efetiva semanal mda 66
          Plan2.Cells(linha, 32) = Plan6.Cells(72, 4) 'cana moida semanal mda 66

          Plan2.Cells(linha, 33) = Application.WorksheetFunction.VLookup(Cells(A3).Value, Sheets("Parâmetros").[D2:J367], 4, 0) 'Mes correspondente a linha da data diária
          Plan2.Cells(linha, 34) = Plan6.Cells(12, 6) 'horas de moagem mensal geral
          Plan2.Cells(linha, 35) = Plan6.Cells(13, 6) 'horas pedidas ponderada mensal geral
          Plan2.Cells(linha, 36) = Plan6.Cells(16, 6) 'tempo de aproveitamento mensal geral
          Plan2.Cells(linha, 37) = Plan6.Cells(32, 6) 'cana moida por hora efetiva mensal geral
          Plan2.Cells(linha, 38) = Plan6.Cells(31, 6) 'cana moida mensal geral
          Plan2.Cells(linha, 39) = Plan6.Cells(19, 6) 'horas de moagem mensal mda 54
          Plan2.Cells(linha, 40) = Plan6.Cells(20, 6) 'horas pedidas mensal mda 54
          Plan2.Cells(linha, 41) = Plan6.Cells(23, 6) 'tempo de aproveitamento mensal mda 54
          Plan2.Cells(linha, 42) = Plan6.Cells(49, 6) 'cana moida por hora efetiva mensal mda 54
          Plan2.Cells(linha, 43) = Plan6.Cells(48, 6) 'cana moida mensal mda 54
          Plan2.Cells(linha, 44) = Plan6.Cells(25, 6) 'horas de moagem mensal mda 66
          Plan2.Cells(linha, 45) = Plan6.Cells(26, 6) 'horas pedidas mensal mda 66
          Plan2.Cells(linha, 46) = Plan6.Cells(29, 6) 'tempo de aproveitamento mensal mda 66
          Plan2.Cells(linha, 47) = Plan6.Cells(73, 6) 'cana moida por hora efetiva mensal mda 66
          Plan2.Cells(linha, 48) = Plan6.Cells(72, 6) 'cana moida mensal mda 66

          Plan2.Cells(linha, 49) = Application.WorksheetFunction.VLookup(Cells(A3).Value, Sheets("Parâmetros").[D2:J367], 5, 0) 'Ano correspondente a linha da data diária
          Plan2.Cells(linha, 50) = Plan6.Cells(12, 7) 'horas de moagem anual geral
          Plan2.Cells(linha, 51) = Plan6.Cells(13, 7) 'horas pedidas ponderada anual geral
          Plan2.Cells(linha, 52) = Plan6.Cells(16, 7) 'tempo de aproveitamento anual geral
          Plan2.Cells(linha, 53) = Plan6.Cells(32, 7) 'cana moida por hora efetiva anual geral
          Plan2.Cells(linha, 54) = Plan6.Cells(31, 7) 'cana moida anual geral
          Plan2.Cells(linha, 55) = Plan6.Cells(19, 7) 'horas de moagem anual mda 54
          Plan2.Cells(linha, 56) = Plan6.Cells(20, 7) 'horas pedidas anual mda 54
          Plan2.Cells(linha, 57) = Plan6.Cells(23, 7) 'tempo de aproveitamento anual mda 54
          Plan2.Cells(linha, 58) = Plan6.Cells(49, 7) 'cana moida por hora efetiva anual mda 54
          Plan2.Cells(linha, 59) = Plan6.Cells(48, 7) 'cana moida mensal anual 54
          Plan2.Cells(linha, 60) = Plan6.Cells(25, 7) 'horas de moagem mensal anual 66
          Plan2.Cells(linha, 61) = Plan6.Cells(26, 7) 'horas pedidas mensal anual 66
          Plan2.Cells(linha, 62) = Plan6.Cells(29, 7) 'tempo de aproveitamento anual mda 66
          Plan2.Cells(linha, 63) = Plan6.Cells(73, 7) 'cana moida por hora efetiva anual mda 66
          Plan2.Cells(linha, 64) = Plan6.Cells(72, 7) 'cana moida mensal anual 66
    
      Else
              
      End If
               
    Wend
    
End Sub


Estou enviando a pasta para os senhores me ajudar.

silvajmp

 
Postado : 07/11/2013 5:00 pm