Notifications
Clear all

CONTROLE DE ENTRADA DE PROCESSOS

29 Posts
3 Usuários
0 Reactions
5,390 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal, bom dia!!
.
Estou montando uma nova planilha para controle de entrada de processos lá no trabalho ... e preciso de uma ajudinha com uma Macro para copiar os dados da linha 2 e colar em na linha 4, e assim sucessivamente, sempre inserindo uma nova linha 4 para a próxima colagem (formatos e valores)!! ... Mais explicações no anexo!!
.
Desde já obrigado!!
.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/07/2018 9:09 am
(@klarc28)
Posts: 971
Prominent Member
 

Esses malabarismos são devidos às limitações do Excel e do VBA. Acho que é o máximo que dá para fazer se for digitar diretamente na planilha. Talvez seja interessante criar um formulário com controles. Aí o usuário digitaria no formulário, nem veria a planilha. No formulário dá para pular de uma caixa para a outra apertando tab, não precisa de botão alterar, dá para pesquisar somente alterando o valor da caixa de texto, dá para editar e salvar. Veja alguns exemplos de formulários no link abaixo:

https://www.youtube.com/results?search_query=vba+cadastro

 
Postado : 22/07/2018 7:17 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

.
Como são os estagiários que vão usar e todo ano teria que ensinar como se usa a planilha para os 6 estagiários, gostaria de algo mais prático!! ... Sua solução está quase perfeita, só falta resolver o problema da célula C2 que é travada, só se sai dela clicando em outra célula com o mouse!!
.
Para facilitar para quem ver o tópico agora e não leu tudo, vou resumir ...
.
1) A Macro desejada deve copiar A2:G2 e colar (apenas valores e formatos) em A4:G4
2) inserir uma nova linha em A4:G4 (para que sempre tenha uma linha para a próxima colagem)!!
3) Apagar C2:G2 para nova digitação!!
4) parar o cursor em C2!!
5) além da Macro que faça a rotina acima, gostaria de um código que verificasse se o número do processo digitado em C2 já existe abaixo (C3:C10.000) e, se existe, traga os dados mais recentes em D2:G2 (e permita alterações só na em A2:G2), e caso não exista, deixe as células C2:G2 livres para ser digitadas!!
.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/07/2018 7:39 pm
(@klarc28)
Posts: 971
Prominent Member
 

Anexo com formulário. É ainda mais prático para o usuário. E também evita que alguém exclua linhas.

 
Postado : 22/07/2018 7:41 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

.
klarc28, agradeço novamente sua dedicação em ajudar, mas até para abrir seu arquivo aqui já foi complicado (ao clicar em habilitar macros ele já some)!! ... Se vc ver aí tentei baixá-lo 5 vezes, mas ao habilitar macros ele some!!
.
De qualquer forma não gostaria do modo FORMULÁRIO, prefiro o modo simples, ou seja, isto:
.
.
Como são os estagiários que vão usar e todo ano teria que ensinar como se usa a planilha para os 6 estagiários, gostaria de algo mais prático!! ... Sua solução está quase perfeita, só falta resolver o problema da célula C2 que é travada, só se sai dela clicando em outra célula com o mouse!!
.
Para facilitar para quem ver o tópico agora e não leu tudo, vou resumir ...
.
1) A Macro desejada deve copiar A2:G2 e colar (apenas valores e formatos) em A4:G4
2) inserir uma nova linha em A4:G4 (para que sempre tenha uma linha para a próxima colagem)!!
3) Apagar C2:G2 para nova digitação!!
4) parar o cursor em C2!!
5) além da Macro que faça a rotina acima, gostaria de um código que verificasse se o número do processo digitado em C2 já existe abaixo (C3:C10.000) e, se existe, traga os dados mais recentes em D2:G2 (e permita alterações só na em A2:G2), e caso não exista, deixe as células C2:G2 livres para ser digitadas!!
.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/07/2018 7:59 pm
(@klarc28)
Posts: 971
Prominent Member
 

Foi programado para sumir. Quando se usa formulário, é comum ocultar a planilha.

 
Postado : 23/07/2018 4:14 am
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Bom dia.
Mais uma contribuição.

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 24/07/2018 1:42 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

.
wgxnet7 e karc28, obrigado pela ajuda, tá quase redondo!!
.
wgxnet7, sua contribuição tá funcionando, só falta alguns ajustes ... na verdade não existe o "editar" os dados que já foram copiados, eles ficam fixos lá em baixo (caso precise corrigir alguma coisa é só ir lá na linha e corrigir)!!...
.
A busca é só para o estagiário não precisar digitar tudo de novo (interessado, assunto, destinatário, obs) caso o processo já tenha passado pelo setor!! Se é a primeira vez que o processo foi lá, aí sim tem que digitar!! A busca evitaria inclusive que outro estagiário insira dados diferentes para um mesmo processo!!
.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/07/2018 7:21 am
(@klarc28)
Posts: 971
Prominent Member
 

