Você está na página 1de 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 1 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 2 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

ADMINISTRANDO ESTOQUES NO EXCEL


1 - INTRODUO Mais uma vez vamos tratar de um assunto muito procurado por todos que administram um negcios e possuem em seus ativos estoques de materiais e mercadorias, um controle eficiente e de baixo custo e que s o Excel pode fazer. Vamos explicar passo a passo como fazer um aplicativo de controle de estoque, que atravs de formulrios o usurio poder cadastrar novas categorias de produtos, o usurio poder incluir e baixar produtos com muita facilidade e por fim poder calcular o preo de venda utilizando o mtodo Mark-On, que utiliza um percentual fixo para a apurao do preo final das mercadorias para venda. Utilizaremos como exemplo estoque de uma pequena adega e controlaremos as bebidas que so comercializadas.

O mais importante neste tutorial so as funes que aqui explicaremos passo a passo e tambm a manipulao de um formulrio que controlar as vrias planilhas que serviro para a armazenagem dos estoques, afinal de contas esse o sonho de todos desenvolvedores de Excel, aprender a manipular os formulrios do VBA ( Visual basic para aplicativos).

No tutorial anterior sobre estoques, uma nica planilha era utilizada para armazenar todo estoque, neste utilizaremos um novo mtodo: vrias planilhas so utilizadas para o controle de estoque, ou seja cada categoria de produto ter uma planilha exclusiva.

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 3 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

2 - A ESTRUTURA DO APLICATIVO As planilhas que controlaro os estoques tero os campos bsicos para tal:

Este campos comearo a serem preenchidos partir da linha 3.

Na clula "C2" acumularemos o total de mercadorias, enquanto que na clula "F2" o total mone trio destas mercadorias. Na colunas B, C e D sero armazenados dados digitados nos TextBoxes do formulrio, enquanto que nas colunas E e F sero atualizados com duas funes: =SE(D4="";"";D4*TVA) =SE(OU(C4="";E4="");"";E4*C4) 2.1 - A Administrao do Estoque Nosso aplicativo ser todo administrado por um formulrio, ou seja , o usurio no ter acesso planilha. Liberando o acesso das planilhas para que o usurio administre o estoque poderemos por em risco nosso projeto, pois o usurio pode alterar toda estrutura acidentalmente.

Teremos tambm um formulrio para administrar a impresso das planilhas responsveis no controle dos estoques.

No projeto teremos tambm trs mdulos: um para as APIS utilizadas no aplicativo, outro para controlar a gesto do estoque e outro para as rotinas bsicas. No formulrio utilizaremos um objeto "MultiPage" com quatro pginas.

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 4 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Uma pgina ser responsvel nas entradas das mercadorias, outra pela sadas das mercadorias, outra pela administrao de novas categorias de produtos no estoque e o quatro na configurao do estoque (setup)

No formulrio utilizaremos tambm um objeto "ComboBox" que ser responsvel em ler todas planilhas criadas como categorias de estoque.

O ltimo importante objeto criado no formulrio o "ListBox" que responsvel em armazenar as mercadorias constantes no ComboBox.

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 5 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Visualizando o formulrio por completo:

Uma interface que a nossos olhos parece simples, mas veremos que muito til para o fim que ser criado. Agora vamos aprender a administrar cada um destes objetos que deixaro nosso aplicativo praticamente perfeito. Voc ter a experincia de utilizar funes teis que sero responsveis em controlar praticamente todo projeto.

3 - CAPTURANDO DADOS DAS PLANILHAS Nesta primeira fase temos dois desafios: Preencher um ComboBox com os nomes de todas planilhas que serviro para a administrao dos estoques e preencher uma ListBox que armazenaro todas as mercadorias constantes em cada planilha. Para o preenchimento do ComboBox que armazenar os nomes das planilhas que serviro para controlarmos o estoque, criamos uma funo. A utilizao de funes criadas especificamente

Function Categorias(Optional Todas As Boolean) Dim Ws As Worksheet, Lista() As String, Index% With ThisWorkbook For Each Ws In .Worksheets If Ws.Range(KOriginal).Offset(-1, 0) = "Denominao" And (Ws.Visible Or Todas) Then Index = Index + 1 ReDim Preserve Lista(1 To Index) Lista(Index) = Ws.Name

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 6 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

End If Next Ws End With Categorias = Lista End Function


Quando voc chama um procedimento com um argumento opcional, a especificao do argumento opcional facultativa. Caso no especifique o argumento opcional, o valor padro, se houver, ser utilizado. Se nenhum valor padro for especificado, o argumento ser aquele que seria para qualquer varivel do tipo especificado.

Esta funo utiliza a varivel Koriginal e repare que a mesma no est declarada na funo, isso porque ela est declarada na rea de declaraes genricas do mdulo "ModGest". Public Const KOriginal = "B4" Esta varivel significa que estou reservando o intervalo "B4" para alguma conferencia muito especial. Interpretando o foco da funo a principal atribuio percorrer todas planilhas da pasta de trabalho e verificar a clula "B4". Se neste intervalo tiver a palavra "Denominao" significa que a mesma poder ser armazenada numa varivel ou diretamente num objeto ComboBox ou ListBox. Aqui na nossa funo armazenamos numa funo para depois descarregarmos num ComboBox. Utilizando a instruo ReDim Preserve teremos condio de armazenar os nomes de todas planilhas que satisfazem as condies acimas expostas na varivel Lista().

Para utilizarmos esta funo basta chamarmos a mesma na propriedade List do ComboBox. Se tentarmos utilizar esta funo numa planilha, a mesma retornar apenas o nome da primeira planilha, pois as clulas no tem a propriedade List para obter o retorno. With ComboCat .List = Categorias .ListIndex = 0 End With Como necessitamos do preenchimento do ComboBox sempre que o formulrio for ativado, ento utilizamos o evento initialize( ) do mesmo para o carregamento da funo Categoria(). Com o ComboBox "ComboCat" atualizado com os nomes das planilhas criadas para armazenar os estoques, agora atualizaremos a ListBox "ListBoxProd" , que ser responsvel em listar os nomes de todas as mercadorias das categorias de produtos da ComboBox "ComboCat". Para uma atualizao automtica da ListBox "ListBoxProd" utilizaremos o evento Change( ) da Combobox "ComboCat", ou seja sempre que este ComboBox for atualizado, automaticamente a ListBox "ListBoxProd" tambm ser preenchida.

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 7 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Agora criaremos a segunda funo, a que ser responsvel em preencher a ListBox com os produtos, a "ListBoxProd".

Function Produtos(Ws$) Dim Clula As Range, Lista, Mil, Bcle% On Error GoTo erro Set Clula = DeterminarClula(Ws) If Clula Is Nothing Then Exit Function Lista = Clula.Value Mil = Clula.Offset(0, 1).Value If Not IsArray(Lista) Then ReDim Lista(1 To 1, 1 To 1) Lista(1, 1) = Trim$(Clula.Value) Else For Bcle = 1 To UBound(Lista) Lista(Bcle, 1) = Trim$(Lista(Bcle, 1)) Next Bcle End If Produtos = Lista erro: End Function

