Macro Criar quantidade exata de linhas


#1

Boa tarde.

Preciso inserir uma quantidade de 15 linhas exatas entre os dois “total produto” da coluna “A” da planilha anexa. Se notarem entre cada “total produto” tem variadas quantidades de linhas, mas preciso que elas seja exatas a 15 linhas já contanto com as que já possuem. Existe alguma macro que possa resolver este meu problema?

Anderson.


#2

@anders1405, não existe uma macro pronta, alguém teria que desenvolver.

Eu trabalho com desenvolvimento personalizado em Excel e posso desenvolver esta feature para você.

Se tiver interesse no trabalho, mande um e-mail para exlplanilhas@gmail.com com a sua planilha e este explicativo do que precisa que seja feito.

Abraços.


#3

@anders1405
Olá, já resolveram o seu problema ?


#4

Não, pq só foi me oferecido um trabalho pago p resolver meu problema, mas se ninguém me retornou como ajuda.


#5

Bom, então acho que posso te ajudar sem me intrometer na conversa, ok !

Veja se é isto que vc precisa, mas rode apenas uma vez, e rode em uma copia, caso haja algum problema na programação.

Sub Macro1()
'
' Macro1 Macro
'

Dim i As Long
Dim x As Integer
Dim cont As Integer

cont = 0
For i = 1 To 100000     ' se precisar, mude aqui
    If Cells(i, 1) = "" Then Exit For
    Cells(i, 1).Select
    cont = cont + 1
    If Cells(i, 1) = "Total Produto:" Then
        If cont <> 15 Then
            If cont > 15 Then MsgBox "Já tem mais de 15 linhas na linha " & i: Stop
            x = 15 - cont
            If x <> 0 Then
                ActiveCell.Rows("1:" & x).EntireRow.Select
                Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                i = i + x
                cont = 0
            End If
          Else
            cont = 0
        End If
    End If
Next
End Sub

Bom, isto coloca o que vc pediu a cada 15 linhas, mas não sei como a sua formula vai se comportar, portanto dê uma olhada na formula do total, pois pode ser que vc tenha que alterá-la.

abs


#6

Cara, ficou perfeito, era isto mesmo que eu precisava, tu é o cara! heheh. Não consegui responder antes porque estava na correria aqui, mas semana que vem vou poder ficar em cima das minhas macros de novo, e esta que você fez para mim vai ser de imensa valia! Obrigado!!


#7

Valeu @Anderson, anders1405, e precisando de algo, coloque aqui no grupo.

abs


#8

@lporto me surgiu outra duvida e se puder me ajudar agradeço, que pesquisei e não consegui localizar, tens outra macro onde eu possa excluir a linha inteira desde que na coluna “E” esteja em branco?


#9

Pegando carona na solução do @lporto:

Sub Macro1()
'
' Macro1 Macro
'

Dim i As Long
Dim x As Integer
Dim cont As Integer

cont = 0
For i = 1 To 100000     ' se precisar, mude aqui
    If Cells(i, 1) = "" Then Exit For
    Cells(i, 1).Select
    cont = cont + 1
    
    'Incluí código aqui
    If Cells(i, 5) = vbnullstring then
        Activecell.EntireRow.Delete
        i = i - 1
        GoTo Proximo
    End If

    'Continua código anterior
    If Cells(i, 1) = "Total Produto:" Then
        If cont &lt;&gt; 15 Then
            If cont &gt; 15 Then MsgBox "Já tem mais de 15 linhas na linha " & i: Stop
            x = 15 - cont
            If x &lt;&gt; 0 Then
                ActiveCell.Rows("1:" & x).EntireRow.Select
                Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                i = i + x
                cont = 0
            End If
          Else
            cont = 0
        End If
    End If

'Incluí código aqui
Proximo:

'Continua código anterior
Next
End Sub

#10

Boa tarde Xavier. Copiei e colei seu essa macro modificada sua e deu um erro de compilação (foto abaixo), tenho que modificar algo será?


