Ir para conteúdo
Fórum Script Brasil

Todas Atividades

Atualizada automaticamente

  1. Hoje
  2. Yesterday
  3. Olá! Tudo bem? O que você quer fazer é totalmente possível via VBA, e na verdade acaba ficando até mais flexível que o PROCV no Excel. A ideia é simples: quando o usuário escolher o Produto e a Embalagem no UserForm e clicar em Gerar, o VBA deve percorrer a planilha, filtrar as linhas que atendem aos critérios e somar os valores. A lógica básica funciona assim: Ler o valor selecionado nos ComboBoxes (por exemplo, cmbProduto e cmbEmbalagem). Percorrer todas as linhas da planilha onde estão os dados. Verificar se o Produto e a Embalagem da linha coincidem com a seleção. Se sim, acumular na variável de soma. Retornar o resultado no seu TextBox ou Label no UserForm. Aqui vai um exemplo simples para te ajudar a estruturar: Private Sub btnGerar_Click() Dim ws As Worksheet Dim ultimaLinha As Long Dim i As Long Dim prod As String Dim emb As String Dim soma As Double Set ws = ThisWorkbook.Sheets("Dados") ' nome da aba com os dados ultimaLinha = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row prod = cmbProduto.Value emb = cmbEmbalagem.Value soma = 0 ' Percorre todos os dados For i = 2 To ultimaLinha If ws.Cells(i, 1).Value = prod And ws.Cells(i, 2).Value = emb Then soma = soma + ws.Cells(i, 3).Value ' supondo que a soma está na coluna C End If Next i txtResultado.Value = soma End Sub Basta ajustar as colunas conforme a estrutura da sua planilha. Se quiser, pode mandar a imagem do UserForm e alguns exemplos de dados — aí posso adaptar o código exatamente ao que você precisa.
  4. Boa tarde! Pelo que entendi, você precisa agrupar os dados e somar os valores correspondentes usando VBA, transformando uma lista “massiva” em uma tabela resumida, semelhante ao exemplo da imagem. Uma abordagem simples e eficiente é usar um Dictionary para ir acumulando os valores por cada chave (por exemplo, por categoria, código, ou o campo que estiver na primeira coluna). Depois, basta escrever o resultado consolidado numa nova área da planilha. Aqui vai um exemplo de código VBA que costuma resolver exatamente esse tipo de problema: Sub AgruparESomar() Dim dict As Object Set dict = CreateObject("Scripting.Dictionary") Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Dados") ' ajustar nome da folha Dim ultimaLinha As Long ultimaLinha = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row Dim i As Long Dim chave As String Dim valor As Double ' Ler dados da lista original For i = 2 To ultimaLinha ' assumindo cabeçalho na linha 1 chave = ws.Cells(i, 1).Value valor = ws.Cells(i, 2).Value If dict.exists(chave) Then dict(chave) = dict(chave) + valor Else dict.Add chave, valor End If Next i ' Escrever resultado Dim linhaSaida As Long linhaSaida = 2 ' onde começar a saída Dim k As Variant For Each k In dict.Keys ws.Cells(linhaSaida, 4).Value = k ' coluna D = chave ws.Cells(linhaSaida, 5).Value = dict(k) ' coluna E = soma linhaSaida = linhaSaida + 1 Next k MsgBox "Processo concluído!" End Sub Como funciona: Lê cada linha da tabela original. Usa o Dictionary para somar valores repetidos. Escreve o resultado agrupado numa nova parte da planilha. Caso precise adaptar para mais colunas, somar vários campos ou usar critérios diferentes, posso ajustar o código conforme a sua estrutura de dados. Se puder, envie os nomes das colunas ou um exemplo textual da tabela!
  5. Última semana
  6. Hoje eu precisei criar três botões dentro de um <form>. Utilizei três <button>, só que os dois últimos botões não funcionaram da maneira que esperava, eles estavam submetendo o formulário, quando eu não queria isso. Assim, eu decidi mudar os últimos botões para um link, eles faziam o que eu esperava, mas tudo ficou desalinhado. O navegador desenha o <button> de um jeito e o <a> de outro. O Copilot sugeriu eu usar a classe inline-block dentro do marcador <a> e deu certo! <script src="https://cdn.tailwindcss.com"></script> <form method=post action="?rota=Entrada_modalModificado"> <button type="submit" class="w-[100px] border border-4 rounded-lg px-2"> Atualizar </button> <a class="w-[100px] border border-4 rounded-lg px-2 inline-block text-center" href='?rota=Entrada_excluir_<?=$e->id?>'> Excluir </a> <a class="w-[100px] border border-4 rounded-lg px-2 inline-block text-center" href='?rota=Entrada_entraProduto'> Cancelar </a> </form>
  7. Mais Cedo
  8. opa muito obrigado. to aqui sofrendo kkkkkk fazendo um mini erp pra madeireira. ..
  9. Muito bom! Fiz o teste por aqui e deu certo, parabéns!
  10. <!-- Etapa 2 --> <div class="etapa hidden"> <label class="block mb-2">CEP: <input type="text" id="cep" name="cep" value="<?= htmlspecialchars($cliente['cep'] ?? '') ?>" class="mt-1 block w-full border-gray-300 rounded-md" required> </label> <label class="block mb-2">Endereço: <input type="text" id="endereco" name="endereco" value="<?= htmlspecialchars($cliente['endereco'] ?? '') ?>" class="mt-1 block w-full border-gray-300 rounded-md" required> </label> <label class="block mb-2">Setor/Bairro: <input type="text" id="setor" name="setor" value="<?= htmlspecialchars($cliente['setor'] ?? '') ?>" class="mt-1 block w-full border-gray-300 rounded-md" required> </label> <label class="block mb-2">Cidade: <input type="text" id="cidade" name="cidade" value="<?= htmlspecialchars($cliente['cidade'] ?? '') ?>" class="mt-1 block w-full border-gray-300 rounded-md" required> </label> <label class="block mb-2">Estado: <input type="text" id="estado" name="estado" value="<?= htmlspecialchars($cliente['estado'] ?? '') ?>" class="mt-1 block w-full border-gray-300 rounded-md" required> </label> <!-- Campo oculto para código IBGE, se quiser armazenar --> <input type="hidden" id="ibge" name="ibge"> </div> <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script> <script> $(document).ready(function() { function limpaFormularioCep() { $("#endereco").val(""); $("#setor").val(""); $("#cidade").val(""); $("#estado").val(""); $("#ibge").val(""); } $("#cep").blur(function() { var cep = $(this).val().replace(/\D/g, ''); if (cep !== "") { var validacep = /^[0-9]{8}$/; if (validacep.test(cep)) { $("#endereco").val("..."); $("#setor").val("..."); $("#cidade").val("..."); $("#estado").val("..."); $("#ibge").val("..."); $.getJSON("https://viacep.com.br/ws/" + cep + "/json/?callback=?", function(dados) { if (!("erro" in dados)) { $("#endereco").val(dados.logradouro); $("#setor").val(dados.bairro); $("#cidade").val(dados.localidade); $("#estado").val(dados.uf); $("#ibge").val(dados.ibge); } else { limpaFormularioCep(); alert("CEP não encontrado."); } }); } else { limpaFormularioCep(); alert("Formato de CEP inválido."); } } else { limpaFormularioCep(); } }); }); </script> segue o codigo da parte do formulario de endereço e abaixo o script de busca.. o cep deve ser digitado sem - ou . assim: 75402035
  11. Cara, estamos em 2025 e ainda assim o seu foi o melhor comentário! Por mais pessoas assim!! Ainda ajuda muito a sua solução até hoje!
  12. Depois de muito tempo consegui encontrar com o Copilot a sintaxe para pegar o valor do <input> no Livewire: <input value="{{dec($histped[$indicador]['qt'])}}" wire:change="corrigirQt({{$indicador}},$event.target.value)" size="1" class="ml-3 text-right bg-transparent py-0 text-gray-500"> A maneira mais fácil de pegar o valor do input é o wire:model, onde o Livewire pode fazer uma conexão direita entre uma variável pública (tipo $histped) e o <input>, o meu problema é que usei o $histped para conectar diretamente no MySQL. O problema é que o MySQL e também o PHP usam o ponto como separador de decimal, mas o usuário no Brasil usa a vírgula. Logo não dá para usar o wire:model nesse caso. Mas,se não dá para usar o wire:model, como pegar o valor do input? Com a ajuda do Copilot, hoje conheci o parâmetro $event.target.value.
  13. Testei hoje o seguinte código no arquivo index.php <script src="https:cdn.tailwindcss.com"></script> <div class="text-red-500">Olá mundo!</div> e deu certo, mas ontem o meu programa Orçamento apareceu sem nenhum estilo. O Copilot sugeriu mudar a conexão para <script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script> O correto é criar o arquivo output.css mas eu não consegui, o melhor para mim foi pedir para o PHP conectar no servidor para buscar o estilo do Tailwind. O DevTools do Chrome reclama que não é para usar a conexão no modo produção, mas como a conexão funciona do jeito que eu espero, eu desconsidero o alerta.
  14. R E S O L V I D O ******************************************************************* Eu coloquei As teste ao final da query e ele funcionou, o problema é que estava funcionando no Firebird sem precisas informar... o final da queri fucou assim: ... co.STATUS='F' and ci.fk_produto=1 ) As Teste group by CODIGO ORDER BY CODIGO ... Obrigadio
  15. Boa tarde, Eu estou analizando uma query que esta em um adoquery do Delphi e eletem uma query que no sql server não esta funcionando, e eu analizei e vi que ela não tem um operador para a subquery alguém já viu isto a query é esta aqui ******************************************************************************************** SELECT CODIGO, coalesce(sum(QTDRENTRADA-QTDRSAIDA),0) QTDR FROM( select ci.fk_produto as codigo, coalesce(ci.qtd,0) qtdrentrada, 0 as qtdrsaida from compra_itens ci left join produto pro on pro.codigo=ci.fk_produto left join compra co on co.id=ci.fk_compra where co.STATUS='F' and ci.fk_produto=1 ) group by 1 ORDER BY CODIGO ******************************************************************************************* Ele me retorna este erro: Mensagem 156, Nível 15, Estado 1, Linha 9 Sintaxe incorreta próxima à palavra-chave 'group'. Sei que voces não estão aqui pra me ensinar a gerenciar o banco mas não consigo ter nem ideia por onde começar, até porque no delphi acontece o seguinte: No firebird ele da o mesmo erro quando eu pego esta query e jogo na console, mas no fdquery que é o componente que le o banco firebird ele valida a fdquery. Agora na adoquery que é componente que le o sqlserver no delphi ele da o mesmo erro do enterprise manager alguém consegue me ajudar nisso? apenas para complementar o debugador do enterprise manager me retorna este erro
  16. Saudações! Tenho uma tabela com 5 colunas: ANO_MES VALOR, JUROS. DESCONTOS ESTADO Onde o estado “P” é para quem pagou. Não tem a coluna valor pago que é o VALOR + JUROS – DESCONTOS O que preciso: Apresentar a soma de todas a colunas agrupadas do ANO_MES e acrescentar a coluna VLPAGO, também agrupada por ANO_MES. Fiz isso aqui, mas assim que completa, dá um erro: declare @vl_pago decimal(20,2); set @vl_pago = (select ANO_MES, (SUM(VALOR + JUROS - DESCONTOS)) as pagamento from arrecadacoes where ESTADO = 'P' and idcobranca = 1 and IDLAYOUT = 1 and ANO_MES > '202412' GROUP BY ANO_MES); SELECT ANO_MES AS ANO_MES, COUNT(ANO_MES) AS QTD, FORMAT(SUM(VALOR), 'N2') AS VLREC, FORMAT(SUM(JUROS), 'N2') AS VLJUR, FORMAT(SUM(DESCONTOS), 'N2') AS VLDES, @vl_pago AS VLPAG FROM ARRECADACOES WHERE ANO_MES>'202412' AND IDCOBRANCA = '1' AND IDLAYOUT = 1 GROUP BY ANO_MES ORDER BY ANO_MES, QTD
  17. It seems like you've run into a common issue when trying to manage form closure events in Visual Basic. Your approach to disable Alt + F4 using the `Form_QueryUnload` event is logical, but it's crucial to manage the `ReadyToClose
  18. Melon Lemonat

    While

    I can relate to the confusion around the 'while' function when I was new to programming as well. It's a loop that continues as long as a specified condition is true, which can be incredibly useful for tasks that require repetition until a certain condition is
  19. À medida que abrimos as abas (documentos) no CorelDRAW 2021, é a qntd de arquivos que ele mostra ao clicarmos no ícone do corel na barra de tarefas do Windows 11... Isso é muito irritante, pois seria melhor a janela vir para frente e aí escolheríamos para qual das abas ir. Se alguém souber alguma configuração que tire isso, por favor, entre cm contato. Muito obrigado, antecipadamente.
  20. OLA.. vou ver se consigo fazer alguma coisa no estilo.. não sei se ainda precisa mas vamos. la..
  21. Que legal ver essa discussão sobre formulários PHP! Jogos como quebra-cabeças com dominó e jornada de escolhas morais também dependem de lógica e escolhas. Vocês já pensaram em usar essa lógica de programação para criar mecânicas de jogo?
  22. Oi pessoal, Estou testando a ideia de colocar um jogo de Mahjong em HTML5 direto em uma página web, usando CSS + Flexbox para deixar o layout simples e responsivo. A estrutura é basicamente uma grade de <div> onde cada tile é um item flex. Uso flex-wrap: wrap para que as peças se reorganizem automaticamente quando a janela muda de tamanho. Também centralizo tudo com justify-content: center e defino tamanhos proporcionais usando vw e vh. O desafio é manter o layout leve mesmo com muitas sombras e animações. Em alguns navegadores, o Flexbox pode ficar lento se houver muitos elementos. Outro ponto é ajustar o espaçamento — nem muito apertado nem muito solto — em diferentes resoluções. Alguém aqui já tentou algo parecido? Usaram só Flexbox ou combinaram com CSS Grid? Estou curioso pra saber qual abordagem funciona melhor em jogos com muitas peças.
  23. Esse é o rascunho que pretendo usar no Condomínio do Cleimar Lemes, ele foi totalmente montado pelo Copilot, pedi para ele considerar a saída do relatório dentro de um celular no modo retrato (eu ainda não verifiquei se isso tudo cabe na tela do celular): <?php // Vetor de movimentos: formato 'Dia H:i:s' => valor (1 = saída, 0 = entrada) $movimentos = [ '2025-10-07 06:15:00' => 1, '2025-10-07 06:30:00' => 0, '2025-10-07 07:15:00' => 1, '2025-10-07 12:15:00' => 0, '2025-10-07 12:45:00' => 1, '2025-10-07 18:15:00' => 0, ]; // Emojis como separadores $emojis = [ 0 => '🔽', // Entrada 1 => '🔺', // Saída ]; // Construindo a linha $linha = ''; foreach ($movimentos as $dataHora => $tipo) { $horaMinuto = date('H:i', strtotime($dataHora)); $linha .= "{$emojis[$tipo]} $horaMinuto "; } // Exibir echo trim($linha); ?> Resultado: 🔺 06:15 🔽 06:30 🔺 07:15 🔽 12:15 🔺 12:45 🔽 18:15
  24. Esse não é um arquivo do seu site, mas sim um arquivo padrão do servidor usado para exibir listagens de diretório (autoindex)
  25. Bom dia. Você comercializa o fontes do SIGEP Web em Delphi? Qual o valor?
  26. top.. parabens.. visto que hoje em dia o trem ta evoluindo pra reconhecimento facial pra resgistrar as entradas e saida ne.. mas o objetivo e estudar e gerar alternativas..
  27. O Cleimar criou a tabela movimentações assim: id, idVisitante, nomeVisitante, placa,dataEntrada,horaEntrada,dataSaída,horaSaída,Acompanhantes. Eu fiz uma adaptação, usando o principio da atomicidade, e a tabela ficou assim: id, idPessoa, direcao, dataHora. Cada tabela tem que representar uma única tarefa, no caso de movimentação, alguém entra ou sai num determinado momento. O Cleimar fez um Controle de Entrada e Controle de Saída, eu já ajuntei tudo, e eu fiz o Movimento com dois botões, mais ou menos assim: <form><select /><input type="submit" name="entrada" value="registrar entrada" /><input type="submit" name="saida" value="registrar saída" /></form> Isso vai funcionar? O Copilot disse que sim, o HTML vai informar ao PHP qual o <input type="submit" /> que o usuário apertou. Eu já cadastrei o "João", ele é o único morador do condomínio. Não tem ninguém na portaria, logo o único que vai registrar a entrada e saída é ele mesmo. Mas para fazer o teste, eu precisava de um relógio artificial. Agora é 29/09/25 05:28, e para mudar isso eu preciso esperar 60 segundos. Eu precisava de um relógio mais rápido. ---- com a ajuda do Copilot e vários testes consegui isso: <?php session_start(); if (!isset($_SESSION['relogio'])) { $_SESSION['relogio'] = date('Y-m-d\TH:i:s'); } if (isset($_POST['entrada'])) { $relogioFormatado = date('Y-m-d\TH:i:s', strtotime($_POST['relogio_iso'])); $_SESSION['registros'][] = "🟢 Entrada " . date('d/m/y H:i',strtotime($_POST['relogio_iso'])); $_SESSION['relogio'] = $relogioFormatado; } if (isset($_POST['saida'])) { $relogioFormatado = date('Y-m-d\TH:i:s', strtotime($_POST['relogio_iso'])); $_SESSION['registros'][] = "🔴 Saída " . date('d/m/y H:i',strtotime($_POST['relogio_iso'])); $_SESSION['relogio'] = $relogioFormatado; } ?> <!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <title>Registro de Movimentações</title> <script src="https://cdn.tailwindcss.com"></script> </head> <body class="bg-gray-100 flex items-center justify-center min-h-screen"> <form method="post" class="bg-white p-8 rounded-lg shadow-md space-y-4 w-full max-w-md"> <h2 class="text-2xl font-bold text-gray-800 text-center">🕒 Registro de Movimentações</h2> <input type="submit" name="entrada" value="Registrar Entrada" class="w-full bg-green-500 hover:bg-green-600 text-white font-semibold py-2 px-4 rounded transition"> <input type="submit" name="saida" value="Registrar Saída" class="w-full bg-red-500 hover:bg-red-600 text-white font-semibold py-2 px-4 rounded transition"> <div class="flex flex-col"> <label for="relogio" class="text-gray-700 font-medium mb-1">Horário Atual</label> <input name="relogio" id="relogio" readonly class="bg-gray-200 text-gray-800 font-mono px-4 py-2 rounded border border-gray-300 cursor-pointer hover:bg-gray-300 transition"> <small class="text-gray-500 mt-1">Clique no campo para avançar 2 horas</small> <input type="hidden" name="relogio_iso" id="relogio_iso"> </div> <?php if (!empty($_SESSION['registros'])): ?> <div class="mt-4 bg-gray-50 p-4 rounded border border-gray-200"> <h3 class="text-lg font-semibold text-gray-700 mb-2">📋 Registros:</h3> <ul class="list-disc list-inside text-gray-600 space-y-1"> <?php foreach ($_SESSION['registros'] as $registro): ?> <li><?= htmlspecialchars($registro) ?></li> <?php endforeach; ?> </ul> </div> <?php endif; ?> </form> <script> let relogioInput = document.getElementById('relogio'); let dataAtual = new Date("<?= $_SESSION['relogio'] ?>"); function atualizarRelogio() { relogioInput.value = dataAtual.toLocaleString('pt-BR'); document.getElementById('relogio_iso').value = dataAtual.toISOString().slice(0, 19); } setInterval(() => { dataAtual.setMinutes(dataAtual.getMinutes() + 30); atualizarRelogio(); }, 1000); relogioInput.addEventListener('click', () => { dataAtual.setHours(dataAtual.getHours() + 2); atualizarRelogio(); }); atualizarRelogio(); </script> </body> </html>
  28. O projeto original está nesse endereço: https://drive.google.com/file/d/1Udo-PV4HAt6k3UGBICqlga6mwDAQx7FE/view?usp=sharing Vou tentar estudar o projeto dele, mas pretendo usar as classes e o CDN da tailwind e compartilhar nesse endereço: https://github.com/frankhosaka/condominio 27/09/2025 Criei os arquivos config.php e index.php para criar o banco de dados condomínio, com uma tabela usuários com apenas um morador que se chama João. 28/09/2025 Criei vários arquivos para executar a tarefa do login.
  1. Mais Resultados


  • Estatísticas dos Fóruns

    • Tópicos
      152,5k
    • Posts
      652,4k
×
×
  • Criar Novo...