A primeira coisa a destacar nesta funo que utilizamos uma outra funo que tem a meta de determinar o ltimo intervalo preenchido de uma determinada planilha. Se a funo no retornar nenhuma clula a funo encerrada. Set Clula = DeterminarClula(Ws) If Clula Is Nothing Then Exit Function Se encontrado algum intervalo for encontrado um Loop executado e a varivel Lista preenchida . If Not IsArray(Lista) Then ReDim Lista(1 To 1, 1 To 1) Lista(1, 1) = Trim$(Clula.Value) Else For Bcle = 1 To UBound(Lista) Lista(Bcle, 1) = Trim$(Lista(Bcle, 1)) Next Bcle End If A Funo DeterminarClula:

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 8 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Function DeterminarClula(Ws$) As Range Dim Cel As Range On Error GoTo erro With ThisWorkbook.Worksheets(Ws) Set Cel = .Range(Left(KOriginal, 1) & "65536").End(xlUp) If Cel.Row > 2 Then Set DeterminarClula = .Range(KOriginal, Cel) End If End With erro: End Function Ws$ o nome da planilha que desejamos listar as mercadorias. Nesta funo utilizamos um mtodo simples para a localizao da ltima clula preenchida, o mtodo "End", que utilizamos para acessar a ltima clula, e a direcionador "Up" que significa "para cima". Ento partir da ltima linha de uma coluna, este mtodo faz com que acessemos a ltima clula preenchida.

4 - VISUALIZANDO AS MERCADORIAS SELECIONADAS Depois de atualizado a ListBox "ListBoxProd", o prximo passo criar um evento para selecionar uma determinada mercadoria e seus dados serem exibidos nos campos para alterao e excluso. O procedimento que ter a misso de capturar os dados da tabela especfica e do produto selecionado na ListBox e preencher campos TextBox na regio do objeto MultiPage a funo nomeada como "DadosMercadorias".

Private Sub DadosMercadorias(Index%, Optional AjusteProdI As Boolean) Dim Intervalo As Range, Ligne As Range VerificarControles Set Intervalo = DeterminarClula(ComboCat) If Intervalo Is Nothing Then Exit Sub Set Intervalo = Intervalo.Resize(, KColTab) With Intervalo.Rows(Index) 'produtos LabelProdE = " " & Trim$(.Cells(1)) LabelProdS = LabelProdE If AjusteProdI Then TextBoxProdI = LabelProdE 'estoque LabelStockE = .Cells(2) LabelStockS = .Cells(2)

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 9 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

LabelPrixE = Format(.Cells(3), "0.00") LabelPrixS = LabelPrixE End With End Sub A primeira coisa que notamos a presena de um procedimento nomeado como VerificarControles alocado no inicio do cdigo. A funo deste controle limpar os contedos que porventura existirem nos controles que recebero os valores do produto selecionado. Private Sub VerificarControles() Dim Ctrl As Control For Each Ctrl In Controls If Ctrl.Tag = "Aff" Then Ctrl = "" Next Ctrl End Sub Para facilitar a identificao dos controles a serem "limpos" utilizamos a propriedade Tag, que uma propriedade a ser utilizada justamente para este fim, ou seja deixar vrios controles com um mesmo valor em comum, que no nosso caso, todos controles que so atualizados com os valores do item escolhido na ListBox recebero a propriedade mTag como "Aff". No procedimento VerificarControles, feito uma varredura em todo formulrio e verificando todos com a propriedade Tag="Aff" e com isso limpar seus contedos. Seguindo na explicao, utilizamos a seguir a funo DeterminarClulas que tem como funo localizar a ltima clula preenchida da planilha selecionada. Set Intervalo = DeterminarClula(ComboCat) Localizado a ltima linha preenchida, utilizaremos o mtodo Resize para prolongar a seleo at a coluna 6 (ltima coluna da tabela de estoques) Set Intervalo = Intervalo.Resize(, KColTab) A varivel KColTab oi declarada na regio de declaraes genricas: Public Const KColTab = 6 Esta varivel representa a limitao da coluna nas tabelas dos produtos. E finalmente o preenchimento dos objetos demonstrando os dados da mercadoria selecionada: With Intervalo.Rows(Index) LabelProdE = " " & Trim$(.Cells(1)) LabelProdS = LabelProdE If AjusteProdI Then TextBoxProdI = LabelProdE

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 10 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

LabelStockE = .Cells(2) LabelStockS = .Cells(2) LabelPrixE = Format(.Cells(3), "0.00") LabelPrixS = LabelPrixE End With E no podemos nos esquecer do principal, que o evento Click da ListBox, responsvel por to da verificao acima detalhada. Private Sub ListBoxProd_Click() If ListBoxProd.ListIndex = -1 Then Exit Sub DadosMercadorias ListBoxProd.ListIndex + 1, MultiPage1.Value = 2 End Sub 5 - ADMINISTRANDO AS MERCADORIAS (INCLUSO E BAIXAS) No formulrio de administrao de estoque temos uma multipage com quatro pginas responsveis na administrao de nosso estoque: Um pgina responsvel na incluso de novos produtos, outra responsvel pela incluso tens de produtos cadastrados e outra responsvel pela baixa de produtos cadastrados.

Assim como fizemos para a atualizao do ComboBox "ComboCat" e a ListBox "ListBoxProd" continuaremos criando funes para executarmos as tarefas do aplicativo "Administrao de Estoque". 5.1 - INCLUINDO MERCADORIAS

Para incluirmos mercadorias numa planilha de mercadorias cadastradas utilizaremos a funo IncluirMercadorias com os atributos Planilha, ndice e Nmero. Function IncluirMercadorias(Ws$, Index%, nNum%) As Boolean Dim Intervalo As Range, Produtos$ On Error GoTo erro Set Intervalo = DeterminarClula(Ws) If Intervalo Is Nothing Then Exit Function Set Intervalo = Intervalo.Resize(, KColTab) With Intervalo.Rows(Index).Cells(2) .Value = .Value + nNum

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 11 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Produtos = .Offset(0, -2) End With IncluirMercadorias = True Bip Exit Function erro: MsgBox "Erro na incluso de " & Produtos, vbCritical, NomApp End Function

-WS$ a planilha que receber a incluso de mercadorias; -Index% o ndice da ListBox "ListBoxProd"; -nNum% a quantidade de mercadorias que desejamos incluir o estoque. Para selecionarmos o intervalo de clulas da planilha especfica mais uma mvez utilizaremos funo DeterminarClula(Ws). a

Para utilizarmos a funo IncluirMercadoria basta aloca-la o evento click bo boto "BotoIncluir" Private Sub BotoIncluir_Click() Dim Valor#, Index% On Error GoTo erro Index = ListBoxProd.ListIndex Valor = Numrico(TextBoxNbE) If Valor > 0 And Index >= 0 Then IncluirMercadorias ComboCat, ListBoxProd.ListIndex + 1, Int(Valor) End If ComboCat_Change ListBoxProd.ListIndex = Index erro: End Sub Repare na utilizao das atribuies da funo IncluirMercadorias: -WS$ substitudo pela combobox "ComboCat"; -Index% substitudo pelo ndice da ListBox "ListBoxProd"; -nNum% substitudo pelo valor do TextBox "TextBoxNbE". A validao do nmero digitado no TextBox "TextBoxNbe" feita atravs da funo Numrico. Private Function Numrico#(ByVal Valor$) If IsNumeric(Valor) Then Numrico = CDbl(Valor) Else Numrico = -1 End Function 5.2 - BAIXANDO MERCADORIAS Assim como nas incluses, para baixarmos mercadorias numa planilha de mercadorias cadas-

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 12 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

