Notifications
Clear all

MACRO COPIAR LINHA N VEZES

7 Posts
2 Usuários
0 Reactions
1,035 Visualizações
(@munir_93)
Posts: 3
New Member
Topic starter
 

Bom dia!

Sou novo no fórum e também em macro no excel.

É o seguinte,

Em uma coluna (no caso D1) colocarei o Valor de quantas vezes quero que a linha (no meu caso, a Linha 11) seja repetida com as formulas abaixo dela.
Exemplo, se eu colocar D1 = 01, haverá apenas a linha 11 com esses dados (o print)
Se eu colocar D1 = 10, haverá as linhas 11, 12, 13, ..., 19, 20 e o resto desce.
Tudo isso sem perder as formulas que vem abaixo.

Tirei um print da tela:
https://ae04f8c3-a-62cb3a1a-s-sites.googlegroups.com/site/edificiosfatec2012/apoio/PEDIDO.png

Me ajudem! Obrigado.
Sugestões para melhorar isso são sempre bem-vindas.

 
Postado : 07/07/2015 9:38 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Aqui no serviço não temos acesso a drives virtuais e não pude ver sua imagem, então não sei se é bem isto o que pretende, mas segue uma sugestão da forma que entendi.

Estou supondo que irá digitar em D1 e automaticamente executar a ação, só não ficou claro se por exemplo se apos preencher 10 linhas teremos uma qde menor e se teremos de limpar o que já foi preenchido antes.

Este código deve ser copiado para o Evento da Aba em que será aplicado a cópia, ou seja clique com o botão direito da aba e escolha Exibir Código e cole estas instruções.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim qdeLinhas As Long
    Dim sLinInicio As Long
    Dim sTTaCopiar As Long

    If Target.Address = "$D$1" Then
        
        'Linha Inicial
        sLinInicio = 11
        
        'Qde linhas a copiar
        qdeLinhas = Target.Value
          
        'Se qde = 1 sai da rotina
        If qdeLinhas = 1 Then Exit Sub
        
        'Calcula a qde de lihas a copiar a partir da linha 11
        sTTaCopiar = sLinInicio + qdeLinhas
           
        Set SourceRange = Worksheets("Plan1").Range("D11") 'Base para o Preenchimento
        Set fillRange = Worksheets("Plan1").Range("D11:" & "D" & sTTaCopiar) 'preenchimento automático nas células abaixo
           
        'Congela o processamento para evitar repetição do evento Change
        Application.EnableEvents = False
        
        'Efetua o preenchimento
        SourceRange.AutoFill Destination:=fillRange
        
        'Descongela o processamento
        Application.EnableEvents = True
    
    End If

End Sub

Qualquer duvida retorne.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/07/2015 12:24 pm
(@munir_93)
Posts: 3
New Member
Topic starter
 

Coloquei a imagem em anexo, não sei se conseguirá visualizar.

O número da célula D1 vai variar de 1 a 30.

 
Postado : 07/07/2015 12:39 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Agora você me confundiu, você tem um layout pronto (Cupmo de Venda) e a linha 11 em branco e abaixo Total / descontos e outros, acredito que você quer inserir linhas a partir da linha 11com dados provenientes de outras celulas ou aba referente a uma venda.
Detalhe melhor o que precisa e se possivel anexe um modelo com alguns dados, será bem mais fácil entender e poder ajudar.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/07/2015 12:47 pm
(@munir_93)
Posts: 3
New Member
Topic starter
 

Funciona assim,

Aqui as balconistas fazem esse cupom de venda.
Elas digitam a quantidade, o código e o preço. Não existe outra planilha como base de dados onde há a procura de valores.
Como não tenho habilidade com macro fiz o seguinte: Criei varias abas: uma para 1 unico item, outra para 3, 6, 9, 12, 15 itens, ...

Queria facilitar de forma que apenas digitando o número de itens gere o número exato de linhas para digitação.

 
Postado : 07/07/2015 1:03 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Entendi que não quer copiar, e sim inserir Linhas a partir da linha 11, então você tem de usar mais ou menos assim :

Cells(11, 1).Resize(4).Insert Shift:=xlDown
Só que acima estamos inserindo 4 linhas somente na coluna 1

Já estou de saida e se não tiver outra dica, mais tarde completo a rotina.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/07/2015 1:56 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

munir, tirei do evento da planilha e adicionei dois botão, um para inserir as linhas e outro para deletar.
Observe que em I1 tem a formula que puxa o valor digitado em D1 isto é para deletar a mesma qde de linhas que foram inseridas.

Inserir - Deletar Linhas

Faça os testes e veja se é isto, e qualquer duvida retorne.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/07/2015 5:41 pm