quarta-feira, 10 de setembro de 2025

🔢 Post 2 – Sua primeira calculadora em Python! 🧮✨

 Você já aprendeu a mostrar mensagens na tela e até pedir o nome do usuário (Post 1). Agora vamos dar um passo a mais: criar uma calculadora simples que soma dois números.

Sim, já vamos para um projeto útil de verdade 😃.


🐣 Passo a passo do código

# Primeiro pedimos o primeiro número num1 = input("Digite o primeiro número: ") # input() mostra a pergunta e espera o usuário digitar algo no teclado. # O que for digitado será guardado dentro da variável num1. # Importante: por padrão, o input() sempre guarda como texto (string). # Depois pedimos o segundo número num2 = input("Digite o segundo número: ") # Aqui acontece a mesma coisa, o valor digitado vai para a variável num2. # Precisamos converter os valores para números inteiros num1 = int(num1) # int() transforma o valor que estava em formato de texto para número inteiro. num2 = int(num2) # Agora fazemos a soma resultado = num1 + num2 # O símbolo + faz a operação de adição entre os dois números. # Por fim mostramos o resultado na tela print("A soma é:", resultado) # print() exibe a frase "A soma é:" seguida do valor guardado na variável resultado.

💻 Exemplo de saída

Digite o primeiro número: 5 Digite o segundo número: 7 A soma é: 12

📌 O que você aprendeu hoje?

  • input() sempre guarda valores como texto (string).

  • Usamos int() para transformar texto em número inteiro.

  • Guardamos valores em variáveis (num1, num2, resultado).

  • Fizemos uma operação matemática real com Python! 🎉


🎯 Desafio extra

Tente modificar o código para fazer subtração (-), multiplicação (*) e divisão (/).
👉 Dica: basta trocar o sinal + pelo operador desejado.


⏭️ O que vem por aí?

No próximo post, vamos transformar essa calculadora em algo ainda mais poderoso: uma Calculadora de Quatro Operações, onde o usuário escolhe se quer somar, subtrair, multiplicar ou dividir! 🔥


💬 E aí, conseguiu somar seus primeiros números em Python?

🛰️ Automação em VBA: Scanner de Disponibilidade de Arquivos em Rede

 🧐 O Problema

Em ambientes empresariais:

  • Existem planilhas críticas salvas em pastas de rede.

  • Muitas vezes alguém tenta abrir e… ❌ “Arquivo não encontrado” ou “Rede indisponível”.

  • Não existe uma forma rápida de o próprio Excel testar se os arquivos estão acessíveis antes de usá-los em macros ou relatórios.


💡 A Solução

Criar uma automação em VBA que funciona como um scanner de arquivos de rede:

  • Lê uma lista de caminhos de arquivos (armazenada em uma aba chamada "MapeamentoRede").

  • Testa se cada arquivo realmente existe na rede.

  • Retorna em uma aba "StatusRede" com:

    • 📂 Caminho do arquivo

    • ✅ Disponível ou ❌ Não encontrado

    • ⏱️ Data/hora do último teste

Isso transforma o Excel em um validador de links de rede corporativa.


🚀 Como Funciona

  1. Na aba "MapeamentoRede", o usuário lista os arquivos da rede que deseja monitorar.
    Exemplo:

    Caminho do Arquivo
    \Servidor01\Financeiro\Vendas.xlsx
    \Servidor02\RH\Folha.xlsx
    \Servidor03\TI\Inventário.xlsx
  2. Executa a macro.

  3. Na aba "StatusRede", o VBA preenche automaticamente o resultado da checagem.


🧑‍💻 Código VBA

Sub ScannerArquivosRede() Dim wsMap As Worksheet, wsStatus As Worksheet Dim ultimaLinha As Long, i As Long Dim caminho As String, existe As Boolean ' Define as planilhas Set wsMap = ThisWorkbook.Sheets("MapeamentoRede") ' Cria/limpa a aba de status On Error Resume Next Set wsStatus = ThisWorkbook.Sheets("StatusRede") If wsStatus Is Nothing Then Set wsStatus = Sheets.Add wsStatus.Name = "StatusRede" End If wsStatus.Cells.Clear On Error GoTo 0 ' Cabeçalho wsStatus.Range("A1:C1").Value = Array("Caminho do Arquivo", "Status", "Última Verificação") ' Última linha na aba de mapeamento ultimaLinha = wsMap.Cells(wsMap.Rows.Count, 1).End(xlUp).Row ' Varre cada caminho listado For i = 2 To ultimaLinha caminho = wsMap.Cells(i, 1).Value If Dir(caminho) <> "" Then wsStatus.Cells(i, 1).Value = caminho wsStatus.Cells(i, 2).Value = "✅ Disponível" Else wsStatus.Cells(i, 1).Value = caminho wsStatus.Cells(i, 2).Value = "❌ Não encontrado" End If wsStatus.Cells(i, 3).Value = Now Next i MsgBox "🔎 Verificação concluída! Veja a aba 'StatusRede'.", vbInformation End Sub