tradas utilizaremos a funo BaixarMercadorias com os atributos Planilha, ndice e Nmero. Assim como na funo IncluirMercadorias, na funo BaixarMercadorias utilizaremos trs atributos: Ws$ como planilha, Index como nmero da linha e nNum as quantidade a ser baixada.

Function BaixarMercadorias(Ws$, Index%, nNum%) As Boolean Dim Intervalo As Range, Produtos$ On Error GoTo erro Set Intervalo = DeterminarClula(Ws) If Intervalo Is Nothing Then Exit Function Set Intervalo = Intervalo.Resize(, KColTab) With Intervalo.Rows(Index).Cells(2) .Value = .Value - nNum Produtos = .Offset(0, -2) If .Value = 0 Then ExcluirLinha Produtos, .Offset(0, -2) End With BaixarMercadorias = True Bip Exit Function erro: MsgBox "Erro na baixa de " & Produtos, vbCritical, NomApp End Function Assim como a funo DeterminarClula, a funo tambm utiliza o procedimento ExcluirLinha. Esta funo utiliza duas atribuies: Produtos, que o item da coluna B de uma determinada linnha e a clula que ser "limpa". Private Sub ExcluirLinha(Produtos$, Cel As Range) Dim Resposta On Error GoTo erro Resposta = MsgBox("O estoque de " & Produtos & " est ou estar zerado" & vbCr & _ "Deseja elimina-lo da relao ?", vbYesNo, NomApp) If Resposta = vbNo Then Exit Sub Cel.Resize(, 4).Value = "" Ordenar Cel.Worksheet.Name, True Ordenar Cel.Worksheet.Name, False erro: End Sub

A funo deste procedimento verificar se o estoque do produto selecionado zero, se for ele perguntar se deseja excluir a linha, se a resposta for sim a linha do produto ser definitivamente exclusa.

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 13 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Neste procedimento utilizado tambm a funo Ordernar, Ela tem como meta ordenar a tabela do produto aps excluso. Quando a clula limpa a ordenao automtica com esta funo. E finalmente para baixarmos a mercadoria basta alocar a funo no evento click do boto: Private Sub BotoBaixar_Click() Dim Valor#, Index% On Error GoTo erro Index = ListBoxProd.ListIndex Valor = Numrico(TextBoxNbS) If Valor > 0 And Index >= 0 Then BaixarMercadorias ComboCat, ListBoxProd.ListIndex + 1, Int(Valor) ComboCat_Change If ListBoxProd.ListCount - 1 >= Index Then ListBoxProd.ListIndex = Index Else TextBoxNbS = "" End If erro: End Sub No podemos esquecer a validao do TextBox "TextBoxNbS" antes de prosseguirmos na baixa. 5.3 - INCLUNDO NOVAS MERCADORIAS Neste tpico continuaremos a utilizar funes para a incluso de novas mercadorias numa tabela j existente. EntradaValida: Verificar se o produto j existe no estoque; Numrico: Validar o campo numrico; NovoProduto: Funo para cadastrar; 5.3.1 - Funo EntradaValida Function EntradaValida$(Ws$, nProduto$) Dim Bcle%, Lista 'On Error GoTo nerro If nProduto = "" Then Exit Function Lista = Produtos(Ws) If IsArray(Lista) Then For Bcle = LBound(Lista) To UBound(Lista) 'MsgBox LCase(Lista(Bcle, 1)) & "-" & LCase(nProduto) If LCase(Lista(Bcle, 1)) = LCase(nProduto) Then MsgBox "O Produto " & nProduto & " J consta no Estoque !", _ vbInformation, NomApp Exit Function

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 14 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

End If Next Bcle End If EntradaValida = nProduto nerro: End Function Os atributos da funo so: Ws como planilha e nProduto como produto. Se Ws retornar vazio, ou seja nenhuma planilha for escolhida a funo encerrada. If nProduto = "" Then Exit Function A varivel Lista preenchida com a funo Produtos( ). validamos a lista como a funo definida IsArray. Como a lista validada, verificamos se o produto que desejamos cadastrar j no consta na Array(lista), se sim uma mensagem exibida e a funo encerrada. For Bcle = LBound(Lista) To UBound(Lista) 'MsgBox LCase(Lista(Bcle, 1)) & "-" & LCase(nProduto) If LCase(Lista(Bcle, 1)) = LCase(nProduto) Then MsgBox "O Produto " & nProduto & " J consta no Estoque !", _ vbInformation, NomApp Exit Function End If Next Bcle 5.3.2 - Funo NovoProduto Function NovoProduto(Ws$, ByVal Produto$, _ ByVal Prix#, ByVal Estoque%) As Boolean Dim Cel As Range With ThisWorkbook.Worksheets(Ws) Set Cel = .Range("B65536").End(xlUp).Offset(1, 0) End With On Error GoTo nerro With Cel .Value = Produto .Offset(0, 1) = Estoque .Offset(0, 2) = Prix End With Ordenar Ws, False NovoProduto = True Bip Exit Function nerro:

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 15 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

MsgBox "Erro na incluso de um novo Produto " & Produto, vbCritical, NomApp End Function Esta funo localiza a prxima linha vazia da tabela do respectivo produto para o devido cadastramento. Set Cel = .Range("B65536").End(xlUp).Offset(1, 0) Na linha encontrada cadastrado o produto; na mesma linha na coluna seguinte a quantidade e na terceira coluna o preo de custo With Cel .Value = Produto .Offset(0, 1) = Estoque .Offset(0, 2) = Prix End With Com as funes definidas bastamos utilizar o evento Click do boto BotoNovo para o cadastro de novos produtos. Private Sub BotoNovo_Click() Dim Ok As Boolean, Prix#, Estoque#, Ano#, Produto$ Produto = EntradaValida(ComboCat, Trim$(TextBoxProdI)) If Produto = "" Then TextBoxProdI = "": TextBoxEstoqueI = "": TextBoxPreoCusto = "" Prix = Numrico(TextBoxPreoCusto) If Prix < 0 Then TextBoxPreoCusto = "" If Not CheckBoxPU Then Prix = 0 End If Estoque = Numrico(TextBoxEstoqueI) If Estoque < 0 Then TextBoxEstoqueI = "" If Not CheckBoxEstoque Then Estoque = 0 End If Ok = TextBoxProdI <> "" And Prix >= 0 And Estoque >= 0 _ And ComboCat.ListIndex <> -1 If Ok Then NovoProduto ComboCat, TextBoxProdI, Prix, Int(Estoque) TextBoxProdI = "" TextBoxPreoCusto = "" TextBoxEstoqueI = "" ComboCat_Change End If erro: End Sub

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 16 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Repare que na utilizaes das funes as atribuies foram substitudas por objetos. Se a principal varivel, produto, no for validada os campos que utilizaremos para a incluso de um novo produto no podero permanecerem preenchidos. If Produto = "" Then TextBoxProdI = "": TextBoxEstoqueI = "": TextBoxPreoCusto = "" 6 - O CLCULO DO PREO DE VENDA Uma empresa que tem muitas mercadorias em seu estoque e essas mercadorias so de espcies diversificadas no pode utilizar um nico critrio para calcular o preo de venda, uma porque quanto maior o preo da mercadoria menor a margem. Aqui no nosso aplicativo como as mercadorias so todas bebidas vamos adotar o sistema Markon de calculo do preo de venda, ou seja definimos uma margem padro para todas . Preo de Custo 10,00 x 30% de Margem = Preo de Venda 13,00 Para que o preo de venda seja j atualizado sempre que cadastrarmos novas mercadorias vamos utilizar uma varivel para tal. Public Const KWTVA = "TVA" A Varivel "TVA" ser responsvel em atualizar o preo de venda de nossas mercadorias. Ela ser atualizada pelo controle textbox "TextBoxTVA". Utilizaremos o evento deste textbox para a atualizao: Private Sub TextBoxTVA_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) Dim Valor# Valor = Numrico(TextBoxTVA) If Valor >= 0 Then ValName(KWTVA) = Valor / 100 + 1 TVA End Sub Normalmente vinculamos uma textbox alguma clula, neste aplicativo faremos diferente, para que voc aprenda mais um mtodo de atualizao de controles. Como j dissemos em captulos anteriores, alm das clulas o excel tambm utiliza valores nomeados. Esses valores podem ser nomeados acessando o menu inserir... submenu.. nomes ...tem Definir.

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 17 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Ou via Macro ValName(KWTVA) = Valor / 100 + 1 Onde KWTVA a varivel "TVA" Agora com o nome "TVA" criado, toda vez que alterarmos o valor da TextBox "TexBoxTVA" o valor do campo nomeado ser alterado. Para finalizar, basta utilizarmos o campo nomeado numa frmula que nos fornecer o valor do Preo de venda de nossa mercadoria: =SE(D6="";"";D6*TVA)

