Ir para conteúdo
Fórum Script Brasil

Alyson Ronnan Martins

Membros
  • Total de itens

    831
  • Registro em

  • Última visita

Tudo que Alyson Ronnan Martins postou

  1. Olá @zFuegos, você teria uma planilha com valores fictício para ajuda a entender melhor? Para colocar uma planilha só colocar no onedrive ou gogledrive e compartilhar via link.
  2. Fiz um teste e aparentemente esta correto. Foi criado código para fazer a leitura do conteudo do excel olhando para a a coluna de quantidade (usando constante, dessa forma você pode adaptar para sua planilha emprecisar procurar no código aonde usar ela). Public Sub DuplicarItemListaEDividirDinheiro() Dim totalLinhasPlanilha As Long Dim linhaAtual As Long Dim quantidadeAtual As Long Dim valorNovo As Double Const ACRESCIMO_LINHAS As Long = 1 Const LINHAS_INICIAL_LOOP As Long = 2 Const QUANTIDADE_MIN_DIVISOR As Long = 1 Const COLUNA_QUANTIDADE As String = "D" Const COLUNA_VALOR As String = "E" 'Captura a ultima linha da planilha totalLinhasPlanilha = fnTotalLinhas For linhaAtual = totalLinhasPlanilha To LINHAS_INICIAL_LOOP Step -ACRESCIMO_LINHAS 'Verificar se a quantida é maior de 1 quantidadeAtual = Cells(linhaAtual, COLUNA_QUANTIDADE).Value If quantidadeAtual > QUANTIDADE_MIN_DIVISOR Then 'Dividir o valor total pela quantidade valorNovo = Cells(linhaAtual, COLUNA_VALOR).Value / quantidadeAtual 'Inserir linha abaixo Rows(linhaAtual + ACRESCIMO_LINHAS & ":" & linhaAtual + quantidadeAtual - ACRESCIMO_LINHAS).Insert Shift:=xlDown 'Inicial um loop 'Caso a linha esteja vazia repete o valor da linha superior 'Coloca o valor da quantidade pelo mínimo definido 'Coloca o valorNovo na coloca valor ReplicarValorLinhaAbaixo linhaAtual, _ quantidadeAtual, _ QUANTIDADE_MIN_DIVISOR, _ valorNovo End If Next linhaAtual End Sub Para fazer o preenchimento da linhas abaixo coloquei ou outro procedimento, só para não ficar tudo misturado: Public Sub ReplicarValorLinhaAbaixo(linhaInicial As Long, quantidadeTotal As Long, quantidadeMinima As Long, novoValor As Double) Dim linhaAtual As Long Dim ultimaLinha As Long Const CORRECAO_LINHA As Long = -1 Const COL_CODIGO As String = "A" Const COL_GUIA As String = "B" Const COL_ITEM As String = "C" Const COL_QTD As String = "D" Const COL_VALOR As String = "E" ultimaLinha = linhaInicial + quantidadeTotal + CORRECAO_LINHA For linhaAtual = linhaInicial To ultimaLinha 'Caso a linha não esteja preenchida pega o texto da linha superior If Cells(linhaAtual, COL_CODIGO).Value = "" Then Cells(linhaAtual, COL_CODIGO).Value = Cells(linhaAtual + CORRECAO_LINHA, COL_CODIGO).Value Cells(linhaAtual, COL_GUIA).Value = Cells(linhaAtual + CORRECAO_LINHA, COL_GUIA).Value Cells(linhaAtual, COL_ITEM).Value = Cells(linhaAtual + CORRECAO_LINHA, COL_ITEM).Value End If 'Atualizar quantidade e valor Cells(linhaAtual, COL_QTD).Value = quantidadeMinima Cells(linhaAtual, COL_VALOR).Value = novoValor Next linhaAtual End Sub E como a planilha pode aumentar de tamanho deixei a ultima linha dinâmica fazendo uma função: Public Function fnTotalLinhas() As Long fnTotalLinhas = Cells(Rows.Count, "A").End(xlUp).Row End Function Segue o link do arquivo excel para download e teste: SepararItemResumo.xlsm Antes de processar: Depois de processar:
  3. Boa tarde, @luciano piler é assim que esta a sua tabela?
  4. Sobe seu documento no google drive ou one drive, com dados fictícios, e coloca aqui. Mais é interessante ter algum código.
  5. Boa tarde @Dorival1000, espero que esteja tudo bem e evoluindo no seu início de aprendizado. Quando você faz o procedimento gravar, tem uma linha fazendo a limpeza dos campos?
  6. Boa tarde. Você poderia usar o "SENDKEYS" para enviar comando a tela de salvar. Olhando seu código você os processos direto no código web e depois que aparece você já não vai estar manipulado HTML e sim janela.
  7. Bom dia @Mauricio Coelho Consegue colocar em anexo uma planilha para ver esse erro aqui no computador? (pode ser uma planilha com dados fictícios)
  8. Você teria uma arquivo exemplo, com dados fictícios, assim te ajudar mais facilmente? É a tabela aonde é pego os nomes dos menus
  9. Bom dia. Foi realizar um teste no seu código e vi que está funcionando. Porém de uma maneira diferente... Quando agente vai fazer uma pesquisa usamos um textbox mais você, olhando o nome do campo, está usando um label: searchValue = VPesquisado.Caption Caso eu tenha entendi errado e o campo seja um textbox altere ele para ".value" assim vai pegar o texto do campo. Agora seguindo a sua regra de negócio eu coloquei um textbox para colocar a informação em um label com o nome que preenche a listview: Coloquei um evento para limpar o listview e depois mandei fazer o prenchimento novamente assim olhando o que precisa ser colocado: Option Explicit Private Sub campo_Change() AlterarValorPesquisado campo.Value LimparListViewRes PreencherListViewRes End Sub Private Sub UserForm_Initialize() AdicionarColunasListView PreencherListViewRes End Sub Sub AdicionarColunasListView() Dim coluna As ColumnHeader ' Adiciona as colunas With ListViewRes ' Adiciona as colunas com os cabeçalhos Set coluna = .ColumnHeaders.Add(, , "EMPRESA") coluna.Width = 52 Set coluna = .ColumnHeaders.Add(, , "PRODUTO") coluna.Width = 87 Set coluna = .ColumnHeaders.Add(, , "QUANTIDADE") coluna.Width = 100 Set coluna = .ColumnHeaders.Add(, , "APRESENTACAO") coluna.Width = 190 Set coluna = .ColumnHeaders.Add(, , "PREÇO 1") coluna.Width = 62 Set coluna = .ColumnHeaders.Add(, , "PREÇO 2") coluna.Width = 50 Set coluna = .ColumnHeaders.Add(, , "EAN") coluna.Width = 50 Set coluna = .ColumnHeaders.Add(, , "DATA") coluna.Width = 50 Set coluna = .ColumnHeaders.Add(, , "PUBLICADA") coluna.Width = 60 Set coluna = .ColumnHeaders.Add(, , "ATUALIZADA") coluna.Width = 60 ' Define o estilo das colunas (opcional) ListViewRes.View = lvwReport End With End Sub Sub PreencherListViewRes() Dim searchValue As String Dim ws As Worksheet Dim lastRow As Long Dim listViewRow As Long Dim resultListView As ListView ' Defina o nome da planilha onde você deseja procurar Set ws = ThisWorkbook.Sheets("TabelaValores") ' Defina o valor do rótulo a ser pesquisado searchValue = VPesquisado.Caption ' Limpar a ListView antes de adicionar novos resultados Set resultListView = ListViewRes ' Encontrar a última linha na coluna A lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Loop através das células na coluna A e verificar os valores For listViewRow = 2 To lastRow ' Começa na linha 2 para pular o cabeçalho If LCase(Trim(ws.Cells(listViewRow, 1).Value)) = LCase(Trim(searchValue)) Then ' Adicionar os valores das colunas B a K na ListView Dim col As Integer Dim newItem As ListItem Set newItem = resultListView.ListItems.Add(, , ws.Cells(listViewRow, "B").Value) For col = 3 To 11 ' Colunas C a K newItem.ListSubItems.Add , , ws.Cells(listViewRow, col).Value Next col End If Next listViewRow End Sub Public Sub LimparListViewRes() ListViewRes.ListItems.Clear End Sub Public Sub AlterarValorPesquisado(novoValor As String) VPesquisado.Caption = novoValor End Sub @IsraelB, olha se isso era o que estava procurando.
  10. Boa noite @davimilazzo Não consegui executar o código fornecido devido a esse erro:
  11. Qual o nome da tabela? para seu item abaixo: Dessa maneira é feita uma coisa por vez.
  12. Boa noite. Ficou um pouco confuso o seu objetivo, consegue dividir ela para tentar te ajudar?
  13. Bom dia. Você tentou acompanhar o processo inspecionando a sequências do seu código? Fazendo dessa maneira da para ter uma noção de onde esta acontecendo o problema.
  14. Bom dia. Vou classificar as duvidas que encontrei no seu texto e vou colocar em tópicos: Usar função procv no VBA: Application.VLookup Eu usaria uma iteração para encontrar o texto procurado dentro da tabela. Aguardo mais duvidas.
  15. Bom dia. Sua duvida ficou um pouco confusa.
  16. Bom dia. Depende um pouco do seu conhecimento, se tiver conhecimento em VBA dá sim para fazer o "auto preenchimento" mais se você quer apenas uma pesquisa recomendo fazer um campo no cabeçalho ou no rodapé. Se você tiver um mine projeto, com dados fictícios, posso dar uma ajudar na linha de raciocínio acima.
  17. Boa tarde. Olhando o código vi que colocou duas vezes o código “CopiaCola”. Pode ter sido apenas aqui no fórum. Para aumentar a velocidade ou desempenho do seu código recomendado desativar as atualizações de tela e atualização de cálculos. Isso melhora muito porque a macro não vai ter que esperar atualizar tela ou calcular as coisas. sub CopiaCola() 'Desativar a atualizado e calculo Application.ScreenUpdating = False Application.Calculation = xlCalculationManual 'Seu código ... 'Ativar novamente a atualização e calclo Application.ScreenUpdating = originalScreenUpdating Application.Calculation = originalCalculation end sub Claro que para melhorar o desempenho as vezes você deve pensar ao contrário de uma lógico comum. Qual o real objetivo para levar as informações em outra tabela? Será que não poderia pegar o resultado que você espera usando outra solução em VBA? Mesmo assim se fosse necessário pegar essas informações eu acho que tentaria usar SQL na planilha. (Mais só testando para ver se daria certos) Espero ter ajudado
  18. Boa tarde. seria algo mais ou menos assim? Sub InserirLinha() Dim linhaParaInserir As Long ' Defina o número da linha onde você deseja inserir a nova linha linhaParaInserir = 3 ' Inserir uma nova linha acima da linha especificada Rows(linhaParaInserir).Insert End Sub
  19. Bom dia. Tenta usar o conteúdo desse artigo: Link
  20. Boa tarde. Já tentou executar seu código em modo de "debug", você pode verificar em que momento ele dar o erro 404. Dessa maneira você vai apertando F8 para ir acompanhando o seu código que foi executado.
  21. Boa tarde. Tenta definir a área de impressão por VBA: ActiveSheet.PageSetup.PrintArea = "$A$6,$A$3"
  22. Boa tarde. Tentar fazer uma consulta e usar o relatório para puxar os dados. quando você cria “sessão” (divisão para partes ou grupos do relatório) você pode colocar uma soma de determinado campo. Aí fica muito parecido com Excel.
  23. Boa tarde. Você não consegue acessar o banco de dados? Olhando ele você pode mudar seu usuário para Uppercase. Como esta a estrutura o projeto?
×
×
  • Criar Novo...