📊 Exemplo de saída (StatusRede)

Caminho do ArquivoStatusÚltima Verificação
\Servidor01\Financeiro\Vendas.xlsx✅ Disponível06/09/2025 10:30:15
\Servidor02\RH\Folha.xlsx❌ Não encontrado06/09/2025 10:30:15
\Servidor03\TI\Inventário.xlsx✅ Disponível06/09/2025 10:30:15

🎯 Onde é útil?

✅ Controle de links críticos de relatórios.
✅ Auditoria de acessibilidade em pasta de rede compartilhada.
✅ Evitar erros em macros que dependem de arquivos externos.
✅ Monitoramento de servidores corporativos.


🔥 Por que é útil ?

Pouca gente pensa em usar Excel VBA como um monitor de acessibilidade de arquivos em rede.
Normalmente isso é feito com scripts de TI (PowerShell, Python).
Aqui, qualquer usuário corporativo pode rodar direto do Excel.

📘✨ Excel VBA na Prática: Usando o Método Areas do Objeto Range

Quando trabalhamos no Excel, muitas vezes precisamos lidar com intervalos múltiplos (não contíguos), como quando selecionamos várias células separadas segurando a tecla CTRL.

No VBA, o objeto Range possui o método Areas, que facilita a manipulação desses conjuntos de intervalos. 🚀


🔎 Definição

  • Range.Areas → Retorna uma coleção de áreas (subintervalos) dentro de um intervalo múltiplo.

  • Cada área pode ser acessada individualmente como um objeto Range.


🧑‍💻 Exemplos práticos

1️⃣ Descobrir quantas áreas existem em uma seleção

Sub ContarAreas() Dim TotalAreas As Long TotalAreas = Selection.Areas.Count MsgBox "A seleção possui " & TotalAreas & " áreas diferentes." End Sub

👉 Se você selecionar, por exemplo, A1:A5 e C1:C5, o resultado será 2 áreas.


2️⃣ Trabalhar com cada área separadamente

Sub DestacarAreas() Dim i As Long For i = 1 To Selection.Areas.Count Selection.Areas(i).Interior.Color = vbYellow Next i End Sub

👉 Cada área da seleção será destacada em amarelo.


3️⃣ Usar cada área em cálculos

Sub SomarAreas() Dim i As Long, Soma As Double For i = 1 To Selection.Areas.Count Soma = Soma + WorksheetFunction.Sum(Selection.Areas(i)) Next i MsgBox "A soma total das áreas selecionadas é: " & Soma End Sub

👉 O VBA percorre cada área e calcula o total, somando tudo em uma única saída.


💡 Dica útil na automação:
O método Areas é ideal quando o usuário faz seleções personalizadas no Excel e você precisa percorrer cada conjunto de células para formatar, validar ou calcular valores de forma independente.


🟢📢 Consultoria Contábil Inteligente
💼 Abertura e registro de empresas no Simples Nacional
📊 Acompanhamento contábil e fiscal mensal
⚖️ Planejamento tributário estratégico para pagar só o justo

👉 Entre em contato e mantenha sua empresa organizada com segurança!

terça-feira, 9 de setembro de 2025

🐍 Post 1 – Olá Mundo em Python: a primeira linha do seu futuro! 🚀

Bem-vindo(a) à Série de 100 Projetos em Python para Iniciantes! 🎉

Se você sempre quis aprender programação, mas achava que era coisa de gente com cara de gênio 🤓, respira fundo: você está no lugar certo!

Aqui, cada post será um mini-projeto prático, divertido e direto ao ponto. Ou seja: nada de ficar só na teoria chata 📚. Você vai aprender Python construindo coisas de verdade — desde scripts simples até sistemas completos com banco de dados, automação e até inteligência artificial.

👉 Spoiler: no post 100 você vai ter feito um sistema profissional com interface, relatórios em Excel e PDF, automação de navegador e muito mais.


🐣 O primeiro passo: Olá, Mundo! 🌍

Se você nunca programou, relaxa: todo programador começou do zero, escrevendo a famosa frase mágica “Olá, Mundo!”.

É um ritual de passagem. É como acender a chama olímpica da sua carreira na programação 🔥.

Aqui vai seu primeiro código em Python:

print("Olá, Mundo!") # O comando print() serve para mostrar algo na tela. # O texto entre aspas ("Olá, Mundo!") é o que será exibido.

Saída no console:

Olá, Mundo!

🎯 O que acontece aqui?

  • print() → função que exibe algo na tela.

  • "Olá, Mundo!" → texto (também chamado de string) que você mandou o Python mostrar.