Só para deixar claro o que falta para concluir o projeto:

Alternativa 1

Algum código que faça o cursor sair da caixa de texto e ir para a célula D2 e sair da célula B2 e ir para a caixa de texto, apertando Tab.

Alternativa 2

Algum código que acione a pesquisa por código sempre que houver mudança de valor na célula C2 sem sair célula C2.

Alternativa 3

Criei um formulário por apresentar a mesma funcionalidade sem essas limitações, mas não foi aceito pelo usuário.

 
Postado : 24/07/2018 12:04 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

.
clarck28 e wzxnet7, valeu mesmo ... para complementar a ideia de vocês, fiz uma gambiarra aqui que ficou ótima!! ... Ao invés do código pesquisar o número do processo e colocar o resultado na linha 2, inseri a formula na linha 2 que SUGERE o que deverá ser digitado caso o número do processo seja encontrado, e isto basta !!!!! ..... Mas a macro que vocês fizeram continua valendo!!! ... Obrigadoooooooooo!!! ... SSSSHHOOOWWW!!!
.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/07/2018 5:54 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

.
Ops!! ... Observei que a Macro não está copiando e colando apenas valores, mas gostaria dos formatos formatos também!! .................... (Moderas, por favor, conte até 10 antes de trancar k)
.

Option Explicit
Sub gravar()

    On Error GoTo errGravar
    
    If VBA.Len(VBA.Trim(wsdados.Range("c3").Value)) = 0 Then
        MsgBox "Informe um número de processo !"
        Exit Sub
    End If
        
            wsdados.Range("a5:g5").Rows.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
            wsdados.Range("a5:g5").Value = wsdados.Range("a3:g3").Value
            wsdados.Range("c3:g3").Value = ""
            wsdados.Range("c3").Select
    
    
    Exit Sub
    
errGravar:
    
    MsgBox "Um erro ocorreu, verifique !"


End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/07/2018 5:15 am
(@klarc28)
Posts: 971
Prominent Member
 
Option Explicit

Sub Macro1()

Application.ScreenUpdating = False
    Rows("4:4").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A2:G2").Select
    Selection.Copy
    Range("A4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 Range("A5:G5").Select
    Selection.Copy
    Range("A4:G4").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
Range("A2:G2").ClearContents
    Range("C2").Select
   ' ALTERA = False
    Application.ScreenUpdating = True

End Sub


 
Postado : 25/07/2018 5:29 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

.
Deu não!!
Após corrigir o código para as matrizes corretas novamente, não colou formatos (mesmo estando a linha 3, onde digito, em vermelho, a colagem é preto)!!
.

Option Explicit

Sub Macro1()

Application.ScreenUpdating = False
    Rows("5:5").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A3:G3").Select
    Selection.Copy
    Range("A5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Range("A6:G6").Select
    Selection.Copy
    Range("A5:G5").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
Range("c3:G3").ClearContents
    Range("C3").Select
   ' ALTERA = False
    Application.ScreenUpdating = True

End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/07/2018 6:20 am
(@klarc28)
Posts: 971
Prominent Member
 
Option Explicit

Sub Macro1()
'DESATIVA A EXIBIÇÃO DOS PROCESSOS NA TELA
Application.ScreenUpdating = False
'SELECIONA A LINHA ONDE VAI INSERIR OUTRA LINHA
    Rows("5:5").Select
'INSERE A LINHA
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'SELECIONA O INTERVALO QUE POSSUI OS DADOS
    Range("A3:G3").Select
'COPIA A SELEÇÃO
    Selection.Copy
'SELECIONA A CÉLULA DE DESTINO
    Range("A5").Select
'COLA OS DADOS A PARTIR DA CÉLULA DE DESTINO
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'SELECIONA O INTERVALO QUE POSSUI A FORMATAÇÃO
    Range("A3:G3").Select
'COPIA A SELEÇÃO
    Selection.Copy
'SELECIONA O INTERVALO QUE RECEBERÁ A FORMATAÇÃO
    Range("A5:G5").Select
'COLA A FORMATAÇÃO
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
'RETIRA A SELEÇÃO DAS CÉLULAS
    Application.CutCopyMode = False
'LIMPA O INTERVALO QUE CONTÉM OS DADOS
Range("c3:G3").ClearContents
'SELECIONA A CÉLULA QUE CONTÉM O CÓDIGO
    Range("C3").Select
'REATIVA A EXIBIÇÃO DOS PROCESSOS NA TELA
    Application.ScreenUpdating = True

End Sub
 
Postado : 25/07/2018 6:58 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

.
klarc28, perfeito!! ... Fechou!!
.
Moderas podem trancar se desejarem!!
.
Valeu pessoal !!!!!!!!!!!!!!!!!!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/07/2018 7:19 am
Página 2 / 2