Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Inserir novos dados na próxima linha vazia

Dúvidas gerais sobre Excel
Guima
Consultor
Consultor
Mensagens: 242
Registrado em: Sex Out 30, 2009 6:10 am

Re: Inserir novos dados na próxima linha vazia

Mensagem por Guima »

Olá Tomas,

Tu és mesmo um gentleman... com toda minha chatice e ainda tá ansioso pra resolver....rs. Bom vamos ao problema:

Já que não recomenda o uso do Copy ( acredito que torne mais lenta a rotina tbm, certo ?) o que sugere: "ActiveCell.Offset" ?


Se entendi bem, a planilha MES é a origem e a CREC é a destino certo? Bom, o 4shared tem sido um problema de onde estou. Pode enviar a planilha diretamente para o fórum?
é exatamente isso. A planilha MES é onde estão os dados de origem, uma vez que eu clicar no button REPETIR (vc verá no exemplo que envio) ai eu quero enviar os dados para a CREC (destino).

[]' s e mais uma vez... brigadão !!!
Anexos
exemplo repetição de lancamento.zip
(60.93 KiB) Baixado 322 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Inserir novos dados na próxima linha vazia

Mensagem por webmaster »

Guima,

Acho que agora vai. Copie e cole a macro abaixo em um novo módulo e execute-o:

Código: Selecionar todos

Sub Copia_De_MES_Para_CREC()
    Dim linhaInicialOrigem As Integer
    Dim linhaInicialDestino As Integer
    Dim colunaInicialOrigem As Integer
    Dim colunaInicialDestino As Integer
    Dim totalColunasCopiadas As Integer
    Dim contadorColunas As Integer
    Dim contadorLinhas As Integer
    'planilhas
    Dim planilhaOrigem As Worksheet
    Dim planilhaDestino As Worksheet

    Set planilhaOrigem = ThisWorkbook.Worksheets("MES")
    Set planilhaDestino = ThisWorkbook.Worksheets("CREC")

    linhaInicialOrigem = 5
    linhaInicialDestino = planilhaDestino.Cells(65536, 2).End(xlUp).Row + 1
    colunaInicialOrigem = 2
    colunaInicialDestino = 2
    totalColunasCopiadas = 12
    contadorColunas = colunaInicialOrigem
    contadorLinhas = 0

    While Not IsEmpty(planilhaOrigem.Cells(linhaInicialOrigem + contadorLinhas, colunaInicialOrigem).Value)
        While contadorColunas <= totalColunasCopiadas
            planilhaDestino.Cells(linhaInicialDestino + contadorLinhas, contadorColunas).Value = planilhaOrigem.Cells(linhaInicialOrigem + contadorLinhas, contadorColunas).Value
            If contadorColunas = totalColunasCopiadas Then
                If IsDate(planilhaDestino.Cells(linhaInicialDestino + contadorLinhas, contadorColunas).Value) Then
                    planilhaDestino.Cells(linhaInicialDestino + contadorLinhas, contadorColunas).Value = DateAdd("m", 1, planilhaDestino.Cells(linhaInicialDestino + contadorLinhas, contadorColunas).Value)
                End If
            End If
            contadorColunas = contadorColunas + 1
        Wend
        contadorLinhas = contadorLinhas + 1
        contadorColunas = 1
    Wend

End Sub
Primeiro teste se funciona. Se sim, explico o que ela está fazendo.

Abraços


Guima
Consultor
Consultor
Mensagens: 242
Registrado em: Sex Out 30, 2009 6:10 am

Re: Inserir novos dados na próxima linha vazia

Mensagem por Guima »

Rapaz..... :shock:

Não tenho como verificar o arquivo agora onde estou... mas só de olhar a rotina eu assustei...rs... vou testar como vc sugeriu, mas não vou dispensar a explicação, pois confesso que fiquei completamente confuso ao tentar entender o que faz essa rotina.

Abraço e mais tarde posto o resultado.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Inserir novos dados na próxima linha vazia

Mensagem por webmaster »

Bom, executei ela sobre a sua planilha e funcionou como descreveu a necessidade. Teste e vejamos o que vai dar!

:D

Abraços


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Guima
Consultor
Consultor
Mensagens: 242
Registrado em: Sex Out 30, 2009 6:10 am

Re: Inserir novos dados na próxima linha vazia

Mensagem por Guima »

Rs.... quase...rs...

Putz... como sou chato (assumo...)

Tomas, a idéia era mesmo essa ai, mas a coluna F da planilha MES irá somar o mês atual mais "1". Ou seja, o mês que era "3" ao ir pra CREC se tornara "4", ficando 4/10, e assim por diante.... Por isso que no código anterior que postei havia aquela rotina somente para a coluna F. Se puder depois me explique essa rotina tbm, meu caro.

Abração


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Inserir novos dados na próxima linha vazia

Mensagem por webmaster »

Guima,

Sorry, acho que esqueci das 2 últimas colunas! :?

Bom, vai a mudança no código que deve funcionar:

Código: Selecionar todos

Sub Copia_De_MES_Para_CREC()
    Dim linhaInicialOrigem As Integer
    Dim linhaInicialDestino As Integer
    Dim colunaInicialOrigem As Integer
    Dim colunaInicialDestino As Integer
    Dim totalColunasCopiadas As Integer
    Dim contadorColunas As Integer
    Dim contadorLinhas As Integer
    Dim colunaMes As Integer
    'planilhas
    Dim planilhaOrigem As Worksheet
    Dim planilhaDestino As Worksheet

    Set planilhaOrigem = ThisWorkbook.Worksheets("MES")
    Set planilhaDestino = ThisWorkbook.Worksheets("CREC")

    linhaInicialOrigem = 5
    linhaInicialDestino = planilhaDestino.Cells(65536, 2).End(xlUp).Row + 1
    colunaInicialOrigem = 2
    colunaInicialDestino = 2
    totalColunasCopiadas = 14
    contadorColunas = colunaInicialOrigem
    contadorLinhas = 0
    colunaMes = 12

    While Not IsEmpty(planilhaOrigem.Cells(linhaInicialOrigem + contadorLinhas, colunaInicialOrigem).Value)
        While contadorColunas <= totalColunasCopiadas
            planilhaDestino.Cells(linhaInicialDestino + contadorLinhas, contadorColunas).Value = planilhaOrigem.Cells(linhaInicialOrigem + contadorLinhas, contadorColunas).Value
            If contadorColunas = colunaMes Then
                If IsDate(planilhaDestino.Cells(linhaInicialDestino + contadorLinhas, contadorColunas).Value) Then
                    planilhaDestino.Cells(linhaInicialDestino + contadorLinhas, contadorColunas).Value = DateAdd("m", 1, planilhaDestino.Cells(linhaInicialDestino + contadorLinhas, contadorColunas).Value)
                End If
            End If
            contadorColunas = contadorColunas + 1
        Wend
        contadorLinhas = contadorLinhas + 1
        contadorColunas = 1
    Wend

End Sub
Adicionei a variável colunaMes que identifica qual o índice da coluna que contém a data na qual deve ser adicionado o mês.

A explicação vem logo depois.

Abraços


Guima
Consultor
Consultor
Mensagens: 242
Registrado em: Sex Out 30, 2009 6:10 am

Re: Inserir novos dados na próxima linha vazia

Mensagem por Guima »

Perfeito Tomas !!! ;)

Agora funcionou perfeitamente, só mudei a coluna que vc colocou como o mês, pois não era a 12, mas 6. Tudo certinho !!!

Vou ficar aguardando a explicação... :oops:

No mais muitíssimo obrigado.

Abração


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder