Notifications
Clear all

Macro que localiza e substitui uma linha

8 Posts
3 Usuários
0 Reactions
1,660 Visualizações
(@moura-26)
Posts: 4
New Member
Topic starter
 

Boa tarde,

Tenho uma planilha com um interface de registros, e outra aba com uma base de dados. Na aba da base de dados, tenho uma linha (A2) que puxa automaticamente as informações da interface de registros.

Quero fazer o seguinte: sempre que eu atualizar uma informação de um registro, quero buscar ele na base de dados, e substituir a linha desse registro pela linha que puxa automaticamente (A2).

Até agora tenho a seguinte macro:

'
' Atualizar Macro
'

'
   Dim linha As Variant
   
   Dim pesquisa As String

       pesquisa = Range("E8")

       If pesquisa = "" Then Exit Sub
       
       Sheets("Base de Dados").Select
       Rows("2:2").Select
       Selection.Copy

       Set linha = .Find(what:=pesquisa, LookIn:=xIValues)
       If Not linha Is Nothing Then
           celula = linha.Address
               
               Do
               plan.Select
               linha.Select
                               
       ActiveSheet.Paste
       Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
           :=False, Transpose:=False
       Application.CutCopyMode = False
       
       Loop While Not linha Is Nothing And linha.Address <> celula
       
       End If
                           
   Sheets("Interface").Select
   MsgBox "Dados atualizados com sucesso."
 
   
End Sub

Mas essa macro não está executando. Alguém pode me ajudar a identificar o erro ou indicar uma solução melhor?

 
Postado : 25/05/2016 1:13 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Vc precisa criar um loop de busca e que grave novamente na linha selecionada.

E ao gravar precisa verificar se a informação existe se exisitir gravar na linha encontrada se nao gravar na ultima linha gravada.

Se nao conseguir disponibilize o arquivo com alguns dados

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 25/05/2016 1:21 pm
(@moura-26)
Posts: 4
New Member
Topic starter
 

MPrudencio, Eu entendi o que você sugeriu, mas não tenho conhecimento o suficiente para escrever.

Se você puder me ajudar segue a planilha.

Obrigado.

 
Postado : 25/05/2016 1:35 pm
(@mprudencio)
Posts: 2749
Famed Member
 

No seu exemplo na base de dados tem duas vezes o nome Ana é para manter os dois ou esta duplicado por erro?

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 25/05/2016 3:01 pm
(@moura-26)
Posts: 4
New Member
Topic starter
 

Não, a segunda linha é onde eu vou puxar as atualizações de cada pessoa, no exemplo estou atualizando a ana, quero copiar a primeira linha, achar onde está a pessoa que esta nela (ana), ir na linha da ana de baixo e atualizar as informações, gravando por cima das anteriores, ficando com uma ana apenas. Deu pra entender?

 
Postado : 25/05/2016 5:17 pm
(@messiasmbm)
Posts: 223
Estimable Member
 

Acho que é isso que quer...

Sub Atualizar()

On Error GoTo não_tem
 Dim lin, col
 Application.ScreenUpdating = False
 Sheets("Base de dados").Select
 Columns("A:A").Select
    Selection.Find(What:=Sheets("Interface").Range("E4"), LookAt:=xlWhole).Activate
    lin = ActiveCell.Row
    col = ActiveCell.Column

'Cells(lin, col)
Cells(lin, col + 1) = Sheets("Interface").Range("E6")
Cells(lin, col + 2) = Sheets("Interface").Range("E8")
Cells(lin, col + 3) = Sheets("Interface").Range("E9")
Cells(lin, col + 4) = Sheets("Interface").Range("E10")
Cells(lin, col + 5) = Sheets("Interface").Range("E11")
Cells(lin, col + 6) = Sheets("Interface").Range("E12")
Sheets("Interface").Select
Application.ScreenUpdating = True
Exit Sub
não_tem:
   Sheets("Interface").Select
   Application.ScreenUpdating = True
   MsgBox "O nome não foi encontrado !"
   Exit Sub
End Sub

 
Postado : 25/05/2016 9:58 pm
(@messiasmbm)
Posts: 223
Estimable Member
 

O arquivo...

 
Postado : 25/05/2016 10:05 pm
(@moura-26)
Posts: 4
New Member
Topic starter
 

Messiasmbm, é isso que eu preciso, mas o meu problema, é que a minha planilha original tem mais de 100 linhas, e a forma mais prática que eu pensei de escrever o código, é criando essa linha 2 que já puxa as informações, e depois só cola ela no nome procurado, deu pra entender? Mas de qualquer forma, valeu a ajuda!

 
Postado : 27/05/2016 6:50 am