Jump to content

Ganhe $$$ escrevendo tutoriais para nós!


Foto

Macro - Copiar datas digitadas em células de Plan1 para linhas de Plan2

Copiar datas em linhas




  • Faça login para responder
8 respostas neste tópico

#1 H_TM

H_TM
  • Participante
  • 7 mensagens

Publicado 16 July 2012 - 09:58 AM

Então ficaria assim:
- As datas que eu digitasse na célula C2 da Plan1 ---->> fossem parar na mesma linha da Plan2: Ex.: em C2, D2, E2, F2, G2.....
- As datas que eu digitasse na célula C3 da Plan1 ---->> fossem parar na mesma linha da Plan2: Ex.: em C3, D3, E3, F3, G3.....
- As datas que eu digitasse na célula C4 da Plan1 ---->> fossem parar na mesma linha da Plan2: Ex.: em C4, D4, E4, F4, G4.....
- As datas que eu digitasse na célula C5 da Plan1 ---->> fossem parar na mesma linha da Plan2: Ex.: em C5, D5, E5, F5, G5.....

E assim por diante......



Queria que fizesse da mesma forma com as datas da coluna D de Plan1:
- As datas que eu digitasse na célula D2 da Plan1 ---->> fossem parar na mesma linha da Plan3: Ex.: em C2, D2, E2, F2, G2.....
- As datas que eu digitasse na célula D3 da Plan1 ---->> fossem parar na mesma linha da Plan3: Ex.: em C3, D3, E3, F3, G3.....
- As datas que eu digitasse na célula D4 da Plan1 ---->> fossem parar na mesma linha da Plan3: Ex.: em C4, D4, E4, F4, G4.....
- As datas que eu digitasse na célula D5 da Plan1 ---->> fossem parar na mesma linha da Plan3: Ex.: em C5, D5, E5, F5, G5.....


Alguém pode me ajudar?




#2 JOAO DE ATALEIA

JOAO DE ATALEIA
  • Participante
  • 40 mensagens

Publicado 17 July 2012 - 11:26 AM

H_TM,

Para esse caso não é necessário a criação de Macro.
Basta fazer o seguinte:


Na plan2 na celula C2 basta colar a função =Plan1!$C$2 e arrasta-la até a coluna que desejar, d2,e2,f2...
O mesmo fazer na Plan3 na celula c2 colar a função =Plan1!$D$2 e arrastar até a coluna que desejar, d2,e2,f2...

Desse jeito não é necessário criação de macro.

#3 H_TM

H_TM
  • Participante
  • 7 mensagens

Publicado 18 July 2012 - 10:58 AM

Obrigado por responder amigo!

Queria por macro, pois quero que os dados fiquem acumulados na Plan2. Ou seja, mesmo depois que eu deletar as datas na plan1 quero que eles continuem na plan2.

Ao digitar uma nata nova em C2 de plan1 (por exemplo), ela iria para a C2 de plan2, mas se eu digitar outra data nesta célula, quero que a anterior continue em C2 de plan2, e a nova data digitada vá para D2.... Assim como uma terceira data vá para E2 de Plan2....
- Uma quata data - Para F2 de Plan2
- Uma quinta data - Para G2 de Plan2
- Uma sexta data - Para H2 de Plan2

E assim por diante....
Deu pra entender?

#4 osvaldomp

osvaldomp
  • Participante
  • 381 mensagens

Publicado 18 July 2012 - 09:23 PM

Instale o código abaixo no módulo da Plan1, assim:

1. copie o código daqui
2. clique com o direito na guia da Plan1 e escolha 'Exibir código'
3. cole o código na janela em branco que vai se abrir
4. feito! Alt+Q para retornar para a planilha e testar



Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 And Target.Column <> 4 Then Exit Sub
Dim LC As Long
If Target.Column = 3 Then
With Sheets("Plan2")
LC = .Cells(Target.Row, .Columns.Count).End(xlToLeft).Column
If LC = 1 Then LC = 2
.Cells(Target.Row, LC + 1) = Target.Value
End With
Else
With Sheets("Plan3")
LC = .Cells(Target.Row, .Columns.Count).End(xlToLeft).Column
If LC = 1 Then LC = 2
.Cells(Target.Row, LC + 1) = Target.Value
End With
End If
End Sub
Osvaldo

