Notifications
Clear all

Código alterar plan´s

3 Posts
2 Usuários
0 Reactions
1,029 Visualizações
(@rui-maciel)
Posts: 190
Reputable Member
Topic starter
 

Boa noite
Tenho um problema relativamente ao alterar os dados em várias planilhas com um só userform, ou seja, com o meu userform2, que já altera a plan "Paroquianos", mas queria também que altera-se na plan "Dados_Preencher" na coluna "B", "Modelo" nas colunas "A" e "B" e nas abas com os vários anos também nas colunas "A" e "B" para que toda a informação estivesse atualizada. Pois, não tenho encontrado a solução para realizar tal alteração, mesmo pequisando nos foruns não encontro nada que faça tal rotina. Podem-me ajudar, obrigado. Segue em anexo aplicativo "ADM" e senha "1234".
Abraço,
RM

 
Postado : 03/02/2018 7:06 pm
(@klarc28)
Posts: 971
Prominent Member
 

Primeiro - Língua Portuguesa

alterasse, pedisse, fizesse, localizasse, encontrasse...

Em vez de

altera-se, pede-se, faz-se, localiza-se, encontra-se...

Segundo - Identificação de erros

Dica: acostume-se a executar o código passo a passo, apertando F8. Muitos erros podem ser detectados dessa forma.

Terceiro - Lentidão no processamento

Dica: evite usar select e activecell, pois deixam o processamento mais lento.

Quando for obrigatório usar select, faça desta forma:

Sub MinhaMacro (  )

Application.ScreenUpdating = False

'ações com select aqui no meio


Application.ScreenUpdating = True

End Sub

Mas, nesse caso, não é necessário utilizar select nem activecell nem offset.

Quarto - Laço de repetição A

Preste Atenção:

A cada nova planilha, linha deve começar novamente (linha = 2). Isso se o paroquiano X estiver na linha 2 da planilha A, na linha 4 da planilha B, na linha 7 da planilha C. Aí é necessário fazer um Loop para cada planilha. E linha deve iniciar novamente (linha = 2).

Quinto - Tipo de variável

Preste Atenção:

Integer é para números, NOME é String

Sexto - Exemplo de laço de repetição A

Option Explicit


Private Sub btn_atualiza_Click()
Dim linha As Long
Dim codigo As Integer
Dim NOME As String

linha = 2
codigo = cint(txt_codigo.Text)

Do Until Sheets("Paroquianos").Cells(linha, 1) = ""
  If cint(Sheets("Paroquianos").Cells(linha, 1).Value) = codigo Then
     Sheets("Paroquianos").Cells(linha, 2).Value = txt_paroquiano.Text
     Sheets("Paroquianos").Cells(linha, 3).Value = txt_morada.Text
     Sheets("Paroquianos").Cells(linha, 4).Value = txt_cpostal.Text
     Sheets("Paroquianos").Cells(linha, 5).Value = txt_nif.Text
     Sheets("Paroquianos").Cells(linha, 6).Value = txt_anoinscricao.Text
     
End If

linha = linha + 1
Loop

linha = 2 '<<<<<<<<<<<<<<PRESTE ATENÇÃO AQUI

NOME = txt_paroquiano.text

Do Until Sheets("Dados_Preencher").Cells(linha, 1) = ""
  If ucase(Sheets("Dados_Preencher").Cells(linha, 1).value) = ucase(NOME) Then
     'Sheets("Dados_Preencher").Cells(linha, 1).Value = txt_paroquiano.Text
     Sheets("Dados_Preencher").Cells(linha, 2).Value = txt_nif.Text
     
    
     
End If

linha = linha + 1
Loop

Call txt_codigo_AfterUpdate

txt_codigo = ""
txt_paroquiano = ""
txt_morada = ""
txt_cpostal = ""
txt_nif = ""
txt_anoinscricao = ""
MsgBox ("Dados alterados com sucesso!!!")
Unload Me
Application.Visible = False
UserForm1.Show
End Sub

Sétimo - Laço de repetição B

Mas, se o paroquiano X estiver na linha 2 da planilha A, na linha 2 da planilha B, na linha 2 da planilha K, aí basta fazer um único Loop e alterar todas as planilhas dentro desse único Loop.

Oitavo - Exemplo de Laço de repetição B


Private Sub btn_atualiza_Click()
Dim linha As Long
Dim codigo As Integer
Dim NOME As String

linha = 2
codigo = cint(txt_codigo.Text)

Do Until Sheets("Paroquianos").Cells(linha, 1) = ""
  If cint(Sheets("Paroquianos").Cells(linha, 1).Value) = codigo Then
     Sheets("Paroquianos").Cells(linha, 2).Value = txt_paroquiano.Text
     Sheets("Paroquianos").Cells(linha, 3).Value = txt_morada.Text
     Sheets("Paroquianos").Cells(linha, 4).Value = txt_cpostal.Text
     Sheets("Paroquianos").Cells(linha, 5).Value = txt_nif.Text
     Sheets("Paroquianos").Cells(linha, 6).Value = txt_anoinscricao.Text
'Sheets("Dados_Preencher").Cells(linha, 1).Value = txt_paroquiano.Text
     Sheets("Dados_Preencher").Cells(linha, 2).Value = txt_nif.Text
     
End If

linha = linha + 1
Loop

Call txt_codigo_AfterUpdate

txt_codigo = ""
txt_paroquiano = ""
txt_morada = ""
txt_cpostal = ""
txt_nif = ""
txt_anoinscricao = ""
MsgBox ("Dados alterados com sucesso!!!")
Unload Me
Application.Visible = False
UserForm1.Show
End Sub

Nono - Continuação do código

Creio que já está bem mastigadinho e que você consegue fazer para as demais planilhas.

 
Postado : 03/02/2018 8:19 pm
(@rui-maciel)
Posts: 190
Reputable Member
Topic starter
 

Boa noite Klarc28
Primeiro obrigado pela correção, contudo, um erro na escrita de uma palavra que por lapso aconteceu e quem nunca cometeu um erro é porque nunca fez nada na vida. Segundo, o seu código funcionou numa parte, consegui regularizar a outra, dessa forma obrigado. Sabe a minha área de formação é contabilidade e seguros (Universidade) e nunca foi informática, sou um daqueles que procura simplificar através do excel alguns processos, como tal sou um curioso.
Grato,
RM

 
Postado : 04/02/2018 3:30 pm