Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#21215
Pessoal,
Bom dia !

Preciso de uma ajudinha nesse código, criei esse sistema de controle de processos interno, um usuário me ajudou a criar os códigos, só que tenho um probleminha.

ex: Cadastro a entrada do Processo em tempo real, assim que ele chega na unidade é cadastrado. Já a saída do Processo posso cadastrar no dia ou posso levar uma semana ou até mais pra dar saída.

O problema é : Todas ás vezes que coloco o Nº DE PROCESSO e clico em LOCALIZAR, localizo normalmente as informações do servidor mais quando coloco a DATA SAIDA - HORA SAIDA E ENCAMINHAMENTO e clico em SALVAR o código cadastra novamente as informações , o qual não é para recadastrar é só para preencher as informações da SAÍDA DO PROCESSO já cadastrado.

Obrigado pela ajuda desde de já.
2017.03.10 - SISTEMA DE PROCESSOS2.xlsm
Você não está autorizado a ver ou baixar esse anexo.
#21217
Bom dia!!

Você pretende prevenir a entrada de dados duplicado na guia DADOS baseado na matricula?

Veja se ajuda.
Código: Selecionar todos
Private Sub CommandButton2_Click()

    If TextBox1 = "" Then
        MsgBox "Informe numero da matricula de cadastro!", vbInformation, "Cadastro Matricula"
        TextBox1.SetFocus
        Exit Sub
    End If
    '###########  AleVBA  #######################
    Dim iRow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("DADOS")
        iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    If WorksheetFunction.CountIf(ws.Range("A2", ws.Cells(iRow, 1)), Me.TextBox1.Value) > 0 Then
        MsgBox "Informação duplicada", vbCritical
        Exit Sub
    End If
   '###########  AleVBA  #######################
On Error Resume Next
codigo = TextBox1
Plan2.Select 'seleciona a Plan2
Range("A1048576").Select 'seleciona a ultima linha da Plan6
Selection.End(xlUp).Select 'sobe até o primeira célula com conteúdo
ActiveCell.Offset(1, 0).Select 'desce para célula em branco
linha = ActiveCell.Row 'captura na variável o valor da linha atual
    With Plan2
        .Cells(linha, 1) = TextBox1 'matricula
        .Cells(linha, 2) = TextBox2 'servidor
        .Cells(linha, 3) = TextBox3 ' processo
        .Cells(linha, 4) = TextBox4 ' dataentrada
        .Cells(linha, 5) = TextBox10 'datahora
        .Cells(linha, 6) = TextBox7
        .Cells(linha, 7) = TextBox5
        .Cells(linha, 8) = TextBox6
        .Cells(linha, 9) = TextBox9
        .Cells(linha, 10) = TextBox11
        .Cells(linha, 11) = TextBox8
    End With
MsgBox ("Dados Cadastrados com sucesso!!!")

Call limpar

End Sub
Att
#21222
AlexandreVBA,
Bom dia amigo !

O que eu preciso é : Quando coloco o Nº DE PROCESSO aparece todas as informações normalmente, até ai tudo bem ! O problema está quando insiro a DATA SAIDA - HORA E ENCAMINHAMENTO do processo, quando clico em SALVAR repare que lá na PLAN "DADOS" ele duplica o cadastro por causa da SAÍDA DO PROCESSO.

O correto seria , quando colocar o número do PROCESSO que cadastrei e clicar em LOCALIZAR aparecer as informações como aparece normalmente e quando cadastrar a SAÍDA DO PROCESSO essa saida tem que ir para o mesmo PROCESSO CADASTRADO AO LADO na plan " DADOS".

Não sei se você me entendeu, faça uma simulação. Cadastre só a entrada do PROCESSO e deixe a saída para depois, assim que CADASTRAR A ENTRADA DO PROCESSO E CLICAR EM SALVAR , volte novamente e tente LOCALIZAR esse cadastro com o mesmo número do PROCESSO e coloque a SAÍDA DO PROCESSO.

