Automatização de Re...
 
Notifications
Clear all

Automatização de Relatório

5 Posts
2 Usuários
0 Reactions
1,006 Visualizações
(@hndrade)
Posts: 3
New Member
Topic starter
 

Pessoal tudo bem?

Sou novo no fórum e tenho bom conhecimento em excel, estou aprofundando nos vba's da vida e ainda tem muito chão pra descobrir...

Basicamente preciso intercalar a informação de uma planilha em outra, transpondo algumas informações.

Na planilha anexa temos 21 eventos (Coluna C a W) de reposição que todos os meses as referências (em horas) são lançadas manualmente

Neste caso precisaríamos de um conversor vba que pudesse transpor os eventos da planilha “Cálculo Reposições” e copiar as matrículas na coluna A, repetindo-as caso necessário, numa outra em branco, que fosse criada na hora.

OBS: O vba teria de conferir em todas as respectivas colunas dos 21 eventos procurando informações e ignorando células em branco :)

Anexei algumas imagens auto-explicativas para melhor entendimento:

E precisa ficar assim: (*sem a linha 11 que serve apenas para explicação deste exemplo)

Alguma ideia para esta transposição com informações fixas?

 
Postado : 16/05/2017 8:05 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde hndrade,

Veja se o código no módulo1 do arquivo em anexo traz os resultados desejados. Os valores estarão na planilha 'Auxiliar'.

att,

 
Postado : 16/05/2017 3:11 pm
(@hndrade)
Posts: 3
New Member
Topic starter
 

Boa noite brunoxro!

Muito bom meu caro, é praticamente o que eu precisava!!

A única diferença é que na planilha original a coluna de data (201705) se repete e também não é data em sí mas sim da forma em que escrevi entre parêntesis, mas isso pode ser facilmente resolvido com um inputbox

* como está planilha não possui cabeçalho, onde eu altero no código pra que comece a lançar nas primeira linha?

A única coisa que alterei é a abrangência das colunas que estava de 9 até 23 e mudei para 3 a 23, fora isso está perfeito!

 
Postado : 16/05/2017 4:47 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

hndrade,

Teste as alterações que fiz no código:

Sub Organizar_Valores02()
    
    Dim WsLan       As Worksheet: Set WsLan = Sheets("Lançamentos")
    Dim WsAux       As Worksheet: Set WsAux = Sheets("Auxiliar")
    
    Dim i           As Double
    Dim k           As Double
    Dim Nlin        As Double
    Dim Lin         As Double
    
    Dim Matr        As String
    Dim Cod         As String
    Dim Mes         As Variant
    
    Nlin = WsLan.Range("A1048575").End(3).Row
    
    WsLan.Select
    
    Lin = WsAux.Range("A1048575").End(xlUp).Row + 1
    
    If Lin = 2 Then
        Lin = 1
    End If
    
    For i = 4 To Nlin
        
        For k = 3 To 23
            
            If Cells(i, k).Value <> Empty Then
                
                Matr = UCase(Trim(Cells(i, 1).Value))
                Cod = UCase(Trim(Cells(2, k).Value))
                
                If Month(Now) < 10 Then
                    Mes = 0 & Month(Now)
                ElseIf Month(Now) >= 10 Then
                    Mes = Month(Now)
                End If
                
                'Joga os valores para a planilha Auxiliar
                With WsAux.Cells(Lin, 1)
                    .Value = CStr("R")
                    .Offset(0, 1).Value = CByte(1)
                    
                    .Offset(0, 2).Value = Matr
                    .Offset(0, 3).Value = Cod
                    'Ano e Mês do computador
                    .Offset(0, 4).Value = Year(Now) & Mes
                    .Offset(0, 5).Value = Year(Now) & Mes
                    
                    .Offset(0, 6).Value = Cells(i, k).Value
                    
                    .Offset(0, 7).Value = CByte(0)
                    .Offset(0, 8).Value = CByte(0)
                    
                End With
                
                Lin = WsAux.Range("A1048575").End(xlUp).Row + 1
                
            End If
        
        Next k
    
    Next i
    
End Sub

Se seu problema foi resolvido, não esqueça de marcar o tópico como Respondido.

att,

 
Postado : 16/05/2017 7:27 pm
(@hndrade)
Posts: 3
New Member
Topic starter
 

Exatamente!

Muito obrigado pelo apoio!!

 
Postado : 17/05/2017 4:54 am