7 - IMPRIMINDO RELATRIOS DE ESTOQUE Vamos agora criar uma ferramenta para que possamos imprimir os relatrios de estoque das mercadorias. Vamos criar um formulrio que ir gerenciar a impresso das planilhas responsveis em controlar os estoques.

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 18 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Um formulrio simples como uma listbox com a relao das planilhas, duas caixas de opes para escolhermos se desejamos imprimir algumas ou todas planilhas e uma caixa de verificao paimprimirmos os relatrios em preto e branco, j que os relatrios so formatados coloridos. No precisaremos obrigatoriamente imprimir os relatrios, teremos tambm a opo de visualizao dos mesmos.

7.1 - As Propriedades da ListBox

As propriedades que mais destacam a listbox no formulrio : ListStyle = 1 - fmListStyleOption - Que permite que o contedo da lista anteceda de um quadrado para ser clicado na seleo; MultiSelect = 1 - fmMultiSelectmulti - Que permite selecionarmos mais de um tem na lista;

7.2 - A Funo de Impresso Quase todos procedimentos do projeto utilizam funo em sua estrutura. A impresso dos relatrios no poderia ser diferente. Sub Impresso(Ws$, EmBranco As Boolean, Optional Visualizar As Boolean) Dim Intervalo As Range, Sens% On Error GoTo erro Set Intervalo = DeterminarClula(Ws) If Intervalo Is Nothing Then Exit Sub Set Intervalo = Intervalo.Offset(-2, 0).Resize(Intervalo.Rows.Count + 2, KColTab) With Intervalo.Worksheet .PageSetup.PrintArea = Intervalo.Address .PageSetup.BlackAndWhite = EmBranco If Not Visualizar Then .PrintOut Else .PrintPreview End With Exit Sub erro:

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 19 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

MsgBox "Erro durante a Impresso", vbInformation, NomApp End Sub Na funo impresso a utilizao da funo DeterminarClula( ) importante para determinarmos a regio de impresso. A atribuio EmBranco utilizada para definir a configurao de impresso no tocante a impresso branco e preto. Como uma varivel Boleano e est vinculada caixa de verificao "CheckBoxBW", se a caixa for clicada significa que queremos imprimir os relatrios em preto e branco. Agora basta utilizarmos a funo no evento Click dos botes Imprimir e Visualizar no formulrio: Private Sub BotoImprime_Click() Dim Bcle% Me.Hide With ListBoxF For Bcle = 0 To .ListCount - 1 If .Selected(Bcle) Or OptionBoutTous Then Impresso ListBoxF.List(Bcle), CheckBoxBW, False End If Next Bcle End With Unload Me End Sub Private Sub BotoVisualizar_Click() Dim Bcle% Unload Me With ListBoxF For Bcle = 0 To .ListCount - 1 If .Selected(Bcle) Then Impresso ListBoxF.List(Bcle), CheckBoxBW, True Exit Sub End If Next Bcle End With End Sub Repare nos dois procedimentos o uso da funo Impresso (): As planilhas a serem impressas so as selecionadas na listbox "ListBoxF"; O valor da caixa de verificao "CheckBoxBW" define se a impresso branco e preto; O valor boleano true ou false define se desejamos imprimir ou apenas visualizar a impresso. 8 - EXIBIO DO FORMULRIO PRINCIPAL

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 20 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Assim como fao na maioria dos formulrios principais dos aplicativos que desenvolvo vamos exibi-lo no modo maximizado. Diferentemente do Visual Basic, no VBA no temos a propriedade XLMaximized para a exibio maximizado do formulrio. Vamos ento "chamar" as apis para adaptarmos tal propriedade. Dim Form_Personalizado As Long Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Const ESTILO_ATUAL As Long = (-16) Private Const WS_CX_MAXIMIZAR As Long = &H10000 Private Const WS_POPUP As Long = &H80000000 Private Const WS_CAPTION = &HC00000 Private Declare Function MoveJanela Lib "user32" Alias "SetWindowLongA" ( _ ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Dim ESTILO As Long Private Const ESTILO_PROLONGADO = (-20) Private Const WS_BARRA_TAREFAS = &H40000 Dim hIcone As Long Private Declare Function Exibircone Lib "user32" Alias "SendMessageA" ( _ ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ LParam As Any) As Long Private Const FOCO_ICONE = &H80 Private Const ICONE = 0& Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function SetFocus Lib "user32" (ByVal hWnd As Long) As Long A bibliotecas necessrias so muitas como voc pode ter notado acima, mas vale a pena o re sultado encontrado. 8.1 - Utilizando as Bibliotecas

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 21 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Para a correta exibio do formulrio necessrio utilizar as constantes e funes Apis no evento initialize( ) do formulrio: Private Sub UserForm_Activate() Form_Personalizado = FindWindowA(vbNullString, Me.Caption) ESTILO = IniciaJanela(Form_Personalizado, ESTILO_ATUAL) ESTILO = ESTILO Or WS_CX_MAXIMIZAR ESTILO = ESTILO Or WS_POPUP ' ESTILO = ESTILO Or WS_CAPTION MoveJanela Form_Personalizado, ESTILO_ATUAL, (ESTILO) ESTILO = IniciaJanela(Form_Personalizado, ESTILO_PROLONGADO) ESTILO = ESTILO Or WS_BARRA_TAREFAS MoveJanela Form_Personalizado, ESTILO_PROLONGADO, ESTILO hIcone = Image1.Picture.Handle Call Exibircone(Form_Personalizado, FOCO_ICONE, ICONE, ByVal hIcone) DrawMenuBar Form_Personalizado SetFocus Form_Personalizado End Sub

8.2 - Verificando a Resoluo do Monitor Para a exibio do formulrio no modo maximizado a verificao da resoluo do monitor importante, para que os objetos fiquem sempre bem tabulados no formulrio na hora da maximizao. 8.2.1 - A Funo Para a verificao da resoluo do monitor basta utilizarmos uma funo. Declarando as APIs: Declare Function GetDesktopWindow Lib "user32" () As Long Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, rectangle As RECT) _ As Long Criando a funo: Function GetScreenResolution() As String Dim R As RECT, hWnd As Long, RetVal As Long hWnd = GetDesktopWindow() RetVal = GetWindowRect(hWnd, R) GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1) End Function Utilizando a funo: If ModAPI.GetScreenResolution = "800x600" Then Me.Zoom = 130 Else Me.Zoom = 150

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 22 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