#11

@anders1405, ixi… Peguei o carro andando e codifiquei no cel, não testei o código. É melhor ver se o @lporto coloca a feature pra não estragar a solução que ele já te deu…


#12

Bom dia… Vou fazer aqui e já passo para vc.
abs


#13

Bom dia… coloquei fora da rotina que já estava pronta para ser mais rápido de resolver…
Estou assumindo que as informações estejam na coluna A, caso contrario, toque para a coluna certa nesta linha:
For i = Range(“A” & Rows.Count).End(xlUp).Row To 1 Step -1
e nesta linha troque para a coluna que for, sendo A=1 B=2 C=3… etc
If Cells(i, 5) = “” And Cells(i, 1) <> “Total Produto:” Then

abs

Sub Macro1()
'
' Macro1 Macro
'

Dim i As Long
Dim x As Integer
Dim cont As Integer

For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
    If Cells(i, 5) = "" And Cells(i, 1) <> "Total Produto:" Then
         Cells(i, 5).Select
         ActiveCell.EntireRow.Delete
    End If
Next


cont = 0
For i = 1 To 100000                              ' se precisar, mude aqui
    If Cells(i, 1) = "" Then Exit For
    Cells(i, 1).Select
    cont = cont + 1
    If Cells(i, 1) = "Total Produto:" Then
        If cont <> 15 Then
            If cont > 15 Then MsgBox "Já tem mais de 15 linhas na linha " & i: Stop
            x = 15 - cont
            If x <> 0 Then
                ActiveCell.Rows("1:" & x).EntireRow.Select
                Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                i = i + x
                cont = 0
            End If
          Else
            cont = 0
        End If
    End If
Next
End Sub

#14

Boa tarde @lporto, rodou perfeita, fiz as alterações de coluna e tal, só a coluna E que eu pretendia usar esta macro possui formulas e deste jeitoa a macro não reconheceu que a linha estava vazia e acabou não excluindo nenhuma linha, troquei por outra coluna que ai sim sem formula rodou perfeitamente, teria como adaptar algo nesta macro para que rode na coluna E e exclua mesmo possuindo formula? Caso não tenha como, não tem problema porque dai uso outra coluna, mas que acaba não excluindo algumas linhas que eu queria que excluísse, mas mesmo assim fica perfeito para mim. Muito obrigado por sua ajuda!

Anderson.


#15

Oi Anderson.
Tem sim, mas eu pensei que se o total estiver zerado era para manter a linha de total… Pelo jeito pensei errado…rs
Como não é, é só deletar estes comandos que já vai funcionar…
And Cells(i, 1) <> “Total Produto:”

abs


#16

Ola Luiz, desculpa eu acabei passando uma informação errada, esta certo tem que ficar a linha de “total produto”, para você para voce entender o que estou fazendo, daquelas suas macros eu já remodelei minha planilha e deixei com informações e calculos que eu preciso, dai ficou como a imagem abaixo, o que eu precisava agora é excluir todas as linhas que na coluna E possui “0” ou “numeros negativos”, menos as linhas “total produto”, acho que depois disso não te incomodo mais… rsrsr


#17

Bom dia… Ah, então eu estava certo…rs

É só trocar o ="" por <=0

nesta linha abaixo

Pode perguntar … não tem problema… hj será um dia corrido aqui, mas …

abs


#18

Bom dia Luis!

Estranho que na coluna E, justamente a que quero usar esta macro ele da um erro, abaixo, eu imaginei que porque poderia ter formato de numero ou texto na mesma coluna, mas formatei a planilha inteira como numero para testar, e mesmo assim continua dando o erro, sabe o que pode ser?

image


#19

Bom dia.
Me parece que vc colocou errado o seguinte
Cells(i,5) <> "Total…
ali deve ser
Cells(i,1) <> "Total…

Em vez de 5, coloque 1, que é a coluna 1

Aguardo a sua resposta.
abs


#20

Anderson, Deve ficar assim: