Ir para conteúdo
Fórum Script Brasil
  • 0

Janela para controle de serviços (VBA)


Carlos Roston

Pergunta

Nesta planilha eu faço o registro dos serviços realizados diariamente. Sendo que estes serviço sofrem alterações:

1 - À realizar: quando planejo um serviço;
2- Realizada: Quando o serviço foi realizado;
3 - Reagendada: Quando planejo a visita porém ela não é feita por algum motivo. Nesse caso preciso reagendar. O reagendamento não exclue o registro original, ele cria um novo registro com o status À Realizar. O registro original muda de à realizar para reagendada.
4- Cancelada: quando ele não é feito de forma alguma se torna cancelada.

Todos os registros que insiro na planilha BD são visualizados pela planilha Cro. Porém por lá não consigo editar senão bagunçará as formulas. Então precisei criar um VBA.

Eu gostaria de poder EDITAR (mudar status, pesquisar, excluir, inserir um novo serviço, etc) os registros desta planilha por uma tela que já criei porém não consegui programar o VBA sem precisar sair da planilha CRO. Através do botão controle.

A planilha Cro é em forma da calendário. 

Toda informação que é exibida aqui (NA PLANILHA CRO) é puxada da planilha BD. eNTÃO QUALQUER ALTERAÇÃO QUE EU QUEIRA FAZER AQUI TEREI QUE IR NA OUTRA PLANILHA. Através do botão controle é exibida uma janela onde eu gostaria de fazer todos as alterações de que necessito sem a necessidade de ir na planilha BD.
Na janela controle gostaria de poder filtrar por data, por cliente, por técnico, por código etc. Gostaria de poder perquisar, excluir, inserir um novo e salva.
Ficaria imensamente grato se os amigos pudessem me ajudar .

 

Link do Arquivo:

https://docs.google.com/spreadsheets/d/1foKCksbiPFzGPUAazgGc9nrk_dA40k5d/edit?usp=sharing&ouid=108249309679913943005&rtpof=true&sd=true

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Para facilitar eu simplifiquei tudo, ao invés de duas, eu só fiz uma planilha chamada tarefas, onde a coluna A representa o cliente, a coluna b status e a coluna c data.

Para o formulário controle, usei o UserForm e dei o nome de frmControle, com duas caixas de texto (txtCliente, txtStatus), um botão (cmdPular) e um comboBox (cboStatus), e eles usam esse código:

 

Dim ultimaLinhaPesquisada As Long


Private Sub UserForm_Initialize()
    cboStatus.AddItem "Realizado"
    cboStatus.AddItem "Em Aberto"
    cboStatus.AddItem "Agendado"
    cboStatus.AddItem "Cancelado"
    ultimaLinhaPesquisada = 2 ' Começa na linha 2, assumindo que a linha 1 contém os cabeçalhos
    PesquisarProximaLinha
End Sub

Private Sub PesquisarProximaLinha()
    Dim ws As Worksheet
    Dim statusValue As String

    ' Definir a planilha "tarefas"
    Set ws = ThisWorkbook.Sheets("tarefas")

    ' Procurar a próxima linha com Status diferente de "Realizado" ou "Cancelado"
    For i = ultimaLinhaPesquisada To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
        statusValue = ws.Cells(i, 2).Value ' Coluna B contém o status
        If statusValue <> "Realizado" And statusValue <> "Cancelado" Then
            ' Copiar valores para os controles do UserForm
            Me.txtCliente.Value = ws.Cells(i, 1).Value ' Coluna A para txtCliente
            Me.txtStatus.Value = ws.Cells(i, 2).Value ' Coluna B para txtStatus
            ' Ativar a célula na coluna B da linha pesquisada
            ws.Cells(i, 2).Activate
            ultimaLinhaPesquisada = i
            Exit For
        End If
    Next i
End Sub

Private Sub cmdPular_Click()
    PesquisarProximaLinha
End Sub
Private Sub cboStatus_Change()
    Dim ws As Worksheet
    Dim statusValue As String

    ' Definir a planilha "tarefas"
    Set ws = ThisWorkbook.Sheets("tarefas")

    ' Verificar o valor selecionado na ComboBox
    statusValue = Me.cboStatus.Value
    If statusValue = "Realizado" Or statusValue = "Cancelado" Or statusValue = "Em Aberto" Then
        ' Atualizar o status na coluna B na linha específica
        ws.Cells(ultimaLinhaPesquisada, 2).Value = statusValue
        ' Colocar a data atual na coluna C na linha específica
        ws.Cells(ultimaLinhaPesquisada, 3).Value = Date
    End If
    Me.cboStatus = ""
End Sub

Para chamar o formulário dentro da planilha, você vai precisar de um módulo, e lá dentro outro código:

Sub ExibirControle()
    frmControle.Show
End Sub

Com esse código, vai ser possível usar o comando Desenvolvedor > Macros > ExibirControle.

Esse programa não prevê um código para Agendado, eu não tive tempo, mas espero que ele lhe ajude.
 

Captura de tela 2025-02-03 182915.png

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

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