End If As duas resolues mais utilizadas por usurios so "800x600" e "1024x768". 9 - CONCLUSO Apesar de j ter publicado o mesmo assunto em boletim anterior, este muito mais didtico para quem est apredendo programao em Excel. Uma das diferenas que este boletim no utiliza a biblioteca D.A.O (Database Access Object) para administrar banco de dados e sim as prprias ferramentas do Excel para a administrao de estoque. Neste boletim voc aprendeu: -Criar uma funo que fornece os nomes de todas planilhas do aplicativo; -Criar uma funo que fornece todas clulas preenchidas duma determinada coluna; -Criar uma funo para incluso de dados numa tabela; -Criar uma funo para baixar mercadorias; -Criar uma funo para verificar se um valor numrico vlido; -Criar uma funo para verificar se uma mercadoria j est cadastrada; -Criar uma funo para a incluso de um novo produto; -Criar uma funo para verificar a resoluo do monitor;

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 23 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Este Boletim uma publicao mensal do portal www.tudosobrexcel.com

Fbio Maurcio dos Santos tudo.sobre.excel@globo.com Contador ,Controller, Analista de VBA e WebMaster Scio-proprietrio de EXCELlncia Solues em VBA Fundador do portal: www.tudosobrexcel.com/

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 24 / 41

Boletim n29

ADMINISTRANDO ESTOQUES NO EXCEL

Excellencia Solues em VBA

www.tudosobrexcel.com

Pgina: 25 / 41

Controle de Estoque em Thursday 01 November Thursday


Categorias Vinhos Champagne Aperitivos Whisky Licor Cerveja Refrigerante Diversos Quantidade Total

6,339
1,352 821 198 95 67 1,450 2,266 90

64,862.16
30,606.99 17,559.44 3,083.86 1,889.66 2,407.50 3,653.73 4,415.88 1,245.11

Vinhos

1352
Denominao

R$ 30,606.99
Custo 8.50 20.30 49.90 20.90 17.50 30.50 19.90 16.50 51.90 21.70 28.50 18.90 23.30 27.50 22.90 32.10 34.90 40.30 16.50 31.10 12.00 62.50 25.50 33.90 22.50 79.90 25.50 9.79 17.90 11.90 10.50 7.43 13.50 13.50 13.50 5.49 Venda 10.63 25.38 62.38 26.13 21.88 38.13 24.88 20.63 64.88 27.13 35.63 23.63 29.13 34.38 28.63 40.13 43.63 50.38 20.63 38.88 38.00 78.13 31.88 42.38 28.13 99.88 31.88 12.24 22.38 14.88 13.13 9.29 16.88 16.88 16.88 6.86 Total 138.13 456.75 623.75 235.13 153.13 228.75 298.50 226.88 583.88 189.88 106.88 23.63 378.63 756.25 314.88 401.25 174.50 403.00 371.25 77.75 836.00 78.13 223.13 296.63 168.75 99.88 669.38 465.03 246.13 44.63 39.38 74.30 185.63 185.63 219.38 315.68

Argentino Branco Alto Chardonnay TERRAZAS Garrafa 750ml Argentino Branco BLOSSOM HILL Garrafa 750ml Argentino Branco Chardonnay ALAMOS Garrafa 750ml Argentino Branco Chardonnay ANGARO Garrafa 750ml Argentino Branco Chardonnay ASTICA Garrafa 750ml Argentino Branco Chardonnay BALBI Garrafa 750ml Argentino Branco Chardonnay Barrancas FINCA FLICHMAN Garrafa 750ml Argentino Branco Chardonnay BENJAMIN Garrafa750ml Argentino Branco Chardonnay CABALLERO Garrafa 750ml Argentino Branco Chardonnay Chenin TRIVENTO Garrafa 750ml Argentino Branco Chardonnay FBUS Garrafa 750ml Argentino Branco Chardonnay FINCA FLICHMAN Garrafa 750ml Argentino Branco Chardonnay FINCA LAS MORAS Garrafa 750ml Argentino Branco Chardonnay FRIA Garrafa 750ml Argentino Branco Chardonnay GRAFFIGNA Garrafa 750ml Argentino Branco Chardonnay LA SIERRA Garrafa 750ml Argentino Branco Chardonnay LATITUDE 33 Garrafa 750ml Argentino Branco Chardonnay MAM Reserva Garrafa 750ml Argentino Branco Chardonnay MEDRANO Garrafa 750ml Argentino Branco Chardonnay PRIVADO Garrafa 750ml Argentino Branco Chardonnay PRIVADO Garrafa 750ml Argentino Branco Chardonnay SALENTEIN Garrafa 750ml Argentino Branco Chardonnay SAN TELMO Garrafa 750ml Argentino Branco Chardonnay Semillon SEPTIMA Garrafa 750ml Argentino Branco Chardonnay Semillon TRILOGIA Garrafa 750ml Argentino Branco Chardonnay TERRAZAS Reserva Garrafa 750ml Argentino Branco Chardonnay Torrontes RIO DE PLATA Garrafa 750ml Argentino Branco MARQUES DE LA COLINA Garrafa 700ml Argentino Branco NEW AGE Garrafa 750ml Argentino Branco RINCON DE OURO Garrafa 750ml Argentino Branco SANTA ISABEL Garrafa 750ml Nacional Rosado Licoroso Doce GES Garrafa 870ml Nacional Ros Cabernet France CHATEAU DUVALIER Garrafa 750ml Nacional Ros CHATEAU DUVALIER Garrafa 750ml Nacional Ros Gamay ALMADN Garrafa 750ml Nacional Ros Suave CHALISE Garrafa 750ml

Quantidade 13 18 10 9 7 6 12 11 9 7 3 1 13 22 11 10 4 8 18 2 22 1 7 7 6 1 21 38 11 3 3 8 11 11 13 46

11/1/2012

Page 28 de 41

Vinhos

Denominao

