Adaptação de Código...
 
Notifications
Clear all

Adaptação de Código Substituir valores

7 Posts
3 Usuários
0 Reactions
2,006 Visualizações
(@erlher)
Posts: 19
Active Member
Topic starter
 

Boa tarde.

Não consegui localizar nada que me ajude neste sentido aqui.
Tenho uma planilha com cerca de 2500 registros de centros de custo da empresa, porém para alguns relatórios eu preciso unificá-los desta forma utilizo o código abaixo.

  For i = 1 To Ultima_Linha
    Range("D" & i).Select
    vResultado = Range("D" & i).Value Like "11022*"
    
    If vResultado Then
       Range("D" & i).Value = "Vitória"
       vContador = vContador + 1

  End If
  Next

Os centros de custo possuem 9 digitos, sendo que os 5 primeiros que define o que eu preciso, e é uma constante desta forma a macro acima analisa somente os 5 primeiros dígitos e efetua a substituição.
Meu problema é Tenho cerca de 50 Unidades, e elas vão aumentando gradativamente, desta forma sempre que adiciono uma nova preciso adicionar uma cópia deste código para efetuar a leitura e substituir.

Gostaria de saber se existe uma forma de o valor definido em "Value Like "11022*"" e "Value = "Vitória"" serem dados de uma planilha, evitando repetir o código várias vezes, e evitando que sempre que necessário eu tenha que acessar a planilha, ou seja, ficaria definido um range de uma planilha onde o próprio usuário poderia adicionar os valores, tipo Coluna A valor a pesquisar e Coluna B valor a ser inserido.

Não sei se consegui me expressar bem, todavia conto com a ajuda de vocês.

 
Postado : 08/03/2017 2:10 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde Erlher,

Se entendi bem, você quer uma tabela fixa com os valores das Unidades e a partir dela pesquisar na base de dados.
É possível fazer isso, acredito que usando duas rotinas de repetição (uma para pegar o valor da tabela fixa e outra para os valores da base de dados) resolva.

Anexe uma planilha de exemplo, não precisa ter os dados originais mas a mesma estrutura, que fica mais fácil ajudar.

att,

 
Postado : 08/03/2017 2:20 pm
(@erlher)
Posts: 19
Active Member
Topic starter
 

Bom dia.

Segue a planilha modelo em anexo.
O que o código em questão faz é ler a coluna D e de acordo com os 5 primeiros caracteres me informa a coluna E.
A minha ideia como disse no início é arrumar uma forma de reduzir o código e deixar a planilha mais acessível para usuários com conhecimento zero de VBA.
A base com o que inserir na coluna E ficaria em uma aba diferente.
Eu consigo fazer isso com PROCV mais queria algo em VBA.

Obrigado pelo apoio.

 
Postado : 09/03/2017 7:28 am
hronconi
(@hronconi)
Posts: 314
Reputable Member
 
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("Código")) Is Nothing Then
        If Application.Intersect(Target, Range("Código")).Value Like "11022*" Then
            Application.Intersect(Target, Range("Código")).Cells(1, 2).Value = "CUSTO1"
        End If
    End If
    
End Sub

Nomeie a região que recebe os códigos como "Código"

Henrique
http://henriqueronconi.wix.com/consultoria

Espero ter ajudado! ;)

 
Postado : 09/03/2017 7:42 am
(@erlher)
Posts: 19
Active Member
Topic starter
 

Desculpe a minha ignorância, mais não consegui compreender, ou talvez não soube explicar o que quero.

Anexei novamente o arquivo com 2 abas.
A minha ideia é que ao invés de fazer várias cópias do código, ele iria procurar o valor da coluna A da Aba C.CUSTOS na coluna D da Aba DADOS e inserir o valor da coluna B da Aba C.CUSTOS na coluna E da Aba DADOS.
Acho que consegui explicar +-.

Mais uma vez desculpe a ignorância.

 
Postado : 09/03/2017 11:05 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Erlher,

Veja o código que montei, está no módulo1 da planilha em anexo.

No caso, basta ir adicionado os valores na tabela 'C.CUSTOS' (colunas A e B), que a comparação e colocação dos valores vai ser feita na sequência.

Teste e de retorno.

att,

 
Postado : 09/03/2017 9:14 pm
(@erlher)
Posts: 19
Active Member
Topic starter
 

brunoxro

Exatamente o que eu precisava, muito obrigado.

 
Postado : 10/03/2017 5:32 am