#5 H_TM

H_TM
  • Participante
  • 7 mensagens

Publicado 19 July 2012 - 01:50 PM

Amigo,Osvaldo,
Ficou ótimo!!

Muito obrigado amigo!


Queria só mais um favor seu....Foi preciso adicionar mais colunas na Plan1, de forma que as datas vão ser digitadas nas colunas G e H (ao invés de C e D) de Plan1.

Será que daria para alterar a macro para que obedeça a esta nova realidade da Plan1 ?

Ficarei muito grato!

Editado por H_TM, 19 July 2012 - 01:52 PM.
''


#6 osvaldomp

osvaldomp
  • Participante
  • 381 mensagens

Publicado 19 July 2012 - 07:05 PM

o código abaixo irá rodar após qualquer alteração na coluna 'G' ou na coluna 'H' da Plan1; substitua o código anterior por este

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 7 And Target.Column <> 8 Then Exit Sub
Dim LC As Long
If Target.Column = 7 Then
With Sheets("Plan2")
LC = .Cells(Target.Row, .Columns.Count).End(xlToLeft).Column
If LC = 1 Then LC = 2
.Cells(Target.Row, LC + 1) = Target.Value
End With
Else
With Sheets("Plan3")
LC = .Cells(Target.Row, .Columns.Count).End(xlToLeft).Column
If LC = 1 Then LC = 2
.Cells(Target.Row, LC + 1) = Target.Value
End With
End If
End Sub
Osvaldo

#7 H_TM

H_TM
  • Participante
  • 7 mensagens

Publicado 19 July 2012 - 07:49 PM

Amigo,Osvaldo,
Ficou ótimo!! Muito obrigado cara!

Queria só mais um favor seu....Foi preciso adicionar mais colunas na Plan1, de forma que as datas vão ser digitadas nas colunas G e H (ao invés de C e D) de Plan1.
Será que daria para alterar a macro para que obedeça a esta nova realidade da Plan1 ?

Ficarei muito grato!



EDIT:

Outra coisa que esqueci de mencionar é na Plan1 do VBA já tem uma macro que faz com que todas a datas digitadas nas colunas C e D (Agora as colunas G e H ) sejam contadas nas colunas E e F( agora as colunas I e J ) da Plan1..... Como é que eu faço para juntar estas duas macros para fazer as 2 funções?

A macro de Plan1 do VBA é esta abaixo:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Or Target.Column = 4 Then
If Len(Target.Value) > 0 Then
Target.Offset(, 2).Value = Target.Offset(, 2).Value + 1
End If
End If
End Sub

Editado por H_TM, 19 July 2012 - 07:53 PM.
''


#8 osvaldomp

osvaldomp
  • Participante
  • 381 mensagens

Publicado 19 July 2012 - 09:27 PM

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 7 And Target.Column <> 8 Then Exit Sub
If Target.Value = "" Then Exit Sub
Dim LC As Long
Target.Offset(, 2).Value = Target.Offset(, 2).Value + 1
If Target.Column = 7 Then
With Sheets("Plan2")
LC = .Cells(Target.Row, .Columns.Count).End(xlToLeft).Column
If LC = 1 Then LC = 2
.Cells(Target.Row, LC + 1) = Target.Value
End With
Else
With Sheets("Plan3")
LC = .Cells(Target.Row, .Columns.Count).End(xlToLeft).Column
If LC = 1 Then LC = 2
.Cells(Target.Row, LC + 1) = Target.Value
End With
End If
End Sub
Osvaldo

#9 H_TM

H_TM
  • Participante
  • 7 mensagens

Publicado 20 July 2012 - 09:26 AM

Nossa, ficou muito bom!
Amigo, não sei nem como lhe agradecer!

Muito obrigado pelas dicas!!!!!
Um grande abraço!






Tópicos Relacionados Collapse





Ganhe $$$ escrevendo tutoriais para nós!