Nacional Tinto Assemblage SALTON Garrafa 750ml Nacional Tinto Cabernet ALMADN Garrafa 750ml Nacional Tinto Cabernet Franc CHATEAU DUVALIER Garrafa 750ml Nacional Tinto Cabernet Sauvignon ADEGA DO VALLE Garrafa 750ml Nacional Tinto Cabernet Sauvignon BARO DE LANTIER Reserva Garrafa 750ml Nacional Tinto Cabernet Sauvignon BOTTICELLI Garrafa 750ml Nacional Tinto Cabernet Sauvignon Classic SALTON Garrafa 750ml Nacional Tinto Cabernet Sauvignon FAMLIA PIAGENTINI Garrafa 750ml Nacional Tinto Cabernet Sauvignon FORESTIER Garrafa 750ml Nacional Tinto Cabernet Sauvignon MARCUS JAMES Garrafa 375ml Nacional Tinto Cabernet Sauvignon MARCUS JAMES Garrafa 750ml Nacional Tinto Cabernet Sauvignon Syrah ADEGA DO VALE Garrafa 750ml Nacional Tinto Carbenet Franc FORESTIER Garrafa 750ml Nacional Tinto CHTEAU DUVALIER Garrafa 750ml Nacional Tinto Classic Tannat SALTON Garrafa 750ml Nacional Tinto Col Tannat BOTTICELLI Garrafa 750ml Nacional Tinto de Mesa Seco CHALISE Garrafa 750ml Nacional Tinto de Mesa Seco CHAPINHA Garrafa 750ml Nacional Tinto de Mesa Seco GOES 4,5 Litros Nacional Tinto de Mesa Seco GES Garrafa 870ml Nacional Tinto de Mesa Seco PIAGENTINI Garrafa 720ml Nacional Tinto de Mesa Suave CHAPINHA Garrafa 750ml Nacional Tinto de Mesa Suave DOM BOSCO Garrafa 880ml Nacional Tinto de Mesa Suave GES Garrafa 870ml Nacional Tinto de Mesa Suave PIAGENTINI Garrafa 720ml Portugus Branco ALANDRA Garrafa 750ml Portugus Branco ALENTEJANO MONTADO Garrafa 750ml Portugus Branco CALAMARES Garrafa 750ml R$ Portugus Branco Douro EVEL Garrafa 750ml Portugus Branco DO TERRAS ALTAS Garrafa 750ml Portugus Branco DO VISTA DO VALE Garrafa 750ml Portugus Branco DOURO POUSADA Garrafa 750ml Portugus Branco ESPORO Garrafa 750ml Portugus Branco JOO PIRES 750ml Portugus Branco LANCERS Garrafa 750ml Portugus Branco MONTE VELHO Garrafa 750ml Portugus Branco MOSCATEL DE SETBAL Garrafa 750ml

Quantidade 20 21 22 31 7 38 19 51 10 24 17 10 10 12 3 6 45 48 30 61 59 71 18 45 38 3 11 3 8 7 6 5 3 4 18 4 9

Custo 15.70 13.50 12.40 20.90 40.50 18.70 18.10 14.90 25.10 10.20 16.55 20.90 18.10 12.40 18.10 21.70 5.49 5.95 25.50 5.75 5.33 4.98 6.45 5.75 5.33 34.70 19.90 44.10 36.30 29.10 35.30 42.50 60.70 54.10 24.50 47.50 48.50

Venda 19.63 16.88 15.50 26.13 50.63 23.38 22.63 18.63 31.38 12.75 20.69 26.13 22.63 15.50 22.63 27.13 6.86 7.44 31.88 7.19 6.66 6.23 8.06 7.19 6.66 43.38 24.88 55.13 45.38 36.38 44.13 53.13 75.88 67.63 30.63 59.38 60.63

Total 392.50 354.38 341.00 809.88 354.38 888.25 429.88 949.88 313.75 306.00 351.69 261.25 226.25 186.00 67.88 162.75 308.81 357.00 956.25 438.44 393.09 441.98 145.13 323.44 253.18 130.13 273.63 165.38 363.00 254.63 264.75 265.63 227.63 270.50 551.25 237.50 545.63

11/1/2012

Page 29 de 41

Vinhos

Denominao

Quantidade 8 3 13 2 8 6 14 3 18 7 8 6 18 9 13 3 1 1 10

