Notifications
Clear all

Base de Dados SAP + Manual

13 Posts
2 Usuários
0 Reactions
2,050 Visualizações
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

Boa noite,

Estou com dificuldades em resolver um problema.

Tenho uns dados que retiro do SAP e outros dados é feito manual.

Gostaria de sempre que atualizasse os clientes na guia 'SAP'

A guia "TB.BASE" fosse atualizada com o cliente novo.

Se não existesse a possibilidade de algum cliente saisse da ordem não teria problema...

Eu iria colar por cima da base do SAP.

Mas pode ocorrer na linha do meio o cliente ser diferente e todos os dados manuais ficariam fora da ordem.

Não sei se deu pra explicar direito.

 
Postado : 26/02/2015 1:56 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

O que deseja seria, quando exportar os dados do SAP colar na guia SAP e a guia TB.BASE inserir apenas os clientes que ainda não estão na guia TB.BASE?

Att

 
Postado : 26/02/2015 7:04 pm
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

Correto alexandrevba,

Porque como existe a possibilidade dos clientes saírem da ordem.

Se eu colocar diretamente na TB.BASE os dados manuais dos clientes vão ficar todos foram de ordem.

 
Postado : 27/02/2015 11:07 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Se eu entendi bem, na guia SAP, tem a seguinte linha (que eu inclui).
24/02/2015 S135 Venda Incorporação Cliente 1000 Imobiliaria 28

Como exemplo, tem a guia AleVBA, nela há um botão, execute ele, veja se seria isso..

Att

 
Postado : 27/02/2015 12:11 pm
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

alexandre,

Boa noite,

Ainda não é isso, anexei um novo arquivo que destaquei exatamente o que preciso.

Na guia SAP simulei uma atualização onde duas linhas de vermelho são novos clientes.

Preciso que esses clientes sejam colocados na guia TB.BASE nas últimas linhas vazias.
Devido aos dados manuais eu não posso copiar e colar na TB.BASE se não ficam fora de ordem.

 
Postado : 28/02/2015 7:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Mas você não tentou adaptar?

Option Explicit
Sub AleVBA_14791V2()
    Dim ResultSheet As String:          ResultSheet = "TB.BASE"
    Dim FirstSheet As String:           FirstSheet = "TB.BASE"
    Dim SecondSheet As String:          SecondSheet = "SAP"
    Dim FirstSheetDataCol As String:    FirstSheetDataCol = "E"
    Dim SecondSheetDataCol As String:   SecondSheetDataCol = "E"
    
    Dim rngData1 As Range:  Set rngData1 = Sheets(FirstSheet).Range(FirstSheetDataCol & "2:" & _
                                           Sheets(FirstSheet).Cells(Rows.Count, FirstSheetDataCol).End(xlUp).Address)
    Dim rngData2 As Range:  Set rngData2 = Sheets(SecondSheet).Range(SecondSheetDataCol & "2:" & _
                                           Sheets(SecondSheet).Cells(Rows.Count, SecondSheetDataCol).End(xlUp).Address)
    
    Dim aCell As Range
    For Each aCell In rngData2
        If rngData1.Find(aCell.Value) Is Nothing Then
            Sheets(ResultSheet).Range("A" & Rows.Count).End(xlUp).Offset(1, 0).EntireRow.Value = aCell.EntireRow.Value
        End If
    Next aCell
    
End Sub

Veja se ajuda..

Att

 
Postado : 01/03/2015 7:33 am
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

Consegui adaptar o código sim.

Está funcionando beleza.

Gostaria de saber só como é feita a procura dos dados.

Pois fico com receio de repetir os dados.

O código está procurando por quais valores para a verificação dos dados ?

 
Postado : 02/03/2015 10:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Apartir da coluna E de cada guia em que se haverá a comparação, se os dados do rngData2 (Dim SecondSheet As String: SecondSheet = "SAP") caso o rngData1 (Dim FirstSheet As String: FirstSheet = "TB.BASE") não seja correpondente, então copia para Sheets(ResultSheet).

Att

 
Postado : 02/03/2015 11:11 am
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

Entendi, eu precisava que essa condição dosse duas colunas.

Fiz um Concatenar de duas colunas e coloquei no 'SAP' e 'TB.BASE'

Mas ai não localiza porque acho que é fomula.

Tem algum outro jeito ?

No mais o código está tudo certo.

 
Postado : 02/03/2015 11:32 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Mas quais colunas além..........da coluna E

Dim FirstSheetDataCol As String:    FirstSheetDataCol = "E"
    Dim SecondSheetDataCol As String:   SecondSheetDataCol = "E"

Att

 
Postado : 02/03/2015 12:25 pm
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

Seriam as colunas "J" (Documento SD) e "E" (Cliente)"

Pois força um 'concatenar' do Cliente com um número de documento.

 
Postado : 02/03/2015 12:44 pm
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

Boa tarde alexandre,

Estou com outro probleminha no código e não consegui resolver.

Na linha " Sheets(ResultSheet).Range("B" & Rows.Count).End(xlUp).Offset(1, 0).EntireRow.Value = aCell.EntireRow.Value"

Ela está colando a linha por completo correto?

Preciso que seja copiado por exemplo: Da coluna B à Z e colocado na coluna B de TB.BASE

Tentei modificar esse código mas não consegui.

 
Postado : 03/03/2015 11:31 am
(@brunoafs)
Posts: 195
Reputable Member
Topic starter
 

alexandrevba,

Está certo esse código?

        If rngData1.Find(aCell.Value) Is Nothing Then
            
            Sheets(SecondSheet).Range("B" & aCell.Row & ":Q" & aCell.Row).Copy
            Sheets(ResultSheet).Range("C" & Rows.Count).End(xlUp).Offset(1, 0).Select
            ActiveSheet.Paste
            Application.CutCopyMode = False
            
        End If
 
Postado : 03/03/2015 12:14 pm