1
resposta

Desafio Concluido.

Faça um código de VBA para a banco de dado do cliente.

ID_Cliente deve ter na sua coluna A o texto "byte_" junto com o número do cliente

Clientes deve ter na sua coluna B a limpeza dos caracteres &,%,# e *.

Total Investido deve ter na sua coluna C a formatação em moeda de reais.

E-mail deve ter na sua coluna D o texto da Coluna A junto com esse texto "@btyebank.com"

Todas colunas deve está executado esse código no loop até chegar numa linha branca e formatar todas as colunas numa tabela dinamica e fazer uma cópia dessa planilha e renomear com "Revisão" com o dia e o mês.

Sub FormatarBancoDefinitivo()
    Dim i As Long
    Dim tbl As ListObject
    
    Application.ScreenUpdating = False ' Desliga atualização de tela
    
    ' Remove o formato de tabela antes de começar para não dar erro de sobreposição
    For Each tbl In ActiveSheet.ListObjects
        tbl.Unlist
    Next tbl
    
    i = 2
    ' Loop até encontrar célula vazia na coluna B
    Do While Cells(i, 2).Value <> ""
        
        ' Coluna A: Adiciona "byte_"
        If InStr(1, Cells(i, 1).Value, "byte_") = 0 Then
            Cells(i, 1).Value = "byte_" & Cells(i, 1).Value
        End If
        
        ' Coluna B: Remove &, %, #, *, e $
        Cells(i, 2).Value = Replace(Replace(Replace(Replace(Replace(Cells(i, 2).Value, "&", ""), "%", ""), "#", ""), "*", ""), "$", "")
        
        ' Coluna C e D: Formatação de Moeda e E-mail
        Cells(i, 3).NumberFormat = "R$ #,##0.00"
        Cells(i, 4).Value = Cells(i, 1).Value & "@bytebank.com"
        
        i = i + 1
    Loop
    
    ' ======= CORREÇÃO AQUI =======
    ' Removidos os parênteses da linha de criação da tabela!
    On Error Resume Next
    ActiveSheet.ListObjects.Add SourceType:=xlSrcRange, Source:=Range("A1:D" & i - 1), XlListObjectHasHeaders:=xlYes
    On Error GoTo 0
    ' =============================
    
    ' Copia a aba e renomeia
    ActiveSheet.Copy After:=ActiveSheet
    
    On Error Resume Next 
    ActiveSheet.Name = "Revisão " & Format(Date, "dd-mm")
    On Error GoTo 0
    
    Application.ScreenUpdating = True
End Sub
1 resposta

Olá, Diogo! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de loops para percorrer as linhas da planilha com VBA, utilizou muito bem o tratamento de strings para limpar caracteres indesejados e ainda compreendeu a importância da formatação de colunas para organizar os dados.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Sugestão de conteúdo para você mergulhar ainda mais no tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!