Portugus Branco QUINTA DA ESPIGA Garrafa 750ml Portugus Branco Sauvignon PRIMUM Garrafa 750ml Portugus Branco SUALDEIA Garrafa 750ml Portugus Ros CALAMARES 750ml Portugus Tinto ALANDRA Garrafa 750ml Portugus Tinto AVELEDA ESTREMAD Garrafa 750ml Portugus Tinto Bairrada ALIANA Garrafa 750ml Portugus Tinto CABEA DE TOIRO Reserva Garrafa 750ml Portugus Tinto CAVE DO DUQUE Garrafa 750ml Portugus Tinto Classic PERIQUITA Garrafa 750ml Portugus Tinto CORTELLO Garrafa 750ml Portugus Tinto D` AVILLEZ Garrafa 750ml Portugus Tinto Douro POUSADA Garrafa 750ml Portugus Tinto DA TALHA Garrafa 750ml Portugus Tinto Do VISTA DO VALE 750ml Portugus Tinto de Mesa BEIRA SERRA Garrafa 750ml Portugus Tinto DOURO ACCIO Garrafa 750ml Portugus Tinto Douro VILA REGIA Garrfa 750ml Sucos

Custo 36.10 60.90 20.90 36.30 38.30 40.50 24.10 70.90 23.50 78.70 29.70 90.30 35.50 49.90 27.90 32.30 125.00 44.90 0.50

Venda 45.13 76.13 26.13 45.38 47.88 50.63 30.13 88.63 29.38 98.38 37.13 112.88 44.38 62.38 34.88 40.38 156.25 56.13 0.63

Total 361.00 228.38 339.63 90.75 383.00 303.75 421.75 265.88 528.75 688.63 297.00 677.25 798.75 561.38 453.38 121.13 156.25 56.13 6.25

11/1/2012

Page 30 de 41

Champagne

818
Denominao Quantidade 3 1 7 18 3 2 3 11 9 18 11 7 28 3 44 18 17 21 40 3 6 3 48 48 51 68 75 74 3 8 7 6 9 1 1 1

17,428.56
Custo 34.90 83.30 34.30 16.90 51.50 51.10 51.50 34.90 34.30 16.90 34.90 34.30 5.97 33.90 5.97 16.66 19.30 29.50 9.86 34.90 27.92 32.50 3.63 3.63 3.63 6.07 6.07 3.87 38.30 49.90 52.90 47.70 52.90 103.00 185.00 103.00 Venda 43.63 104.13 42.88 21.13 64.38 63.88 64.38 43.63 42.88 21.13 43.63 42.88 7.46 42.38 7.46 20.83 24.13 36.88 12.33 43.63 34.90 40.63 4.54 4.54 4.54 7.59 7.59 4.84 47.88 62.38 66.13 59.63 66.13 128.75 231.25 128.75 Total 130.88 104.13 300.13 380.25 193.13 127.75 193.13 479.88 385.88 380.25 479.88 300.13 208.95 127.13 328.35 374.85 410.13 774.38 493.00 130.88 209.40 121.88 217.80 217.80 231.41 515.95 569.06 357.98 143.63 499.00 462.88 357.75 595.13 128.75 231.25 128.75

Champagne Brut CHANDON Garrafa 750ml Champagne Brut Excellence CHANDON Garrafa 750ml Champagne Brut GREVILLE Garrafa 750ml Champagne Brut SALTON Garrafa 750ml Champagne CHADON Brut Conjunto com 3 Garrafas de 187ml Champagne Chandon Brut AYRTON SENNA Garrafa 750ml Champagne CHANDON Demi Seco Conjunto com 3 Garrafas de 180ml Champagne Demi Sec CHANDON Garrafa 750ml Champagne Demi Sec GREVILLE Garrafa 750ml Champagne Demi Sec SALTON Garrafa 750ml Champagne Passion CHANDON Garrafa 750ml Champagne Ros Brut DE GREVILLE Garrafa 750ml Champagne Rouge CHANDON Garrafa 750ml R$ 34,90 Eapumante de Morango sem lcool CERESER Garrafa 600ml Espumante de Uva sem lcool CERESER Garrafa 660ml Espumante Doce Moscatel SALTON Garrafa 750ml Espumante Famlia PIAGENTINI Garrafa 750ml Espumante Italiano Asti CINZANO Garrafa 750ml Espumante Meio Doce SALTON Garrafa 660ml Espumante Ouro Brut SALTON Reserva Garrafa 750ml Espumante Prosecco Brut SALTON Garrafa 750ml Espumante Volpi Brut SALTON Garrafa 750ml Espumante Yong de Sidra CERESER Garrafa 300ml Espumante Young de Pssego CERESER Garrafa 300ml Espumante Young Morango CERESER Garrafa 300ml Filtrado de Morango CERESER Garrfa 660ml Filtrado de Pssego CERESER Garrafa 660ml Filtrado Ros AMLIA Garrafa 660ml Cava Espanhola Brut CRISTALINO Garrafa 750ml Cava Espanhola Cordon Negro FREIXENET Garrafa 750ml Cava Espanhola Semi Sec CODORNIU Garrafa 750ml Cava Espanhola Semi Seca Carta Nevada FREIXENET Garrafa 750ml Champagne Espanhola Brut CODORNIU Garrafa 750ml Champagne Francs Brut Imperial MOET CHANDON Garrafa 375ml Champagne Francs Brut Imperial MOET CHANDON Garrafa 750ml Champagne Francs Brut Ponsardin VEUVE CLICQUOT Garrafa 375ml

11/1/2012

Page 31 de 41

Champagne

Denominao

Quantidade 1 7 1 8 1 18 15 16 4 11 2 2 7 3 1 1 3 7 3 1 1 32

Champagne Francs Brut VEUVE CLICQUOT Garrafa 750ml Champagne Francs Demi Sec FRANCOIS MONTAND Garrafa 750ml Champagne Francs Demi Sec VEUVE CLICQUOT Garrafa 750ml Champagne Francs FRANCOIS MONTAND Garrafa 750ml Champagne PIPER HEIDSIECK Garrafa 750ml Espumante Argentino Brut DUBOIS Garrafa 750ml Espumante Argentino Cuve Especiale MUMM Garrafa 750ml Espumante Francs Blanc de Blancs Brut OPRA Garrafa 750ml Espumante Francs Brut BARON DARIGNAC Garrafa 750ml Espumante Francs Brut GRANDIAL Garrafa 750ml Espumante Francs Brut POL CLEMENT Garrafa 750ml Espumante Francs Brut SAUMUR MOUS Garrafa750ml Espumante Francs Demi Sec GRANDIAL Garrafa 750ml Espumante Francs Demi-Seco SAUMUR Garrafa 750ml Espumante Italiano Asti FONTANAFREDA Garrafa 750ml Espumante Italiano Brut PROSECCO TOSTI Garrafa 750ml Espumante Italiano Pinot-Chardonnay CINZANO Garrafa 750ml Espumante Italiano Prosecco CASTEL PICCO Garrafa 750ml Espumante Italiano Prossecco SPERONE Garrafa 750ml Espumante Italiano Prossecco VALDORO Garrafa 750ml Espumante Prosecco Italiano CINZANO Garrafa 750ml Frisante Italiano Amabile Cavicchioli MALAVASIA Garrafa 750ml

Custo 199.00 35.70 199.00 35.70 139.00 22.70 29.10 36.50 27.10 25.70 33.30 41.90 25.70 41.90 63.10 41.50 30.70 41.90 32.90 29.90 29.50 31.90

Venda 248.75 44.63 248.75 44.63 173.75 28.38 36.38 45.63 33.88 32.13 41.63 52.38 32.13 52.38 78.88 51.88 38.38 52.38 41.13 37.38 36.88 39.88

Total 248.75 312.38 248.75 357.00 173.75 510.75 545.63 730.00 135.50 353.38 83.25 104.75 224.88 157.13 78.88 51.88 115.13 366.63 123.38 37.38 36.88 1,272.01

11/1/2012

Page 32 de 41

Aperitivos 198
Denominao Quantidade 13 7 9 18 24 30 13 11 11 28 Custo 23.10 17.50 18.50 3.43 3.40 3.40 3.39 9.28 11.10 27.30 Venda 28.88 21.88 23.13 4.29 4.25 4.25 4.24 11.60 13.88 34.13

Aperitivo Amargo UNDERBERG Garrafa 920ml Aperitivo Bitter CAMPARI Garrafa 900ml Aperitivo Blanc SAN RAPHAEL Garrafa 750ml Aperitivo Classic Citrus KEEP COOLER 275ml Aperitivo Classic Morango KEEP COOLER 275ml Aperitivo Classic Pssego KEEP COOLER 275ml Aperitivo Classic Uva KEEP COOLER 275ml Aperitivo CYNAR Garrafa 900ml Aperitivo de Coco LANA CHAMA Garrafa 445ml Aperitivo MALIBU Garrafa 700ml

11/1/2012

Page 33 de 41

Aperitivos 3,083.86
Total 375.38 153.13 208.13 77.18 102.00 127.50 55.09 127.60 154.01 955.50

11/1/2012

Page 34 de 41

Whisky

95
Denominao Quantidade 3 18 17 24 3 8 1 1 1 1 3 8 7

1,889.66
Custo 58.50 8.90 16.90 4.33 16.87 14.50 69.50 69.50 69.50 69.50 18.90 18.90 18.90 Venda 73.13 11.13 21.13 5.41 21.09 18.13 86.88 86.88 86.88 86.88 23.63 23.63 23.63 Total 219.38 200.25 359.13 129.90 63.26 145.00 86.88 86.88 86.88 86.88 70.88 189.00 165.38

Vodka Americana SKYY Garrafa 750ml Vodka BAIKAL Garrafa 980ml Vodka BOLS Garrafa 1Litro Vodka JHIVAGO Garrafa 970ml Vodka ORLOFF Garrafa 1Litro Vodka SMIRNOFF Garrafa 998ml Vodka Sueca Kurant ABSOLUT Garrafa 750ml Vodka Sueca ABSOLUT Garrafa 750ml Vodka Sueca Mandrin ABSOLUT Garrafa 750ml Vodka Sueca Peppar ABSOLUT Garrafa 750ml Vodka Twist Ctrus SMIRNOFF Garrafa 1Litro Vodka Twist Frutas Vermelhas SMIRNOFF Garrafa 1Litro Vodka Twist Laranja SMIRNOFF Garrafa 1Litro

11/1/2012

Page 35 de 41

Licor

67
Denominao Quantidade 2 3 1 8 1 3 11 9 9 7 7 6

2,407.50
Custo 35.70 63.90 35.10 41.10 113.00 50.70 21.10 21.10 21.10 21.10 21.10 21.10 Venda 44.63 79.88 43.88 51.38 141.25 63.38 26.38 26.38 26.38 26.38 26.38 26.38 Total 89.25 239.63 43.88 411.00 141.25 190.13 290.13 237.38 237.38 184.63 184.63 158.25

Licor Africano Cremoso AMARULA Garrafa 375ml Licor Africano Cremoso AMARULA Garrafa 750ml Licor AMARETTO DELL ORSO Garrafa 700ml Licor Argentino TIA MARIA Garrafa 700ml Licor Australiano MOZART WHITE Garrafa 500ml Licor COINTREAU Garrafa 700ml Licor de Cacau STOCK Garrafa 720ml Licor de Chocolate STOCK Garrafa 720ml Licor de Coco STOCK Garrafa 720ml Licor de Creme de Caf STOCK Garrafa 720ml Licor de Creme de Cassis STOCK Garrafa 720ml Licor de Curaau Blue STOCK Garrafa 720ml

11/1/2012

Page 36 de 41

Cerveja

1450
Denominao

3,653.73
Custo 2.27 1.67 7.49 3.43 7.95 34.50 7.45 1.07 1.63 1.07 8.93 7.63 6.85 8.93 8.93 8.29 0.95 0.95 1.19 1.19 1.45 1.53 3.99 1.32 1.32 4.03 1.16 1.64 1.55 1.55 Venda 2.84 2.09 9.36 4.29 9.94 43.13 9.31 1.34 2.04 1.34 11.16 9.54 8.56 11.16 11.16 10.36 1.19 1.19 1.49 1.49 1.81 1.91 4.99 1.65 1.65 5.04 1.45 2.05 1.94 1.94 Total 62.43 235.89 168.53 47.16 69.56 345.00 167.63 107.00 165.04 157.83 122.79 76.30 179.81 78.14 66.98 72.54 142.50 118.75 119.00 98.18 18.13 21.04 34.91 108.90 39.60 151.13 319.00 205.00 96.88 58.13

Bebida Base de Chopp e Vinho DRAFIT WINE Lata 350ml Cerveja BRAHMA Malzbier Lata 350ml Cerveja Alem Dunkel ERDINGER Garrafa 500ml Cerveja Alem EISENBAHN Long Neck 355ml Cerveja Alem ERDINGER Bock Garrafa 500ml Cerveja Alem ERDINGER com 2 Garrafas 500ml Dunkel, Hefe + 1 copo Cerveja Alem ERDINGER Webbier Garrafa 500ml Cerveja ANTARCTICA Long Neck 355ml Cerveja ANTARCTICA Malzbier Long Neck 355ml Cerveja ANTARCTICA Pilsen Lata 350ml Cerveja BADEN Bitter 1999 Garrafa 600ml Cerveja BADEN Bock Especial 600ml Cerveja BADEN Cristal Pilsen 600ml Cerveja BADEN Dark Ale Stout Garrafa 600ml Cerveja BADEN Golden Lager Garrafa 600ml Cerveja BADEN Red Ale Especial 600ml Cerveja BAVARIA Lata 350ml Cerveja BAVARIA Long Neck 355ml Cerveja BAVARIA Premium Lata 350ml Cerveja BAVARIA Premium Long Neck 355ml Cerveja BAVARIA sem lcool Lata 350ml Cerveja BAVARIA sem lcool Long Neck 355ml Cerveja BOHEMIA Escura Garrafa 500ml Cerveja BOHEMIA Lata 350ml Cerveja BOHEMIA Long Neck 355ml Cerveja BOHEMIA Weiss Garrafa 550ml Cerveja BRAHMA Chopp Lata 350ml Cerveja BRAHMA Extra Long Neck 355ml Cerveja BRAHMA Liber com 0% de lcool Lata 350ml Cerveja BRAHMA Liber com 0% de lcool Long Neck 355ml

Quantidade 22 113 18 11 7 8 18 80 81 118 11 8 21 7 6 7 120 100 80 66 10 11 7 66 24 30 220 100 50 30

11/1/2012

Page 37 de 41

Refrigerante 2266
Denominao Quantidade 22 13 3 10 22 110 118 90 94 7 111 30 24 50 70 113 70 18 150 111 80 11 101 100 30 90 180 210 218 10 Custo 1.25 1.53 0.98 1.53 1.39 2.05 0.79 1.55 1.09 1.33 1.89 1.45 1.07 2.69 0.99 0.99 0.99 0.99 1.45 1.45 1.53 0.98 2.09 2.95 3.49 1.69 1.19 1.59 1.59 1.55

gua Tnica ANTARCTICA Lata 350ml gua Tnica CLASSIC Garrafa 1 Litro gua Tnica CLASSIC Lata 350ml gua Tnica CLASSIC Limo Pet 1 Litro gua Tnica SCHWEPPES Lata 350ml Refrigerante ANTARCTICA Guaran Garrafa 2 Litros Refrigerante ANTARCTICA Guaran Garrafa 237ml Refrigerante ANTARCTICA Guaran Garrafa 600ml Refrigerante ANTARCTICA Guaran Lata 350ml Refrigerante ANTARCTICA Guaran ZON Lata 350ml Refrigerante ANTARCTICA Soda Limo Garrafa 2 Litros Refrigerante ANTARCTICA Soda Limo Garrafa 600ml Refrigerante ANTARCTICA Soda Limo Lata 350ml Refrigerante ANTRTICA Guaran Garrafa 2,5 Litros Refrigerante ARUBA Cola Garrafa 2 Litros Refrigerante ARUBA Guaran Garrafa 2 Litros Refrigerante ARUBA Laranja Garrafa 2 Litros Refrigerante ARUBA Limo Garrafa 2 Litros Refrigerante BACANA Guaran Garrafa 2 Litros Refrigerante BACANA Limo Garrafa 2 Litros Refrigerante BACANA Tutti Frutti Garrafa 2 Litros Refrigerante CLASSIC Citrus Lata 350ml Refrigerante COCA COLA Garrafa 1,5 Litros Refrigerante COCA COLA Garrafa 2 Litros Refrigerante COCA COLA Garrafa 2,5 Litros Refrigerante COCA COLA Garrafa 600ml Refrigerante COCA COLA Lata 350ml Refrigerante DOLLY Cola Garrafa 2 Litros Refrigerante DOLLY Guaran Garrafa 2 Litros Cerveja BRAHMA Liber com 0% de lcool Long Neck 355ml

11/1/2012

Page 38 de 41

Refrigerante 4,415.88
Venda 1.56 1.91 1.23 1.91 1.74 2.56 0.99 1.94 1.36 1.66 2.36 1.81 1.34 3.36 1.24 1.24 1.24 1.24 1.81 1.81 1.91 1.23 2.61 3.69 4.36 2.11 1.49 1.99 1.99 1.94 Total 34.38 24.86 3.68 19.13 38.23 281.88 116.53 174.38 128.08 11.64 262.24 54.38 32.10 168.13 86.63 139.84 86.63 22.28 271.88 201.19 153.00 13.48 263.86 368.75 130.88 190.13 267.75 417.38 433.28 19.38

11/1/2012

Page 39 de 41

Diversos 90
Denominao Quantidade 3 22 13 18 21 7 Custo 3.00 7.23 7.23 11.10 7.23 7.23 Venda 3.75 9.04 9.04 13.88 9.04 9.04

1,245.11
Total 11.25 198.83 117.49 249.75 189.79 63.26

Batida Batida de Amendoim BAIANINHA Garrafa 900ml Batida de Coco BAIANINHA Garrafa 900ml Batida de Maracuj BAIANINHA Garrafa 900ml Batida de Pssego BAIANINHA Garrafa 900ml Catuaba PODEROSO Garrafa 900ml R$ 6,05

11/1/2012

Page 40 de 41

Diversos

11/1/2012

Page 41 de 41

Você também pode gostar