Notifications
Clear all

Transformar formula Indice + Corresp para VBA

9 Posts
3 Usuários
0 Reactions
2,062 Visualizações
(@rbarbosa17)
Posts: 7
Active Member
Topic starter
 

Olá pessoal tudo bem?
Estou na fase de aprender sobre VBA e excel, sou do tipo "curioso" gosto de pesquisar e de conseguir ir criando o que preciso muitas vezes quebrando a cabeça na base da tentativa e erro kkk

Agora estou em uma situação que não tenho ideia como resolver, estou tentando criar uma seção de cadastro de vendas usando um userform, o que preciso é que ao selecionar o produto na comboBox "ProdutoComboBox" e o valor na combobox "TipoComissaoComboBox" Aparecer o preço de referencia no textbox "ValorUnitario" pois dependendo da opção que estiver na combobox "TipoComissaoComboBox" o valor unitario muda.

Tinha feito isso antes na tabela que criei usando Indice + Corresp porque tinha que associar um valor de uma linha com um que estava na coluna.

Espero que vocês possam me ajudar me dando uma luz em como posso fazer isso, e que eu tenha conseguido explicar direitinho o que eu to pensando em fazer kkk

Desde já agradeço a atenção de vocês

Obs:. Não consegui anexar a tabela porque está dando erro então upei-la no mega o link é https://mega.nz/#!wwUkFLLC!sszrWMNq-ZVD ... a4eaVryWkg

 
Postado : 26/08/2016 6:03 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Seria algo +/- assim

'determina em que linha está o produto
nRow=Application.Match(ProdutoComboBox, SuaSheet.Range("A1:A200"), 0)

'Determina a coluna da comissão tipo
nCol=Application.Match(TipoComissaoComboBox, Ssuasheet.Range("A1:NB1"), 0)

'Determina o valor (linhaXColuna)
ValorUnitario=SuaSheet.cells(nRow,nCol)

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

 
Postado : 27/08/2016 6:53 am
(@rbarbosa17)
Posts: 7
Active Member
Topic starter
 

Sim, é para no momento que selecionar o produto, e o tipo de comissão ele exibir o valor do preço do produto, que pode variar dependendo do tipo de comissão. Tentei aplicar na tabela de exemplo esse codigo de você passou fazendo as alterações mas não consegui, tinha como me orientar? obrigado

 
Postado : 27/08/2016 9:08 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde rbarbosa17

Seja bem-vindo ao fórum!

Se você não postar uma planilha de exemplo, fica dificil do pessoal ajudar.

Para facilitar a tua participação no fórum, sugiro tomar conhecimento do conteúdo dos links abaixo:

viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s

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

 
Postado : 27/08/2016 11:00 am
(@rbarbosa17)
Posts: 7
Active Member
Topic starter
 

Irei ler sim, eu postei um link para baixar a tabela, tentei anexar mas não consegui, acho que pode ser devido ao tamanho dela, tentarei reduzir e se conseguir tento anexar de novo.

 
Postado : 27/08/2016 11:39 am
(@rbarbosa17)
Posts: 7
Active Member
Topic starter
 

Consegui diminuir o tamanho da tabela, o que eu queria fazer era o que consegui fazer na planilha cadastro de vendas só que fazer isso no userform

 
Postado : 27/08/2016 2:21 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde rbarbosa17,

O motivo da sua tabela estar muito grande mesmo não tendo nenhum dado é porque você pintou as células.
A dica que dou é nunca pintar, enfeitar,... se não for necessário.
Se é um banco de dados que a pessoa nem vai ver, não edite a tabela ,dependendo da forma que você edita ela pode ficar desnecessariamente grande.

att,

 
Postado : 27/08/2016 2:46 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

de acordo com seu modelo a formula utilizada na planilha é
ÍNDICE('Lista de Produtos'!H10:$K$1048576;CORRESP('Cadastro de Vendas'!$B$9;'Lista de Produtos'!A10:$A$1048576;0);CORRESP('Cadastro de Vendas'!B17;'Lista de Produtos'!$H$9:$K$9;0))
onde:
'Cadastro de Vendas'!$B$9 -->Determina o produto e 'Lista de Produtos'!A10:$A$1048576 --> Determina a range com os produtos, corresp retorna então a linha desse produto

'Cadastro de Vendas'!B17-->Determina o Valor e 'Lista de Produtos'!$H$9:$K$9 -->Determina a range com os valores, corresp retorna então a linha desse produto

e Indice retorna a intersecção dessa linha X coluna.

Assim na folha de código de seu formulário cole a rotina abaixo e teste

Private Sub TipoComissaoComboBox_Change()
'determina em que linha está o produto

nRow = Application.Match(ProdutoComboBox.Value, Sheets("Lista de Produtos").Range("A1:A1048576"), 0)

'Determina a coluna da comissão tipo
nCol = Application.Match(TipoComissaoComboBox.Value, Sheets("Lista de Produtos").Range("A9:k9"), 0)

'Determina o valor (linhaXColuna)
ValorUnitario.Text = Format(Sheets("Lista de Produtos").Cells(nRow, nCol).Value, "#.00")
End Sub

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

 
Postado : 27/08/2016 7:38 pm
(@rbarbosa17)
Posts: 7
Active Member
Topic starter
 

Era exatamente isso que eu estava precisando Reinaldo muito obrigado pela ajuda, me ajudou bastante em meu projeto. Abraços.

 
Postado : 28/08/2016 5:52 am