Notifications
Clear all

Dividir dados em Abas separadas

9 Posts
3 Usuários
0 Reactions
1,771 Visualizações
(@digo203)
Posts: 117
Estimable Member
Topic starter
 

Boa Noite amigos!

A pouco tempo atras precisei de uma ajuda de vcs do site e o amigo Edcronos me ajudou muito com uma macro que precisava fazer. Esta me ajudando d+.

Agora necessito de mais uma ajuda para fazer algumas alteraçoes em outra planilha usando basicamente a mesma regra.

Atraves do codigo abaixo que o amigo Edcronos me passou, uma planilha procura dados de codigos que necessito, copia esses dados e cola em outra aba:

Sub procuracola()
Dim n As Long, F As Long, Lin As Long

Lin = Sheets("Consolidado").Cells(Rows.Count, 4).End(xlUp).Row + 1
F = Range(Cells(1, 4), Cells(Rows.Count, 4).End(xlUp)).Rows.Count
For n = 1 To F
If Cells(n, 4).Value = "D661" Or Cells(n, 4).Value = "D761" Then
With Sheets("Consolidado")
.Range(.Cells(Lin, 1), .Cells(Lin, 16)).Value2 = Range(Cells(n, 1), Cells(n, 16)).Value2
Lin = Lin + 1
End With
End If
Next
End Sub

Desta vez gostaria de fazer a mesma coisa, porem quando cada dado fosse encontrado e macro colasse em abas renomeadas com o mesmo nome da pessoa dos dados procurados.

Deixei em anexo a planilha que o Edcronos fez para mim e seu funcionamento, e a planilha Teste que é um esboço do que eu gostaria de fazer.

Obrigado.

 
Postado : 18/07/2014 5:06 pm
(@digo203)
Posts: 117
Estimable Member
Topic starter
 

Ola pessoal!

Podem me ajudar?

Eu inseri uma outra linha no codigo copiando uma parte para tentar colar em outra aba, porem nao consigo.

Como infelizmente nao entendo muito de macros, estou apanhando para formatar da forma que preciso.

Sub procuracola()
Dim n As Long, F As Long, Lin As Long

Lin = Sheets("Consolidado").Cells(Rows.Count, 4).End(xlUp).Row + 1
F = Range(Cells(1, 3), Cells(Rows.Count, 3).End(xlUp)).Rows.Count
For n = 1 To F
If Cells(n, 17).Value = "AGRAMOS" Then
With Sheets("Consolidado")

If Cells(n, 17).Value = "ANDRESSASA" Then
With Sheets("2")

.Range(.Cells(Lin, 1), .Cells(Lin, 18)).Value2 = Range(Cells(n, 1), Cells(n, 18)).Value2
Lin = Lin + 1
End With
End If
Next
End Sub

Nas tentativas de incluir outra aba, eu inseri o linha em negrito porem me da o Erro de Compilação Next sem For.

Alguem pode me ajudar apenas como eu insiro outras abas nesse codigo?

Abraços,

 
Postado : 19/07/2014 5:29 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Isso ajuda?

Sub AleVBA_12588()
    Dim bottomD As Integer
    bottomD = Range("A" & Rows.Count).End(xlUp).Row
    Dim c As Range
    Dim ws As Worksheet
    Application.ScreenUpdating = 0
    For Each c In Sheets("Lançamento Manual").Range("A3:P" & bottomD)
        For Each ws In Sheets
            ws.Activate
            If ws.Name = c Then
                c.EntireRow.Copy Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
            End If
        Next ws
    Next c
    Application.ScreenUpdating = 1
End Sub

Att

 
Postado : 19/07/2014 5:46 pm
(@digo203)
Posts: 117
Estimable Member
Topic starter
 

Alexandre Boa Noite!

Infelizmente nao deu certo.

A macro nao esta trazendo os dados para as abas, ela roda e nao da nenhum erro, poremos dados nao estao sendo copiados e colados em suas respectivas abas.

Sabe o que pode ser?

Abraços,

 
Postado : 19/07/2014 6:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!

Sinceramente eu não sei, em meus testes, se tem uma guia chamada "AleVBA" e na guia "Lançamento Manual" tem os dados em um ou mais linhas onde na coluna "Usuários" tem o nome da guia , esses dados são copiados para a guia "AleVBA".

Att

 
Postado : 19/07/2014 6:16 pm
(@digo203)
Posts: 117
Estimable Member
Topic starter
 

Poxa estranho, tentei aqui e realmente não está dando certo, mas obrigado pela ajuda.

Quanto ao primeiro código você consegue altera—lo para aceitar outras abas???

 
Postado : 19/07/2014 7:52 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Está dando errado, porque algumas pessoas tem uma doença chamada células mescladas e colunas ou linhas vazias!!
Eu odeio celulas mescladas, do fundo do meu coração!!!!!!!!!!!!!! :evil: :evil:

Veja no meu arquivo modelo
https://www.sendspace.com/file/jo8vut

Att

 
Postado : 19/07/2014 8:02 pm
(@edcronos)
Posts: 1006
Noble Member
 

digo203

existe uma inconsistência no seu pedido

If Cells(n, 17).Value = "AGRAMOS" Then
With Sheets("Consolidado")

nesse caso não vai para a planilha de mesmo nome.
o nomes das planilhas tem que ser exatamente iguais para se fazer oq vc quer

Como o Alexandre falou células mescladas prejudicam trabalhos na planilha e tem que ficar limitadas as primeiras linhas onde não tenha dados utilizáveis, ou em abas de limitadas a apenas visual.

para melhor entendimento
troque os dados sigilosos e poste uma planilha mais completa
Se a area de buscada for limitada a uma Range, discrimine a range a ser utilizada.

Evite uso de células mescladas,
vai evitar muita dor de cabeça futuramente quando tiver que adicionar mais dados

se tiver que fazer separação de linhas,
coloque um cabeçalho na coluna "A" para indicar oq cada linha representa.
podendo até ser usada em formulas e macros.

-------------------------------------------------------
Ps.
Eu também sou um mero usuário do fórum.
E além de procurar soluções, eu procuro aprender "apesar de não ganhar nada com o Excel"

Att.

 
Postado : 20/07/2014 2:55 pm
(@edcronos)
Posts: 1006
Noble Member
 

tentei fazer um aqui que funcionasse mesmo com células mescladas.
Mas não bate,
Os nomes das ABAS e as indicações na coluna "P" são diferentes

Em vez de usar o nome da "ABA" use o NOME em umas das celulas da planilha

Tem que rodar a partir da planilha que vai colar os dados

Sub Macro1()
    Lin = Cells(Rows.Count, "P").End(xlUp).Row + 1
    Plan_nam = Cells(lin-1, "P").value2'<<--pega o ultimo valor da coluna "P" como nome procurado

    With Sheets("Lançamento Manual")
        .AutoFilterMode = False
        nilin = .Cells(3, "P").End(xlDown).Row
        .Cells(nilin, "P").AutoFilter Field:=15, Criteria1:= _
                Plan_nam
        .Range("$B$3", "P" & nilin).Copy
        Cells(Lin, "B").PasteSpecial Paste:=xlPasteValues
    End With
End Sub

assim vc podera usar o nome que quiser na planilha

att

 
Postado : 20/07/2014 4:03 pm