🛠️ Projeto do dia: sua primeira mensagem personalizada

Agora vamos deixar esse programa um pouquinho mais divertido: em vez de mostrar só “Olá, Mundo!”, ele vai perguntar seu nome e dar boas-vindas.

nome = input("Qual é o seu nome? ") # input() pede que o usuário digite alguma coisa. # O texto dentro de aspas ("Qual é o seu nome? ") # é a pergunta que aparece na tela. # O que você digitar será guardado na variável "nome". print("Olá,", nome, "! Bem-vindo(a) ao Python 🚀") # O print() aqui mostra o texto "Olá," seguido do valor que está dentro da variável nome. # Depois junta com a frase final "Bem-vindo(a) ao Python 🚀".

Exemplo de saída:

Qual é o seu nome? José Olá, José ! Bem-vindo(a) ao Python 🚀

✨ Missão cumprida!

Parabéns 🎉, você escreveu seu primeiro programa em Python.

📌 O que você aprendeu hoje:

  • Usar print() para mostrar informações.

  • Usar input() para perguntar algo ao usuário.

  • Guardar o que o usuário digitou dentro de uma variável (nome).


⏭️ O que vem por aí?

No próximo post vamos criar uma calculadora simples 🔢, que vai somar dois números informados por você.


👉 Não esquece de acompanhar a série “100 Projetos em Python” aqui no blog!
Se você seguir passo a passo, vai sair de iniciante absoluto até criar sistemas profissionais.


💬 Me conta nos comentários: conseguiu rodar seu primeiro código?

🧠 Automação em VBA: Detector Automático de Colunas com Unidade de Medida

 🧐 O Problema

Planilhas empresariais muitas vezes misturam valores e unidades de medida:

  • 📦 “100 kg” em vez de só 100.

  • 💰 “R$ 250,00” dentro da célula como texto.

  • ⛽ “35 litros” misturado com o número.

Isso atrapalha somas, filtros e cálculos — porque o Excel não entende que é número + unidade.
Normalmente alguém precisa limpar manualmente antes de usar os dados.


💡 A Solução

Um detector automático de unidades de medida com VBA:

  • Varre todas as células numéricas/textuais.

  • Identifica se há números misturados com texto (ex.: “kg”, “R$”, “L”, “unid”).

  • Separa automaticamente em duas colunas:

    • 🔢 Valor numérico.

    • 🏷️ Unidade de medida.

  • Gera um relatório indicando quais colunas continham misturas.

É como dar ao Excel uma inteligência para higienizar dados sujos de forma automática. 🧼


🚀 Como Funciona

  1. Usuário executa a macro "SepararUnidades".

  2. O VBA percorre cada aba, célula por célula.

  3. Se detectar texto com número + letras, quebra em 2 partes.

  4. Cria novas colunas: Valor e Unidade.


🧑‍💻 Código VBA (conceito simplificado)

Sub SepararUnidades() Dim ws As Worksheet Dim ultimaCol As Long, ultimaLin As Long Dim i As Long, j As Long Dim valor As String, num As String, unidade As String Dim regex As Object, matches As Object Set regex = CreateObject("VBScript.RegExp") regex.Pattern = "([0-9,.]+)\s*([A-Za-z%$]+)" regex.IgnoreCase = True For Each ws In ThisWorkbook.Sheets ultimaCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column ultimaLin = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row For j = 1 To ultimaCol For i = 2 To ultimaLin valor = Trim(ws.Cells(i, j).Value) If regex.Test(valor) Then Set matches = regex.Execute(valor) If matches.Count > 0 Then num = matches(0).SubMatches(0) unidade = matches(0).SubMatches(1) ws.Cells(i, j).Offset(0, 1).Value = num ws.Cells(i, j).Offset(0, 2).Value = unidade End If End If Next i Next j Next ws MsgBox "✅ Separação concluída! Veja colunas ao lado dos dados originais.", vbInformation End Sub

📊 Exemplo prático

OriginalValorUnidade
100 kg100kg
R$250,00250,00R$
35 litros35litros

🎯 Onde é útil?

✅ Estoques (quantidade + unidade: “100 caixas”).
✅ Financeiro (valores com “R$” dentro da célula).
✅ Produção industrial (medidas: “50m”, “120cm”).
✅ Relatórios de consumo (“20L”, “15Kg”).


🔥 Por que é útil ?

Pouca gente imagina criar no Excel um sistema automático para separar unidades de medida.
Esse tipo de tratamento geralmente é feito em softwares de ETL ou bancos de dados — aqui você tem isso direto no Excel com VBA.

🔔 Automação em Excel VBA: Detector Automático de Silos de Informação

 🧐 O Problema

Nas empresas, acontece muito isso:

  • Várias áreas mantêm planilhas próprias (Financeiro, Compras, RH).

  • Cada uma tem colunas com informações parecidas (ex.: “CPF”, “CNPJ”, “Código do Cliente”).

  • Mas ninguém sabe que dados iguais estão duplicados em planilhas diferentes.

