Notifications
Clear all

Ajuda no VBA

15 Posts
1 Usuários
0 Reactions
1,381 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Senhores,
Estou otimizando uma planilha e necessito de ajuda.

Tenho uma aba "CONTROLE" que é atualizada com os dados de outras duas "PMP" e "LOCALIZAÇÂO" quando "clico" no botão atualizar ele atualiza somente os dados vindo do "PMP" e não da "LOCALIZAÇÂO". Abaixo o que escrevi, perdoe a má arrumação.

Private Sub CommandButton1_Click()

lin = 3
linha = 8

Do Until Sheets("PMP").Cells(lin, 1) = ""

If Sheets("PMP").Cells(lin, 1) <> "" Then
Sheets("CONTROLE").Cells(linha, 1) = Sheets("PMP").Cells(lin, 1)
Sheets("CONTROLE").Cells(linha, 2) = Sheets("PMP").Cells(lin, 2)
Sheets("CONTROLE").Cells(linha, 4) = Sheets("PMP").Cells(lin, 5)
Sheets("CONTROLE").Cells(linha, 5) = Sheets("PMP").Cells(lin, 11)
Sheets("CONTROLE").Cells(linha, 6) = Sheets("PMP").Cells(lin, 13)
Sheets("CONTROLE").Cells(linha, 7) = Sheets("PMP").Cells(lin, 10)
Sheets("CONTROLE").Cells(linha, 8) = Sheets("PMP").Cells(lin, 14)
Sheets("CONTROLE").Cells(linha, 9) = Sheets("PMP").Cells(lin, 16)
linha = linha + 1
End If
lin = lin + 1
Loop

J = 4
H = 8

Do Until Sheets("LOCALIZAÇÃO").Cells(J, 14) = ""

If Sheets("LOCALIZAÇÃO").Cells(J, 14) = Sheets("CONTROLE").Cells(H, 1) Then
Sheets("CONTROLE").Cells(H, 3) = Sheets("LOCALIZAÇÃO").Cells(J, 13)
H = H + 1
End If
J = J + 1
Loop
End Sub

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

 
Postado : 04/02/2014 9:07 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!

Seria possível postar seu arquivo modelo?

Att

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

 
Postado : 04/02/2014 10:19 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Alexandre,

Segue arquivo

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

 
Postado : 04/02/2014 12:29 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Só preciso de uma pequena luz

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

 
Postado : 04/02/2014 8:06 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Experimente assim:

Private Sub CommandButton1_Click()

lin = 3
linha = 8

Do Until Sheets("PMP").Cells(lin, 1) = ""

If Sheets("PMP").Cells(lin, 1) <> "" Then
   Sheets("CONTROLE").Cells(linha, 1) = Sheets("PMP").Cells(lin, 1)
   Sheets("CONTROLE").Cells(linha, 2) = Sheets("PMP").Cells(lin, 2)
   Sheets("CONTROLE").Cells(linha, 4) = Sheets("PMP").Cells(lin, 5)
   Sheets("CONTROLE").Cells(linha, 5) = Sheets("PMP").Cells(lin, 11)
   Sheets("CONTROLE").Cells(linha, 6) = Sheets("PMP").Cells(lin, 13)
   Sheets("CONTROLE").Cells(linha, 7) = Sheets("PMP").Cells(lin, 10)
   Sheets("CONTROLE").Cells(linha, 8) = Sheets("PMP").Cells(lin, 14)
   Sheets("CONTROLE").Cells(linha, 9) = Sheets("PMP").Cells(lin, 16)
   linha = linha + 1
End If
lin = lin + 1
Loop


J = 4
'H = 8

Do Until Sheets("LOCALIZAÇÃO").Cells(J, 14) = ""
nloc = Application.Match(Sheets("LOCALIZAÇÃO").Cells(J, 14), Sheets("CONTROLE").Range("A8:A10000"), 0)
If Not IsError(nloc) Then 'Sheets("LOCALIZAÇÃO").Cells(J, 14) = Sheets("CONTROLE").Cells(H, 1) Then
   Sheets("CONTROLE").Cells(nloc, 3) = Sheets("LOCALIZAÇÃO").Cells(J, 13)
   'H = H + 1
   End If
   J = J + 1
   Loop
   End Sub

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

 
Postado : 05/02/2014 7:13 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Quase perfeito....mas ele está atualizando a partir da linha 1 e não da 8...só falta a cereja do bolo

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

 
Postado : 05/02/2014 9:14 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não entendi, mas experimente -->Altere: Sheets("CONTROLE").Cells(nloc, 3) = Sheets("LOCALIZAÇÃO").Cells(J, 13)
para: Sheets("CONTROLE").Cells(nloc+7, 3) = Sheets("LOCALIZAÇÃO").Cells(J, 13)

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

 
Postado : 05/02/2014 9:25 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Reinaldo...ainda não, ele atualiza a coluna como queria mais a partir da 1ª linha e não da 8ª da planilha de control2

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

 
Postado : 05/02/2014 9:40 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Me diga o objetivo da "atualização" é "pegar" o código em Controle e atualizar em Localização ou o inverso.

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

 
Postado : 05/02/2014 9:53 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

O Inverso....A aba CONTROLE recebe informações da aba PMP e aba LOCALIZAÇÂO...

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

 
Postado : 05/02/2014 10:00 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Então, entendo que esteja se referindo a segunda parte do código.
A modificação que propus faz o seguinte: Pega na Aba localização na célula N4 o codigo do patrimonio, procura esse codigo na aba controle coluna A, e encontrando altera na aba controle na coluna C a descrição. Então não estou entendendo o porque da linha 1. Pode me exemplificar
No seu modelo a procura encontra o primeiro valor de LOCALIZACAO!N6 em CONTROLE!A77 , ou seja N4 e N5 não estão em Controle
veja o trecho comentado

J = 4
'Inicia na aba Localização linha 4, e vai até não haver + registros
Do Until Sheets("LOCALIZAÇÃO").Cells(J, 14) = ""
    'Procura na aba controle o numero do patrimonio na aba Localização e retorna a linha onde o registro está
    nloc = Application.Match(Sheets("LOCALIZAÇÃO").Cells(J, 14), Sheets("CONTROLE").Range("A1:A10000"), 0)
    'Se achou o numero do patrimonio
    If Not IsError(nloc) Then
        'Altera na aba controle a descrição do partimonio, conforme está em localização
        Sheets("CONTROLE").Cells(nloc, 3) = Sheets("LOCALIZAÇÃO").Cells(J, 13)
    End If
J = J + 1
Loop

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

 
Postado : 05/02/2014 10:36 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Reinaldo

A primeira parte atualiza corretamente a segunda também, porém inicia a partir da C1.
Eu inicio a planilha de CONTROLE buscando os dados da planilha PMP que vem sem ordenamento e só então busco a coluna C em LOCALIZAÇÃO

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

 
Postado : 05/02/2014 1:18 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Sinto muito, não estou entendendo, nada no código remete a c1

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

 
Postado : 05/02/2014 1:46 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Reinaldo,

Sua solução estava correta, introduzi um comando clear para limpar as células e atualizou corretamente....Obrigado.

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

 
Postado : 05/02/2014 2:45 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caso seja necessário reabrir o tópico, o autor poderá enviar uma MP para um dos moderadores solicitando o desbloqueio.

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

 
Postado : 06/02/2014 9:45 am