Notifications
Clear all

Re-(ajuda) em código VBA

4 Posts
2 Usuários
0 Reactions
1,064 Visualizações
(@coiote_25)
Posts: 42
Trusted Member
Topic starter
 

Boa noite, a todos os colegas e visitantes do forum.

Peço desculpa por estar a abrir novamente este tópico, mas com receio que não fosse respondido, tomei a liberdade de o fazer. Solicito aos admnistradores que o removam assim que estiver marcado como resolvido.

Alexandre, se não for muito inconveniente, tem como se adaptar o código que fez para a folha de cálculo anterior, para as novas alterações que eu fiz nesta folha, que anexo? Isto é, houve a necessidade de inserir duas novas colunas (A e B) na folha "NOVA.B.D", de forma a identificar a localização das respetivas peças. Ao inserir estas colunas, o código deixou de funcionar. Tentei adaptar o anterior mas não estou a conseguir.

Outra alteração que eu pretendo, é que em vez da macro copiar os dados da folha "BASE.DADOS.ANTIGA", passe a cortar e colar na folha "NOVA.B.D".

Em anexo segue a folha de cálculo, para ver se me consegue ajudar.

http://www.4shared.com/rar/CPKnynQM/PROCVV2.html

Um grande obrigado.

Cumprimentos

 
Postado : 19/12/2012 6:57 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Tente assim...

Sub AutPROCV_AleVBA()
    Dim lr As Long
    With Sheets("NOVA.B.D")
        lr = .Cells(.Rows.Count, "D").End(xlUp).Row ' + 1
        With .Range("E2:J" & lr)
            .Formula = "=IF($D2<>"""",VLOOKUP($D2,BASE.DADOS.ANTIGA!$A$2:$G$16980,COLUMN()-3,0),"""")"
            .Value = .Value
        End With
    End With
End Sub
 
Postado : 20/12/2012 7:27 am
(@coiote_25)
Posts: 42
Trusted Member
Topic starter
 

Boa tarde Alexandre,

Origado pela rápida resposta ao meu pedido.

Não sei se me fiz entender, mas precisava que o código procurasse na folha "BASE.DADOS.ANTIGA" o valor X, copiasse para a folha "NOVA.B.D" e que eliminasse a respetiva linha na folha "BASE.DADOS".

É possivel?

Cumprimentos

 
Postado : 20/12/2012 10:16 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

tente Assim

Sub AutPROCV_AleVBA()
    Dim lr As Long
    With Sheets("NOVA.B.D")
        lr = .Cells(.Rows.Count, "D").End(xlUp).Row
        With .Range("E2:J" & lr)
            .Formula = "=IF($D2<>"""",VLOOKUP($D2,BASE.DADOS.ANTIGA!$A$2:$G$16980,COLUMN()-3,0),"""")"
            .Value = .Value
        End With
    End With
    Call EncontrarDeletar_AleVBA
End Sub

Sub EncontrarDeletar_AleVBA()
Dim lngLast As Long
Dim lngCounter As Long
Dim wsBase As Worksheet
Dim wsNova As Worksheet
Dim rngFound As Range

Set wsBase = Worksheets("BASE.DADOS.ANTIGA")
Set wsNova = Worksheets("NOVA.B.D")

With wsNova
  lngLast = .Cells(Rows.Count, "D").End(xlUp).Row
  For lngCounter = 2 To lngLast
    Set rngFound = wsBase.Columns(1).Find(what:=.Cells(lngCounter, "D").Value)
    If Not rngFound Is Nothing Then
      .Cells(lngCounter, "E").Resize(1, 6).Value = rngFound.Offset(0, 1).Resize(1, 6).Value
      rngFound.EntireRow.Delete
    End If
  Next lngCounter
End With

Set wsNova = Nothing
Set wsBase = Nothing
End Sub
 
Postado : 22/12/2012 11:31 am