Notifications
Clear all

Alterar Célula Parcialmente

13 Posts
6 Usuários
0 Reactions
2,288 Visualizações
(@rafaelp)
Posts: 89
Trusted Member
Topic starter
 

Boa tarde.

Estou elaborando um sistema de cadastro de alunos juntamente com contas a receber e me deparei com a seguinte situação:

Ao cadastrar o aluno, eu escolho o vencimento da mensalidade por exemplo dia 15. Então ele gera um lançamento para cada mês, exemplo:

15/09/2016
15/10/2016
15/11/2016
15/12/2016

Até aí tudo bem. Porém estou com dificuldade para alterar o vencimento. O que eu queria era que ao alterar o campo vencimento no cadastro do aluno, fosse alterado também todos os lançamentos a partir dos critérios que eu colocar. Acredito que um For Next com as condições daria certo, porém não consigo pensar em um jeito de alterar apenas o "15" de cada célula para o vencimento que eu escolher.

Agradeço desde já!

 
Postado : 07/09/2016 12:21 pm
(@vonzuben)
Posts: 549
Honorable Member
 

Pega o valor da celula de uma data( principal ) e cria várias variaveis para outros laçamentos, pois mudando data principal vai mudar todos os outros
É isso q vc quer ?

 
Postado : 07/09/2016 1:12 pm
engeel2014
(@engeel2014)
Posts: 207
Estimable Member
 

Amigão, você tem que ajudar quem quer te ajudar. posta sua planilha ou uma de exemplo com dados fictícios mostrando o resultado que espera. Qualquer coisa escreve dentro da planilha o funcionamento que precisa. Inclusive parece simples o que você quer fazer, mas sem a planilha fica mais difícil te explicar.

Lucélio Ferreira dos Santos
Eng. Eletricista
CREA: DF-7165/TD
[email protected]

 
Postado : 07/09/2016 1:20 pm
(@rafaelp)
Posts: 89
Trusted Member
Topic starter
 

engeel2014,

Você tem razão, fiz uma planilha de exemplo conforme anexo.

Vou explicar novamente.
Tenho o aluno "João" cadastrado e os respectivos vencimentos:
15/01/2016
15/02/2016
15/03/2016 etc..

No campo vencimento do userform1 eu vou colocar um outro dia para o vencimento, por exemplo 23.
Ao clicar em "Alterar Vencimento" eu quero que seja alterado os dias para:
23/01/2016
23/02/2016
23/03/2016 etc...

Porém que preciso que seja alterado linha por linha só o dia do vencimento. Seria como "Localizar = 15" "Substituir = 23".

Obrigado!

 
Postado : 07/09/2016 1:52 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Kd o arquivo?

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 : 07/09/2016 4:19 pm
(@rafaelp)
Posts: 89
Trusted Member
Topic starter
 

Me desculpa, faltou o anexo. Segue.

 
Postado : 07/09/2016 8:27 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa noite rafaelp,

Veja se ajuda.
O código está dentro do botão 'Alterar Vencimento'.

att,

 
Postado : 07/09/2016 10:09 pm
(@rafaelp)
Posts: 89
Trusted Member
Topic starter
 

Bom dia Bruno.

Cara muito bom, fez parcialmente o que eu queria. Eu só preciso de uma adaptação que eu não estou conseguindo fazer.
Por exemplo, alguns títulos podem já terem sido pagos, portanto estes não deve ser alterados. Eu fiz a lógica, juntando com o código que você fez, que todos os títulos com vencimento maior que Hoje (função Now) vão ser alterados. Porém eu não estou conseguindo fazer com que a linha alterada seja a que está sendo verificada no If.

Não sei se deu para entender.

Sub AlterarVencimento()
        
    Dim Ulinha      As Double
    
    Dim Subts       As String
    Dim d           As String
    Dim m           As String
    Dim y           As String
        
    Dim Area        As Range
    Dim Cel         As Range
    
    UltLinhaCondicao = Plan4.Cells(Rows.Count, "A").End(xlUp).Row
    Hoje = Format(Now, "MM/DD/YYYY")
    
    For i = 2 To UltLinhaCondicao
    
        If CDate(Plan4.Cells(i, "A")) > Hoje Then
    
            'Última linha preenchida
            Ulinha = Plan4.Range("A1048575").End(xlUp).Row
            
            'Seleciona a area de busca. Lembre-se: Cells(2,1)=A2
            Set Area = Plan4.Range(Cells(2, 6), Cells(Ulinha, 6))
            
            'Para cada célula dentro da área.
            For Each Cel In Area
                
                'Se o valor da célula (nome) for igual ao selecionado
                If Trim(UCase(Cel) = Trim(UCase(fmCadastroAluno.tbNome))) Then
                
                    Subts = CStr(Trim(Format(Cel.Offset(0, -5), "dd/mm/yyyy")))
                    
                    'O dia vai ser o valor do textbox
                    d = CStr(fmCadastroAluno.cbVencimento)
                    'mês
                    m = CStr(Left(Right(Subts, 7), 2))
                    'ano
                    y = CStr(Right(Subts, 4))
                    
                    'Por algum motivo entrando do mês/dia/ano,
                    'sai na célula dia/mês/ano.
                    Cel.Offset(0, -5) = m & "/" & d & "/" & y
                    
                End If
                    
            Next Cel
        
        End If
        
    Next
    
End Sub

Boa noite rafaelp,

Veja se ajuda.
O código está dentro do botão 'Alterar Vencimento'.

att,

 
Postado : 08/09/2016 6:05 am
DJunqueira
(@djunqueira)
Posts: 772
Prominent Member
 

É possível fazer isso q vc quer perfeitamente usando fórmulas.

Se sua dúvida foi respondida marque o tópico como RESOLVIDO usando o botão com marca verde.

 
Postado : 08/09/2016 6:26 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

rafaelp,

Você pode disponibilizar o arquivo com as posições que você está adaptando. Acredito que esse For que você adicionou seja redundante para o seu caso, porque é possível colocar esse For dentro do comparação do For Each e colocar duas regras de verificação do IF.

 
Postado : 08/09/2016 7:05 am
(@rafaelp)
Posts: 89
Trusted Member
Topic starter
 

É possível fazer isso q vc quer perfeitamente usando fórmulas.

Mas o problema é que estou fazendo um sistema "fechado" e a pessoa não vai conseguir acessar as planilhas e sim só os forms. Não consigo pensar em uma forma de colocar isso em código.

rafaelp,

Você pode disponibilizar o arquivo com as posições que você está adaptando. Acredito que esse For que você adicionou seja redundante para o seu caso, porque é possível colocar esse For dentro do comparação do For Each e colocar duas regras de verificação do IF.

Segue o arquivo anexo. No cadastro do aluno em alterar, tem a um label escrito "Alterar Contas a Receber", coloquei o comando lá. O nome da sub é "AlterarVencimento".

 
Postado : 08/09/2016 8:47 am
engeel2014
(@engeel2014)
Posts: 207
Estimable Member
 

Boa tarde rafaelp, teste a planilha anexa, adaptei para a condição de verificar o nome e se a data é superior a data atual para fazer as alteração. Faça os testes ai e dê um retorno.

Att.: Lucélio

Lucélio Ferreira dos Santos
Eng. Eletricista
CREA: DF-7165/TD
[email protected]

 
Postado : 08/09/2016 2:26 pm
(@rafaelp)
Posts: 89
Trusted Member
Topic starter
 

Boa noite Lucélio!

Cara perfeito! Consegui adaptar perfeitamente no que eu precisava.
Muito obrigado! :mrgreen:

 
Postado : 11/09/2016 7:13 pm