Notifications
Clear all

Código para salvar em diversas planilhas simultaneamente

7 Posts
2 Usuários
0 Reactions
1,143 Visualizações
(@tonaldo)
Posts: 0
New Member
Topic starter
 

Pessoal, desejaria imensamente da ajuda de vocês.
Criei um formulário para cadastro de produtos, afim de
salvar dados em até 12 planilhas que são os meses do ano.
Mas quero fazer que esses dados sejam salvos simultaneamente
nas planilhas, conforme o numero de parcelas.

Exemplo:
Se o mês for "JANEIRO", e a quantidade de parcelas for 4,
então os dados serão salvos, nas planilhas "FEVEREIRO, MARÇO, ABRIL, MAIO".

Tentei de varias maneiras, mas só consigo fazer um lançamento por vez, então
peço a vocês que me ajudem em um código que faça isso.

Private Sub btSalvar_Click()
Dim linha, final As Integer
Dim planilha As Worksheet


Set planilha = Sheets("Fevereiro") 'Define o nome da planilha para o qual os dados vão

For linha = 1 To 500

If planilha.Cells(linha, 2) = "" Then
final = linha

Exit For

End If

Next
With UserForm1 'define em quais celulas vão os dados
planilha.Cells(final, 1) = .txtDescricao.Text
planilha.Cells(final, 2) = .cboMes.Text
planilha.Cells(final, 3) = .txtValor.Text
planilha.Cells(final, 4) = .cboParcelas.Text

MsgBox "Registro salvo com sucesso!"
End With
End Sub
 
Postado : 28/11/2016 7:02 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia Tonaldo,

Tenta assim:

Option Explicit

Private Sub btSalvar_Click()
Dim wb      As Workbook
Dim wsMes   As Worksheet
Dim MesNome As Variant
Dim MesNum  As Long
Dim UltL    As Long
Dim m       As Long
Dim i       As Long

    Application.ScreenUpdating = False
    
    Set wb = ThisWorkbook
    MesNome = Array("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro")
    
    For m = 0 To 11
        If MesNome(m) = Me.cboMes.Value Then
            Exit For
        End If
    Next m
    
    For i = 1 To Me.cboParcelas * 1
        
        MesNum = m + i
        If MesNum > 11 Then MesNum = MesNum - Int(MesNum / 12) * 12

        Set wsMes = wb.Worksheets(MesNome(MesNum))
        UltL = wsMes.Cells(Rows.Count, 1).End(xlUp).Row + 1
        wsMes.Cells(UltL, 1).Value = Me.txtDescricao.Value
        wsMes.Cells(UltL, 2).Value = Me.cboMes.Value
        wsMes.Cells(UltL, 3).Value = Me.txtValor.Value
        wsMes.Cells(UltL, 4).Value = Me.cboParcelas.Value
    Next i
    
    Set wb = Nothing
    Set wsMes = Nothing
    
    Application.ScreenUpdating = True
    
    MsgBox "Registro salvo com sucesso!"
    
End Sub

Qualquer coisa da o grito.
Abraço

 
Postado : 29/11/2016 7:39 am
(@tonaldo)
Posts: 0
New Member
Topic starter
 

Boa tarde Bernardo,

Rapaz, tenho que lhe agradecer, é isso mesmo que preciso, muito obrigado Bernardo.
Aproveitando o tópico e pedindo mais uma coisa, como faço para no meio da planilha colocar um botão para chamar o formulário de cadastro ?

 
Postado : 29/11/2016 10:05 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Crie um módulo e coloque isso:

Option Explicit

public sub ChamarForm()
UserForm1.show
end sub

agora na planilha, na aba de "Desenvolvedor", clica em "Inserir" que fica dentro da categoria "Controles" a primeira opção deve ser "Botão". Atribua a macro "ChamarForm".

Qualquer coisa da o grito.
Abraço

 
Postado : 29/11/2016 10:37 am
(@tonaldo)
Posts: 0
New Member
Topic starter
 

Obrigado Bernado deu certinho.
Me ajuda em mais duas coisas, que acabei esquecendo.
Essa planilha será para lançamentos de Avista e aprazo, na hora de montar a ideia lembrei da parte do aprazo.
Então teria como, no lugar onde seleciona as parcelas, ter um AVISTA, senda que avista gravaria os dados na planilha atual ?
Exemplo: Se seleciona o mês de JANEIRO e nas parcelas ser AVISTA. os dados serem salvos na Planilha de janeiro.
E a outra ajudinha seria na ComboBox parcelas ao invés de ser números, teria como concatenar o nome PARCELAS. Para ficar assim 1 Parcela, 2 Pascelas, 3 Parcelas...
Obrigado mais uma vez!

 
Postado : 29/11/2016 11:24 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde tonaldo,

Vê se ajuda.

Qualquer coisa da o grito.
Abraço

 
Postado : 29/11/2016 12:57 pm
(@tonaldo)
Posts: 0
New Member
Topic starter
 

Boa tarde Bernado,
Ficou melhor do que eu precisava.
Muitooo obrigado.
Vlw

 
Postado : 29/11/2016 1:13 pm