Notifications
Clear all

Salvar e colocar dados em ordem crescente

5 Posts
2 Usuários
0 Reactions
1,691 Visualizações
(@robertonl)
Posts: 121
Estimable Member
Topic starter
 

Boa noite.
Encontrei neste fórum uma macro que ao salvar coloca em ordem crescente as informações salvas.
Porém ao adaptar na minha planilha dependendo da informação cadastrada, ela dá erro.

A ideia é adaptada para ler a partir da linha a2 e não ler informação da primeira linha onde se encontra o cabeçalho.
Essa ordenação deverá ser feita da segunda linha em diante.
Print do cabeçalho. (Qualquer informação e que classificação fique após o novo registro dá erro. Ex- Inicia com letras a, b e até ck)

Private Sub Btn_Salvar_Click()
'Ativar a primeira planilha
ThisWorkbook.Worksheets("Centro_Custo").Activate
'Selecionar a célula B3
Range("A2").Select
'Procura o registro existente mais proximo do txt
nlinha = Application.Match(Me.Txt_ClassCeCusto.Text, Range("A:A"), 1) + 1
'nlinha = Application.Match(Me.Txt_ClassCeCusto.Text, Range("A2"), 1) '+ 1
'Seleciona e inclui linha
Rows(nlinha).Select

Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'Posiciona a celula para inclusão de dados
Cells(nlinha, 1).Select

'Procurar a primeira célula vazia
Do
  If Not (IsEmpty(ActiveCell)) Then
      ActiveCell.Offset(1, 0).Select
  End If
Loop Until IsEmpty(ActiveCell) = True

'Carregar os dados digitados nas caixas de texto para a planilha
ActiveCell.Value = Me.Txt_ClassCeCusto.Value
ActiveCell.Offset(0, 1).Value = Me.Txt_CeCusto.Value
ActiveCell.Offset(0, 2).Value = Me.Txt_ContaCorrente.Value
ActiveCell.Offset(0, 3).Value = Me.Txt_CalcCeCusto.Value
'ActiveCell.Offset(0, 4).Value = Me.Txt_CalcCeCusto.Value
'ActiveCell.Offset(0, 5).Value = origem.Value

'Limpar as caixas de texto
Me.Txt_ClassCeCusto.Value = Empty
Me.Txt_CeCusto.Value = Empty
Me.Txt_ContaCorrente.Value = Empty
Me.Txt_CalcCeCusto.Value = Empty
'processo.Value = Empty
'origem.Value = Empty
'chassis.Value = Empty
'secretaria.Value = Empty
'setor.Value = Empty
'patrimonio.Value = Empty
'situaçao.Value = Empty

'Colocar o foco na primeira caixa de texto
'n_ordem.SetFocus

MsgBox "O registro foi salvo com sucesso!"
 Me.Txt_ClassCeCusto.Enabled = False
 Me.Txt_CeCusto.Enabled = False
 Me.Txt_ContaCorrente.Enabled = False
 Me.Txt_CalcCeCusto.Enabled = False
 Me.Btn_Salvar.Enabled = False
 Me.Btn_Novo.Enabled = True
 Me.Btn_Cancelar.Enabled = False
 
End Sub
 
Postado : 07/10/2018 8:59 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Faça todos os lançamentos necessarios e classifique no final.

Cole esse codigo no modulo

Sub Classifica()
Dim lr As Long

lr = Sheets("Centro de Custo").Range("A" & Rows.Count).End(xlUp).Row

    With Sheets("Centro de Custo").Sort
    .SortFields.Clear
    .SortFields.Add2 Key:=Range("A3:A" & lr), Order:=xlAscending
    .SetRange Range("A2:D" & lr)
    .Header = xlYes
    .Apply
    End With
End Sub

E antes de 'Limpar as caxias de texto no seu codigo escreva

call Classifica

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 08/10/2018 5:37 pm
(@robertonl)
Posts: 121
Estimable Member
Topic starter
 

Os dados são salvos a partir da segunda linha, porém utilizei a função clássica e a mesma não está classificando em ordem crescente os dados lançados.
Também a partir da segunda linha a formatação condicional é diferente da primeira linha. e quando os dados são salvos pega a formatação da primeira lina

 
Postado : 09/10/2018 11:30 am
(@mprudencio)
Posts: 2749
Famed Member
 

Ve se é assim

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 09/10/2018 12:03 pm
(@robertonl)
Posts: 121
Estimable Member
Topic starter
 

Funcionou perfeitamente

 
Postado : 09/10/2018 12:29 pm