Resultado:

  • ❌ Duplicidade de registros.

  • ❌ Informações desencontradas.

  • ❌ Retrabalho e inconsistência nos relatórios.


💡 A Solução

Um Detector Automático de Silos em VBA:

  • Varre todas as planilhas do arquivo.

  • Procura colunas com cabeçalhos iguais ou semelhantes (ex.: “CNPJ” e “CNPJ Cliente”).

  • Compara os valores e identifica dados duplicados em diferentes abas.

  • Gera um relatório consolidado mostrando onde estão os mesmos clientes/fornecedores espalhados.

É como dar ao Excel uma visão global dos cadastros escondidos. 🔍


🚀 Como Funciona

  1. O usuário executa a macro "DetectarSilos".

  2. O VBA percorre todas as planilhas e monta um índice de campos-chave (ex.: CPF, CNPJ, Código, Email).

  3. Compara os dados entre as planilhas.

  4. Gera uma aba chamada "RelatorioSilos" listando:

    • Nome da planilha.

    • Coluna encontrada.

    • Valor repetido.

    • Onde mais ele aparece.


🧑‍💻 Código VBA (conceito simplificado)

Sub DetectarSilos() Dim ws As Worksheet, wsRel As Worksheet Dim ultimaCol As Long, ultimaLin As Long Dim dict As Object, chave As String Dim i As Long, j As Long, linhaRel As Long Set dict = CreateObject("Scripting.Dictionary") ' Criar/limpar relatório On Error Resume Next Set wsRel = ThisWorkbook.Sheets("RelatorioSilos") If wsRel Is Nothing Then Set wsRel = ThisWorkbook.Sheets.Add wsRel.Name = "RelatorioSilos" End If On Error GoTo 0 wsRel.Cells.Clear wsRel.Range("A1:D1").Value = Array("Planilha", "Coluna", "Valor", "Localização") linhaRel = 2 ' Varre todas as planilhas For Each ws In ThisWorkbook.Sheets If ws.Name <> wsRel.Name Then ultimaCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column ultimaLin = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row For j = 1 To ultimaCol chave = UCase(Trim(ws.Cells(1, j).Value)) ' Só considera cabeçalhos relevantes If chave Like "*CPF*" Or chave Like "*CNPJ*" Or chave Like "*EMAIL*" Or chave Like "*COD*" Then For i = 2 To ultimaLin If ws.Cells(i, j).Value <> "" Then If dict.exists(ws.Cells(i, j).Value) Then wsRel.Cells(linhaRel, 1).Value = ws.Name wsRel.Cells(linhaRel, 2).Value = chave wsRel.Cells(linhaRel, 3).Value = ws.Cells(i, j).Value wsRel.Cells(linhaRel, 4).Value = dict(ws.Cells(i, j).Value) linhaRel = linhaRel + 1 Else dict(ws.Cells(i, j).Value) = ws.Name & "!" & ws.Cells(1, j).Address End If End If Next i End If Next j End If Next ws MsgBox "Relatório de silos gerado com sucesso!", vbInformation End Sub

📊 Onde é útil no dia a dia?

✅ Descobrir clientes duplicados cadastrados em várias planilhas.
✅ Detectar fornecedores repetidos em compras e financeiro.
✅ Identificar funcionários cadastrados em RH e benefícios.
✅ Evitar retrabalho e inconsistências em relatórios.


🎯 Por que é útil ?

Quase ninguém pensa em usar o Excel para mapear informações duplicadas entre abas diferentes.
Essa automação cria uma visão que geralmente só bancos de dados avançados conseguem — mas aqui, direto no Excel, com VBA.

😅 Um homem prevenido vale por dois (literalmente!) 😅

 Você já deve ter ouvido aquele ditado famoso: “Um homem prevenido vale por dois”.

Pois bem, a charada de hoje leva esse ditado ao pé da letra…

👉 Havia uma placa em uma ponte que dizia:
"Esta ponte só aguenta um homem por vez."

Um homem chegou, leu a placa e atravessou.
Mas… adivinha? A ponte caiu!

Por quê?
Porque ele era um homem prevenido!
E como o ditado diz, um homem prevenido vale por dois.
Ou seja… a ponte achou que eram dois homens passando ao mesmo tempo. 😂


Moral da história:

Às vezes, levar os ditados ao pé da letra pode ser desastroso… ou no mínimo, bem engraçado!

🔑 Mas fica a lição: estar prevenido é sempre bom, seja na vida pessoal, nos negócios, nas finanças ou até mesmo quando você atravessa uma ponte suspeita.


👉 E você? Já levou algum ditado ao pé da letra e acabou em uma situação engraçada? Conta aí nos comentários!