Você vai perceber que ao cadastrar a SAÍDA DO PROCESSO e clicar em SALVAR ele multiplica o numero de CADASTRO na PLAN "DADOS" e não é para MULTIPLICAR é só para colocar ao LADO do processo cadastrado a SAIDA DO PROCESSO.
#21246
Veja se ajuda.

Acrescente o segundo trecho abaixo.
Se quiser limpar o Form após salvar a saída, remova o apóstrofo do início da linha 'Call limpar.
Código: Selecionar todos
Private Sub CommandButton2_Click()

If TextBox1 = "" Then
MsgBox "Informe numero da matricula de cadastro!", vbInformation, "Cadastro Matricula"
TextBox1.SetFocus
Exit Sub
End If

Dim c As Long
With Sheets("Dados")
 If Application.CountIf(.[C:C], TextBox3.Text) > 0 Then
  c = .[C:C].Find(TextBox3.Text, lookat:=xlWhole).Row
  .Cells(c, 9) = TextBox9.Text
  .Cells(c, 10) = TextBox11.Text
  .Cells(c, 11) = TextBox8.Text
  'Call limpar
  Exit Sub
 End If
End With
...
...
...
#21262
Amigos,
Boa noite !

Não sei se sou eu que não estou sabendo aplicar o código ou se está acontecendo alguma divergência de informação que não soube explicar corretamente. Pensando nisso editei uma imagem explicando o erro que está acontecendo.

Desde de já agradeço a todos pela colaboração, AlexandreVBA - Osvaldomp sempre ajudando a galera , desde de 2009 +- que conheci vocês , Osvaldo no Club do Hardware , AlexandreVBA no Planilhando e agora estamos aqui no Guru. rsrs

Segue imagem....

Imagem
#21266
Fala, DIVS, beleza?

Para lançar a saída de um Processo:
1. preencha os campos Nº DE PROCESSO, DATA SAÍDA, HORA SAÍDA e ENCAMINHADO
2. clique no botão "LOCALIZAR" e em seguida clique no botão "SALVAR"

Ao clicar em "SALVAR" o trecho de código que eu sugeri não vai duplicar o registro e sim vai lançar os dados dos campos DATA SAÍDA, HORA SAÍDA e ENCAMINHADO, no registro correspondente ao número de Processo informado.
É possível dispensar o clique no botão "LOCALIZAR", para isso precisaria alterar a sequência de comandos no seu código original.

Para cadastrar um processo continue fazendo como você já fazia: preencha os campos e clique em "SALVAR".
#21284
Osvaldomp,
Bom dia !

Obrigado ! Funcionou perfeitamente.

Aproveitando o ensejo, gostaria que você ou alguém me ajudasse nessa outra parte do código, criei só que não funciona de forma correta.

Quero tirar um RELATÓRIO MENSAL entre datas ( DATA ENTRADA - DATA SAÍDA ) e que além de tirar esse relatório o mesmo me informe o RELATÓRIO individual por ASSUNTO e a QTDE de registro por assunto.

veja:
Código: Selecionar todos
Sub sbx_relatorio_por_data()
Dim wLin, i As Long
x = Cells(Rows.Count, "D").End(xlUp).Row + 1
Range(Cells(8, "D"), Cells(x, "I")).ClearContents
 wLin = 8
 For i = 1 To Cells(Rows.Count, "G").End(xlUp).Row
     If Cells(i, "G").Value >= Cells(1, "f") And Cells(i, "G").Value <= Cells(2, "f").Value Then
        Cells(i, "G").Resize(, 2).Copy Cells(wLin, "D")
        wLin = wLin + 1
        tSoma = tSoma + Cells(i, "c").Value
     End If
 Next i
     Cells(wLin + 1, "D").Value = "Total...:"
     Cells(wLin + 1, "I").Value = tSoma


Imagem




Obrigado !
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord