Página 1 de 2

Macro para pegar a ultima linha preenchida +1

Enviado: 15 Out 2019 às 12:56
por guidonofrio
Tenho a seguinte macro:
Código: Selecionar todos
[size=85][b][i]Sub Dados_Resumo2()
'
' Dados_Resumo2 Macro
'

'
    Rows("2:2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "OS"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "DATA"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "RECEBIDO"
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "A RECEBER"
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "A COBRAR"
    Range("G2").Select
    ActiveCell.FormulaR1C1 = "NOTA FISCAL"
    Range("H2").Select
    ActiveCell.FormulaR1C1 = "EMISSÃO NOTA"
    Range("B3").Select
    Sheets("Base OS").Select
    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    ActiveSheet.Previous.Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Columns("D:D").Select
    Selection.Insert Shift:=xlToRight
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "FATURADO"
    Range("C3").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'Base OS'!C[-2]:C[4],7,0)"
    Range("D3").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],'Base OS'!C[-3]:C[-2],2,0)"
    Range("E3").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMIFS('Contas a Receber'!C[10],'Contas a Receber'!C[11],""RECEBIDO"",'Contas a Receber'!C[-4],'Resumo Analitico'!RC[-3])"
    Range("F3").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = _
        "=SUMIFS('Contas a Receber'!C[7],'Contas a Receber'!C[10],""A RECEBER"",'Contas a Receber'!C[-5],'Resumo Analitico'!RC[-4])"
    Range("G3").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],'Base OS'!C[-6]:C[-3],4,0)"
    Range("H3").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-6],'Base OS'!C[-7]:C[-3],5,0)"
    Range("I3").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7],'Base OS'!C[-8]:C[-3],6,0)"
    Range("C3:I3").Select
    Range("I3").Activate
    Selection.Copy
    Range("I4").Select
    Selection.End(xlToLeft).Select
    Selection.End(xlDown).Select
    Range("C399").Select
    Range(Selection, Selection.End(xlUp)).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.Replace What:="#N/D", Replacement:="0", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("C400").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "TOTAL"
    Range("D400").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(R[-37]C:R[-1]C)"
    Range("E400").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(R[-37]C:R[-1]C)"
    Range("F400").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(R[-37]C:R[-1]C)"
    Range("F400").Select
    Selection.Copy
    Range("G400").Select
    Selection.End(xlToRight).Select
    Selection.End(xlToRight).Select
    Selection.End(xlUp).Select
    Range("G2").Select
    Selection.End(xlToLeft).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Application.CutCopyMode = False
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent6
        .TintAndShade = -0.249977111117893
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Font.Bold = True
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Range("C3").Select
    Selection.End(xlDown).Select
    Selection.End(xlUp).Select
    Range("C3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range("C3:C399").Select
    Selection.NumberFormat = "dd/mm/yyyy"
    Range("D3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range("D3:G400").Select
    Selection.Style = "Currency"
    Selection.End(xlUp).Select
    Range("B2").Select
    Selection.End(xlDown).Select
    Range("B400:C400").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent6
        .TintAndShade = -0.249977111117893
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    With Selection
        .HorizontalAlignment = xlRight
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Font.Bold = True
    Range(Selection, Selection.End(xlToRight)).Select
    Range("B400:I400").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("D26").Select
    Selection.End(xlUp).Select
    Selection.End(xlToLeft).Select
    Selection.End(xlToLeft).Select
    Selection.End(xlUp).Select
    Columns("H:H").Select
    Columns("H:H").EntireColumn.AutoFit
    Columns("I:I").EntireColumn.AutoFit
    Range("H2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.End(xlUp).Select
    Selection.End(xlToLeft).Select
    Selection.End(xlUp).Select
    Selection.End(xlToLeft).Select
    Selection.End(xlToLeft).Select
    Selection.End(xlUp).Select
    Selection.End(xlToLeft).Select
    Selection.End(xlToLeft).Select
    Selection.End(xlUp).Select
    Sheets("Base OS").Select
    Columns("A:G").Select
    Range("G1").Activate
    Selection.Delete Shift:=xlToLeft
    Range("B2").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.249977111117893
        .PatternTintAndShade = 0
    End With
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "COLAR AQUI"
    Range("B2").Select
    Columns("B:B").EntireColumn.AutoFit
    Range("B1").Select
    Selection.End(xlToLeft).Select
    Selection.End(xlUp).Select
    Selection.End(xlToLeft).Select
    ActiveSheet.Previous.Select
    Selection.End(xlUp).Select
    Selection.End(xlToLeft).Select
End Sub[/i][/b][/size]
Gostaria de alterar toda essa parte que fala da linha 400 para a ultima linha preenchida+1
Código: Selecionar todos
  Range("C400").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "TOTAL"
    Range("D400").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(R[-37]C:R[-1]C)"
    Range("E400").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(R[-37]C:R[-1]C)"
    Range("F400").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(R[-37]C:R[-1]C)"
    Range("F400").Select
    Selection.Copy
    Range("G400").Select
E essa parte que fala da linha 399 gostaria de alterar para a ultima linha preenchida:
Código: Selecionar todos
    Selection.End(xlToLeft).Select
    Selection.End(xlDown).Select
    Range("C399").Select

Re: Macro para pegar a ultima linha preenchida +1

Enviado: 15 Out 2019 às 16:36
por Jimmy
Olá Guido,

troque
Código: Selecionar todos
    Selection.End(xlToLeft).Select
    Selection.End(xlDown).Select
    Range("C399").Select
por
Código: Selecionar todos
    Selection.End(xlToLeft).Select
    Selection.End(xlDown).Select
    LinFim = Range("C" & Rows.Count).End(xlUp).Row      'LINHA NOVA
    Range("C" & LinFim).Select                          'LINHA NOVA
Troque também
Código: Selecionar todos
    Range("C400").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "TOTAL"
    Range("D400").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(R[-37]C:R[-1]C)"
    Range("E400").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(R[-37]C:R[-1]C)"
    Range("F400").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(R[-37]C:R[-1]C)"
    Range("F400").Select
    Selection.Copy
    Range("G400").Select
por
Código: Selecionar todos
    Range("C" & LinFim + 1).Select                      'LINHA NOVA
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "TOTAL"
    Range("D" & LinFim + 1).Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(R[-37]C:R[-1]C)"
    Range("E" & LinFim + 1).Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(R[-37]C:R[-1]C)"
    Range("F" & LinFim + 1).Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=SUM(R[-37]C:R[-1]C)"
    Range("F" & LinFim + 1).Select
    Selection.Copy
    Range("G" & LinFim + 1).Select
Jimmy San Juan

Macro para pegar a ultima linha preenchida +1

Enviado: 15 Out 2019 às 16:58
por guidonofrio
Obrigado Jimmy, pode me auxiliar a fazer as alterações na parte abaixo? (o que for de C3:C399 precisa selecionar o intervalo entre C2 e a ultima linha preenchida, o que for D3:D400 precisa selecionar o intervalo entre C2 e a ultima linha preenchida +1, o que for B400:D400 precisa selecionar a ultima linha preenchida +1...
Código: Selecionar todos
    Range("C3").Select
    Selection.End(xlDown).Select
    Selection.End(xlUp).Select
    Range("C3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range("C3:C399").Select
    Selection.NumberFormat = "dd/mm/yyyy"
    Range("D3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range("D3:G400").Select
    Selection.Style = "Currency"
    Selection.End(xlUp).Select
    Range("B2").Select
    Selection.End(xlDown).Select
    Range("B400:C400").Select

Macro para pegar a ultima linha preenchida +1

Enviado: 15 Out 2019 às 17:11
por guidonofrio
Retificando comentário acima, o que for D3:G400 precisa selecionar o intervalo entre d2 e a coluna G na ultima linha preenchida +1

Macro para pegar a ultima linha preenchida +1

Enviado: 15 Out 2019 às 17:17
por Jimmy
Guido,

Tire uma dúvida. Essa macro funciona regularmente? Você manda rodar e ela faz o que você espera que faça? Pergunto porque parece uma grande lista de comandos gravados pelo gravador. Tem muitos comandos desnecessários, muitos redundantes, etc.

O que acha de em vez de remendar, passar ela a limpo. Você explica o que quer que ela faça, anexa a planilha, e vamos refazendo. Não precisamos fazer em uma paulada só. Podemos fazer uma parte, testar, validar, e ai partimos para mais uma parte, etc.

Se preferir que eu simplesmente faça as alterações que pediu, ok pra mim, mas essa macro parece um Frankenstein e passar a limpo é uma oportunidade pra você aprender.

O que acha?

Se esta mensagem colabora para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan

Re: Macro para pegar a ultima linha preenchida +1

Enviado: 15 Out 2019 às 19:08
por guidonofrio
Boa noite!

Respondendo sua pergunta, a macro funciona em partes, estou tentando desenvolve-lá porém sou iniciante ainda.

Gostei de sua idéia, vamos lá anexei uma planilha exemplo, com 6 abas:
Contas a receber, Resumo Dados, Base OS, Listagem Faturas, Modelo Base OS e Modelo Listagem Faturas.

Obs** A aba Modelo Base OS contém um exemplo de relatório que eu exporto do nosso sistema para pegar os dados (a quantidade de linhas é variável sempre irá aumentar de acordo com nosso fluxo). Deixei algumas colunas preenchidas como "EXCLUIR" pois não preciso das informações que vem nelas, preciso somente das que não ficaram como "EXCLUIR".

Obs** A aba Modelo Listagem Faturas contém um exemplo de relatório que eu exporto do nosso sistema para pegar os dados (a quantidade de linhas é variável sempre irá aumentar de acordo com nosso fluxo). Deixei algumas colunas preenchidas como "EXEMPLO" podemos ignorar elas.


Lembrando que esses dois modelos de layout precisam ser colados nas células "B2" de suas respectivas abas, sendo a primeira aba "Base OS" e a segunda "Listagem Faturas"

Vamos para a macro:

1° Preciso que ela vá na aba "Listagem Faturas" coloque um filtro da célula em "C3:Q3".
2° Ainda na aba "Listagem Faturas" preciso que ela classifique de A até Z a célula "H3", automaticamente irá classificar junto todas as colunas agregradas no filtro (creio eu).
3° Agora na aba "Base OS" preciso que ela exclua todas as colunas que estão marcadas como "EXCLUIR".
4° Ainda na aba "Base OS" com as colunas que sobraram, preciso renomear a célula "B2" de "Número" para "OS", a célula "C2" de "Cobrado" para "Faturado".
5° Na aba "Base OS" organizar as colunas na seguinte ordem: OS, Data Cadastro, Faturado, Recebido, NF Num e NF Data.
6° Na aba "Base OS" preciso acrescentar duas colunas entre as colunas "Recebido" e "NF Num", essas colunas acrescentadas serão "A receber" e "A cobrar", para obter a informação de "A receber" preciso fazer uma função de somases (intervalo_soma será a coluna "O:O" da aba "Contas a Receber", intervalo_criterio1 será a coluna "P:P" da aba "Contas a Receber", criterio1 será "A RECEBER", intervalo_criterio2 será a coluna "A:A" da aba "Contas a Receber" e o criterio2 será a célula "B3" da aba "Base OS") já a informação de "A cobrar" preciso que a macro faça uma função de procv (valor_procurado será a célula "B3" da aba "Base OS" para buscar a informação da aba "Listagem Faturas" da coluna "H" até a coluna "N").
7° Por fim preciso que ela crie uma aba chamada "Resumo Dados" com o mesmo layout da aba "Resumo Dados" dessa planilha que anexei e consolide as informações nela sem fórmulas, e embaixo da ultima linha preenchida preciso de uma linha com o TOTAL das informações de Faturado, Recebido, A Receber e A cobrar, considerando que o número de linhas nas abas "Base OS" e "Listagem Faturas" vão aumentar e por isso a linha de TOTAL precisa ficar embaixo da ultima linha preenchida.


Não sei se consegui explicar, mas se puder me ajudar podemos ir nos falando.

Grato desde já!

Re: Macro para pegar a ultima linha preenchida +1

Enviado: 15 Out 2019 às 20:07
por Jimmy
Vamos lá Guido,

Prefiro ir passo a passo, porque como não conheço a planilha, há maiores chances de erro, e não quero ter que refazer muita coisa se isso acontecer.

Vamos atacar inicialmente os passos 1, 2 e 3.

Dúvida: no passo 3, a macro deve varres as colunas, localizar aquelas que na linha 2 estão escrito "EXCLUIR", e exclui-la, ou você escreveu EXCLUIR só pra eu saber quais são, mas serão sempre estas?

Jimmy San Juan

Re: Macro para pegar a ultima linha preenchida +1

Enviado: 15 Out 2019 às 22:47
por guidonofrio
Boa noite Jimmy, então eu apenas coloquei excluir para você saber quais são, precisaremos apagar elas, sempre estarão nessa ordem.

Re: Macro para pegar a ultima linha preenchida +1

Enviado: 16 Out 2019 às 05:53
por joseguambe
Saudações a todos
Eu tenho esta macro em baixo, está a dar erro peço ajuda:

A ideia é numa sheet (Frame) quero copiar uma linha padrao com formulas para inserir numa outra (Box Filling) na última linha sempre que alguem pressionar o botão Adicione Linha,

Private Sub CommandButton1_Click()
Dim DLin As Long
Sheets("Frame").Select
Range("B4:AK4").Select
Selection.Copy
Sheets("BOX Filling").Select
DLin = Range("B4").End(xlDown).Row + 1
ActiveSheet.Paste
End Sub

Re: Macro para pegar a ultima linha preenchida +1

Enviado: 16 Out 2019 às 06:14
por Jimmy
Olá joseguambe,

Eu sugiro você abrir um novo tópico, só seu, para tratar desse assunto. Também é sempre desejável que anexe a planilha para facilitar a procura do erro.

Mas... já que estamos aqui, apensar de você não ter especificado qual o erro que está acontecendo, concluo que a linha não está sendo copiada para a última linha da planilha Box Filling.
Se for esse o erro, tente substituir a linha
DLin = Range("B4").End(xlDown).Row + 1
pela linha
Range("B4").End(xlDown).offset(1,-1).select
ou pela linha
Range("B" & rows.count).End(xlup).offset(1,-1).select

Se esta mensagem colabora para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan

Re: Macro para pegar a ultima linha preenchida +1

Enviado: 16 Out 2019 às 08:44
por Jimmy
Bom dia Guido,

Cheguei até o início do passo 6. Vamos testar até aqui, e então prosseguimos.

Falta terminar o passo 6, e o passo 7.
Lembrando que esses dois modelos de layout precisam ser colados nas células "B2" de suas respectivas abas, sendo a primeira aba "Base OS" e a segunda "Listagem Faturas"
Não entendi essa parte acima. O que quer dizer?

Jimmy San Juan

Re: Macro para pegar a ultima linha preenchida +1

Enviado: 16 Out 2019 às 09:06
por guidonofrio
Bom dia Jimmy!
Lembrando que esses dois modelos de layout precisam ser colados nas células "B2" de suas respectivas abas, sendo a primeira aba "Base OS" e a segunda "Listagem Faturas"
As abas Modelo Base OS e Modelo Listagem Faturas não existem na planilha original, coloquei elas apenas para te mostrar o layout da base de dados que eu extraio do sistema, as informações que estão nessas abas, são coladas nas abas Base OS e Listagem Faturas, sempre nas células B2 de cada aba.

Consegui explicar?

Macro para pegar a ultima linha preenchida +1

Enviado: 16 Out 2019 às 10:22
por Jimmy
Desculpe Guido, mas ainda não consegui entender.
...as informações que estão nessas abas, são coladas nas abas Base OS e Listagem Faturas, sempre nas células B2 de cada aba.
Como as informações de toda uma planilha podem ser colocadas em uma única célula B2?

Se esta mensagem colabora para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan

Macro para pegar a ultima linha preenchida +1

Enviado: 16 Out 2019 às 10:40
por guidonofrio
Sem problemas, vamos lá.

Na aba "Modelo Base OS" a seleção de todas informações se da em "A1:W61", essa seleção será colada na célula "B2" da aba "Base OS" assim as informações coladas ficarão distribuídas na aba "Base OS" entre "B2:X62" (obs* X62 será variável de acordo com a quantidade de linhas extraídas no sistema podendo ir até X99999) e nessa aba a macro irá excluir as colunas "C:J,P:X". Resumindo a aba "Modelo" não existe no relatório original, toda a macro será para as abas sem o nome de "Modelo".

Na aba "Modelo Listagem Faturas" a seleção de todas informações se da em "A1:P43", essa seleção será colada na célula "B2" da aba "Listagem Faturas" assim as informações coladas ficarão distribuídas na aba "Listagem Faturas" entre "B2:Q44" (obs* Q44 será variável de acordo com a quantidade de linhas extraídas no sistema podendo ir até Q99999) e o filtro que falamos anteriormente será feito entre "C3:Q3" para que possamos classificar de A-Z a célula "H3". Resumindo a aba "Modelo" não existe no relatório original, toda a macro será para as abas sem o nome de "Modelo".

Obrigado desde já pela ajuda!

Re: Macro para pegar a ultima linha preenchida +1

Enviado: 16 Out 2019 às 16:17
por Jimmy
guidonofrio escreveu: para obter a informação de "A receber" preciso fazer uma função de somases (intervalo_soma será a coluna "O:O" da aba "Contas a Receber", intervalo_criterio1 será a coluna "P:P" da aba "Contas a Receber", criterio1 será "A RECEBER", intervalo_criterio2 será a coluna "A:A" da aba "Contas a Receber" e o criterio2 será a célula "B3" da aba "Base OS")
Essa fórmula deve ser colocada em qual linha da coluna "A receber"?
guidonofrio escreveu: já a informação de "A cobrar" preciso que a macro faça uma função de procv (valor_procurado será a célula "B3" da aba "Base OS" para buscar a informação da aba "Listagem Faturas" da coluna "H" até a coluna "N").
Essa fórmula deve ser colocada em qual linha da coluna "A receber"?

Qual será a coluna de retorno (entre H e N)?

Jimmy San Juan

Macro para pegar a ultima linha preenchida +1

Enviado: 16 Out 2019 às 16:33
por guidonofrio
Boa tarde Jimmy,
Código: Selecionar todos
para obter a informação de "A receber" preciso fazer uma função de somases (intervalo_soma será a coluna "O:O" da aba "Contas a Receber", intervalo_criterio1 será a coluna "P:P" da aba "Contas a Receber", criterio1 será "A RECEBER", intervalo_criterio2 será a coluna "A:A" da aba "Contas a Receber" e o criterio2 será a célula "B3" da aba "Base OS")
Essa fórmula deve ficar abaixo do título da coluna criada como "A receber" , ou seja, deverá se estender a partir da linha 3 da coluna "A receber" até a última linha preenchida da coluna de "OS".
Código: Selecionar todos
já a informação de "A cobrar" preciso que a macro faça uma função de procv (valor_procurado será a célula "B3" da aba "Base OS" para buscar a informação da aba "Listagem Faturas" da coluna "H" até a coluna "N").
Essa fórmula deve ficar abaixo do título da coluna criada como "A cobrar" , ou seja, deverá se estender a partir da linha 3 da coluna "A cobrar" até a última linha preenchida da coluna de "OS".

Quanto aos "likes", creio que já dei em todas suas mensagens, peço que me informe se faltou alguma, pois estão sendo de grande valia para mim.

Obrigado!!

Macro para pegar a ultima linha preenchida +1

Enviado: 16 Out 2019 às 16:36
por guidonofrio
Retificando resposta acima, coloquei como código as citações, as respostas estão abaixo de cada código.

Re: Macro para pegar a ultima linha preenchida +1

Enviado: 16 Out 2019 às 18:42
por Jimmy
Guido,
Jimmy escreveu:Cheguei até o início do passo 6. Vamos testar até aqui, e então prosseguimos.
Testou? Está tudo certo? Podemos continuar?

Jimmy San Juan

Re: Macro para pegar a ultima linha preenchida +1

Enviado: 17 Out 2019 às 09:01
por guidonofrio
Bom dia Jimmy,

Testei sim, a única alteração que tive de fazer foi em:
Código: Selecionar todos
    '3 - BO - Apaga colunas
    BO.Range("C:J,P:X").Delete Shift:=xlToLeft
Para:
Código: Selecionar todos
    '3 - BO - Apaga colunas
    BO.Range("C:J,P:Y").Delete Shift:=xlToLeft
Funcionou perfeitamente até aqui.

Macro para pegar a ultima linha preenchida +1

Enviado: 17 Out 2019 às 09:08
por guidonofrio
Jimmy, a planilha anexa é o resultado depois que rodei a macro.

Existe algum meio de transformarmos na aba "Base OS" todas as linhas abaixo da "C2" de data/hora para somente a data?

Exemplo:
O formato original é assim
04/09/2019 16:59:07
Gostaria que ficasse assim
04/09/2019
Sabe dizer se é possível transformarmos todas essas datas/horas em datas após a execução da macro?