Ir ao conteúdo

Posts recomendados

Postado

Boa tarde amigos, eu tenho um planilha excel que já possui um código, quando eu digito uma data na coluna G na planilha agenda de pagamentos ela move a linha toda colocando em ordem de data, até ai esta tudo bem e funcionando corretamente.

Ocorre que nesta mesma planilha eu preciso colocar mais um código que quando eu digitar na coluna G a palavra dia 1, dia 2 e assim por diante a linha correspondente vá automaticamente para a aba de planilha correspondente ao dia 01, dia 02 etc.

segue anexo o modelo da planilha.

Obs, depois do código funcionando vou criar mais planilhas elas serão de dia 1 até dia 31.

Estou usando Windows 10 e office 2016.

Se Alguém puder me ajudar ficarei muito agradecido pois esta planilha servirá para o meu trabalho.

 

 

 

teste.xlsm

Postado
53 minutos atrás, Osmarbg disse:

...quando eu digito uma data na coluna G na ..

Você quis dizer coluna 'H', é isso?

 

 

 

O código abaixo engloba o seu código original, que ordena os dados na planilha "Agenda ...", e os comandos para replicar o registro na planilha cujo nome for igual ao conteúdo da coluna 'G'.

Coloque-o no lugar do seu original.

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim LRo As Long, LRd As Long
  If Target.Count > 1 Then Exit Sub
  If Target.Column = 8 And Target.Value <> "" Then
   With Sheets(Target.Offset(, -1).Value)
    LRd = .Cells(63, 2).End(3).Row: If LRd = 11 Then LRd = 12
    .Cells(LRd + 1, 2).Resize(, 4).Value = Cells(Target.Row, 1).Resize(, 4).Value
    .Cells(LRd + 1, 8).Resize(, 5).Value = Cells(Target.Row, 5).Resize(, 5).Value
   End With
   LRo = Cells(Rows.Count, "A").End(xlUp).Row
   Range("A10:N" & LRo).Sort Key1:=Range("H10")
  End If
End Sub

 

funcionamento - o código irá replicar os dados e ordenar conforme comentado acima após inserir um conteúdo na coluna 'H', portanto deixe para inserir a data naquela coluna por último

Postado
23 minutos atrás, osvaldomp disse:

 

O código abaixo engloba o seu código original, que ordena os dados na planilha "Agenda ...", e os comandos para replicar o registro na planilha cujo nome for igual ao conteúdo da coluna 'G'.

Coloque-o no lugar do seu original.


Private Sub Worksheet_Change(ByVal Target As Range)
 Dim LRo As Long, LRd As Long
  If Target.Count > 1 Then Exit Sub
  If Target.Column = 8 And Target.Value <> "" Then
   With Sheets(Target.Offset(, -1).Value)
    LRd = .Cells(63, 2).End(3).Row: If LRd = 11 Then LRd = 12
    .Cells(LRd + 1, 2).Resize(, 4).Value = Cells(Target.Row, 1).Resize(, 4).Value
    .Cells(LRd + 1, 8).Resize(, 5).Value = Cells(Target.Row, 5).Resize(, 5).Value
   End With
   LRo = Cells(Rows.Count, "A").End(xlUp).Row
   Range("A10:N" & LRo).Sort Key1:=Range("H10")
  End If
End Sub

 

funcionamento - o código irá replicar os dados e ordenar conforme comentado acima após inserir um conteúdo na coluna 'H', portanto deixe para inserir a data naquela coluna por último

Boa tarde Osvaldo, creio que não me expressei bem.

a planilha agenda de pagamentos é preenchida quando chega um documento para agendar, portanto cada documento agendado deve conter a data de vencimento e deve ir para a ordem de data, isto porque agendo pagamentos com até três meses de antecedência.

No dia que vou fazer o banco eu entro nesta planilha e vejo o que tem para aquela data, por exemplo no dia 02 tenho 10 pagamentos agendados, então eu vou na coluna G e escrevo em cada linha (dia 02) e quando entro na aba dia 02 todos os pagamentos daquele dia estarão lançados lá.

 

Postado

Olá, Osmar.

Veja se entendi corretamente: ao inserir a data na coluna 'H' o código deverá somente ordenar e ao inserir o nome da planilha destino na coluna 'G' o código deverá somente replicar o registro. Se for isso, utilize o código abaixo no lugar do anterior.

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim LRo As Long, LRd As Long
  If Target.Count > 1 Then Exit Sub
  If Target.Column = 8 And Target.Value <> "" Then
   LRo = Cells(Rows.Count, "A").End(xlUp).Row
   Range("A10:N" & LRo).Sort Key1:=Range("H10")
  ElseIf Target.Column = 7 And Target.Value <> "" Then
   With Sheets(Target.Value)
    LRd = .Cells(63, 2).End(3).Row: If LRd = 11 Then LRd = 12
    .Cells(LRd + 1, 2).Resize(, 4).Value = Cells(Target.Row, 1).Resize(, 4).Value
    .Cells(LRd + 1, 8).Resize(, 5).Value = Cells(Target.Row, 5).Resize(, 5).Value
   End With
  End If
End Sub

dica - para responder clique diretamente na caixa "Responder" abaixo da última postagem, só clique em "Citar" se necessário...:thumbsup:

Postado
55 minutos atrás, osvaldomp disse:

 

O código abaixo engloba o seu código original, que ordena os dados na planilha "Agenda ...", e os comandos para replicar o registro na planilha cujo nome for igual ao conteúdo da coluna 'G'.

Coloque-o no lugar do seu original.


Private Sub Worksheet_Change(ByVal Target As Range)
 Dim LRo As Long, LRd As Long
  If Target.Count > 1 Then Exit Sub
  If Target.Column = 8 And Target.Value <> "" Then
   With Sheets(Target.Offset(, -1).Value)
    LRd = .Cells(63, 2).End(3).Row: If LRd = 11 Then LRd = 12
    .Cells(LRd + 1, 2).Resize(, 4).Value = Cells(Target.Row, 1).Resize(, 4).Value
    .Cells(LRd + 1, 8).Resize(, 5).Value = Cells(Target.Row, 5).Resize(, 5).Value
   End With
   LRo = Cells(Rows.Count, "A").End(xlUp).Row
   Range("A10:N" & LRo).Sort Key1:=Range("H10")
  End If
End Sub

 

funcionamento - o código irá replicar os dados e ordenar conforme comentado acima após inserir um conteúdo na coluna 'H', portanto deixe para inserir a data naquela coluna por último

Osvaldo esta quase perfeito, só mais um detalhe, quando digito dia 1 ou dia 2 toda a linha vai para a planilha correspondente, mas o dia dia ou dois digitado este não deve ir, pois na outra planilha ali colocarei outro dado.

Postado
5 horas atrás, osvaldomp disse:

dica - para responder clique diretamente na caixa "Responder" abaixo da última postagem, só clique em "Citar" se necessário...:thumbsup:

 

5 horas atrás, Osmarbg disse:

... só mais um detalhe, quando digito dia 1 ou dia 2 toda a linha vai para a planilha correspondente, mas o dia dia ou dois digitado este não deve ir, pois na outra planilha ali colocarei outro dado.

 

Teste este abaixo no lugar do anterior.

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim LRo As Long, LRd As Long
  If Target.Count > 1 Then Exit Sub
  If Target.Column = 8 And Target.Value <> "" Then
   LRo = Cells(Rows.Count, "A").End(xlUp).Row
   Range("A10:N" & LRo).Sort Key1:=Range("H10")
  ElseIf Target.Column = 7 And Target.Value <> "" Then
   With Sheets(Target.Value)
    LRd = .Cells(63, 2).End(3).Row: If LRd = 11 Then LRd = 12
    .Cells(LRd + 1, 2).Resize(, 4).Value = Cells(Target.Row, 1).Resize(, 4).Value
    .Cells(LRd + 1, 8).Resize(, 2).Value = Cells(Target.Row, 5).Resize(, 2).Value
    .Cells(LRd + 1, 11).Resize(, 2).Value = Cells(Target.Row, 8).Resize(, 2).Value
   End With
  End If
End Sub

 

Postado

Osvaldo, funcionou perfeitamente, era isso mesmo que eu estava precisando.

Agradeço muito pela sua ajuda, isto vai facilitar muito no meu trabalho, obrigado de coração.

 

Postado
Em 01/05/2016 às 14:09, osvaldomp disse:

 

O código abaixo engloba o seu código original, que ordena os dados na planilha "Agenda ...", e os comandos para replicar o registro na planilha cujo nome for igual ao conteúdo da coluna 'G'.

Coloque-o no lugar do seu original.


Private Sub Worksheet_Change(ByVal Target As Range)
 Dim LRo As Long, LRd As Long
  If Target.Count > 1 Then Exit Sub
  If Target.Column = 8 And Target.Value <> "" Then
   With Sheets(Target.Offset(, -1).Value)
    LRd = .Cells(63, 2).End(3).Row: If LRd = 11 Then LRd = 12
    .Cells(LRd + 1, 2).Resize(, 4).Value = Cells(Target.Row, 1).Resize(, 4).Value
    .Cells(LRd + 1, 8).Resize(, 5).Value = Cells(Target.Row, 5).Resize(, 5).Value
   End With
   LRo = Cells(Rows.Count, "A").End(xlUp).Row
   Range("A10:N" & LRo).Sort Key1:=Range("H10")
  End If
End Sub

 

funcionamento - o código irá replicar os dados e ordenar conforme comentado acima após inserir um conteúdo na coluna 'H', portanto deixe para inserir a data naquela coluna por último

 

Boa tarde Osvaldo, desculpe estar te incomodando novamente, é que depois que me passou aquele código percebi que se eu puder colocar mais um código vai completar meu trabalho.

na planilha que estou te passando anexo, como exemplo tenho Itaú Alimenta dia 1 e dia 2 mas vai ter até dia 31 na prática.

o que preciso é que após preencher os dados do Banco no dia 01,02 etc,

eu tenha uma coluna que ao digitar alim, por exemplo toda a linha seja transferida para a planilha itau alimenta menos a coluna G porque é o saldo e vai dar automático e também a H porque esta já tem um código na planilha Itáu Alimenta que vou utilizar depois.

segue a planilha anexa para exemplo.

 

Planilha exempo.xlsm

Postado

o nome alim citado acima poderia ser digitado na coluna J que esta oculta, no caso agente reexibe ela para usar. e ela também não precisa ir com o resto da linha.

Postado

Boa tarde.

 

Descupem, não estou habituado a postar aqui, meu post foi apagado e não respondido, se fiz algo errado por favor me orientem e eu posto corretamente.

Postado

Olá, Osmar.

Você abriu um tópico com um post igual ao post #8 deste tópico. Por isso o novo tópico foi ocultado.

 

Quanto ao arquivo que você disponibilizou por último, post #8, está instalado nele um código que não é o código que passei no post #6, que você informou que atendeu ao que você precisava. Afinal, qual o código que você está utilizando?

 

Postado

Osvaldo, o código que você passou esta funcionando e esta perfeito.

no caso este seria outro código que preciso 

o código que esta na planilha Itau Alimenta foi passado pelo Patropi a mais ou menos 2 anos atras e eu continuo utilizando.

este que te pedi agora vai servir para transferir os dados do Banco de cada dia para a planilha Itaú Alimenta.

não sei se consegui explicar direito., 

 

 

Postado

 

Só depois me dei conta de que o arquivo do post #8 para o qual você pediu ajuda é diferente do arquivo objeto deste tópico (post #1)...:tw_anguished:

 

Instale o código abaixo no módulo de "EstaPasta_de_trabalho".

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 Dim LR As Long
  If Sh.Name = "Itaú - Alimenta" Then Exit Sub
  If Target.Column = 10 And Target.Value = "alim" Then
   With Sheets("Itaú - Alimenta")
    LR = .Cells(4501, 1).End(3).Row
    .Cells(LR + 1, 1).Resize(, 4).Value = Cells(Target.Row, 2).Resize(, 4).Value
    .Cells(LR + 1, 8) = Cells(Target.Row, 9)
    .Cells(LR + 1, 10).Resize(, 2).Value = Cells(Target.Row, 11).Resize(, 2).Value
   End With
  End If
End Sub

funcionamento - ao inserir o texto "alim" (sem as aspas) na coluna 'J' de qualquer planilha de nome "dia x" o registro será replicado (e não transferido, como você pediu) para a planilha 'Itaú - Alimenta', por isso preencha a coluna 'J' por último.

 

obs. no seu arquivo remova o espaço existente ao final do nome da planilha "Itaú - Alimenta"

Postado

 

 

45 minutos atrás, osvaldomp disse:

 

Instale o código abaixo no módulo de "EstaPasta_de_trabalho".

 

obs. no seu arquivo remova o espaço existente ao final do nome da planilha "Itaú - Alimenta"

 

Faça exatamente como foi recomendado que funciona. :thumbsup:

 

Ainda, remova códigos existentes nos módulos das planilhas.

Postado

Osvaldo boa Noite, instalei o código mais não funcionou

estou postando a planilha com o código instalado, assim você pode verificar se fiz algo errado.

estou 

7 minutos atrás, osvaldomp disse:

 

 

 

Faça exatamente como foi recomendado que funciona. :thumbsup:

 

Ainda, remova códigos existentes nos módulos das planilhas.

Mas eu estou fazendo, não consigo encontrar onde errei, já instalei o código em esta pasta de trabalho a partir da dia 2 e na palnilha Itáú alimenta  deixei assim itaualimenta sem espaço. quando digita na coluna J alim ele não replica, mas também não dá nem um erro.

 

Postado
1 hora atrás, osvaldomp disse:

 

Instale o código abaixo no módulo de "EstaPasta_de_trabalho".

Você instalou o código no módulo da planilha "dia 2". Está de acordo com a recomendação acima?

 

obs. no seu arquivo remova o espaço existente ao final do nome da planilha "Itaú - Alimenta"

O nome da planilha era assim Itaú - Alimenta+espaço, aí você mudou para itaúalimenta. Está de acordo com o recomendado acima?

 

Postado

Bom dia Osvaldo. depois de quebrar muito a cabeça, acabei conseguindo instalar o código que me passou, mas acho que eu não soube explicar direito.

no caso da planilha Itaú - Alimenta como mencionei na pergunta inicial já existe um código que utilizo em outra planilha.

para instalar seu código eu tive que apagar o já existente e eu não posso apagá-lo.

O que preciso é que o código seja instalado nas planilhas dia 01,02 etc.

poderia renomear a planilha Itaú Alimenta para Alim, assim poderia replicar das planilhas dia... para ela.

outra coisa no seu código ele replicou apenas as colunas até uma antes do saldo, mas depois do Saldo não replicou nem uma.

não é para  replicar as colunas do saldo e a filial saída, porque a coluna filial saída é justamente a que vou usar o código que já existe na planilha Itaú Alimenta.

As colunas NF ou caixa de / Vencimento / tipo de pgto entrada, também precisam ser replicadas.

   

 

Postado
1 hora atrás, Osmarbg disse:

 

para instalar seu código eu tive que apagar o já existente e eu não posso apagá-lo.

No código abaixo acrescentei um comando para não interferir com o seu código existente, instale-o no lugar do anterior.

 

outra coisa no seu código ele replicou apenas as colunas até uma antes do saldo, mas depois do Saldo não replicou nem uma.

O código replica da coluna 'B' até a coluna 'L', menos as colunas 'G, H e J', conforme você pediu antes.

   

 

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 Dim LR As Long
  If Sh.Name = "Itaú - Alimenta" Then Exit Sub
  If Target.Column = 10 And Target.Value = "alim" Then
   With Sheets("Itaú - Alimenta")
    LR = .Cells(4501, 1).End(3).Row
    Application.EnableEvents = False
    .Cells(LR + 1, 1).Resize(, 5).Value = Cells(Target.Row, 2).Resize(, 5).Value
    .Cells(LR + 1, 8) = Cells(Target.Row, 9)
    .Cells(LR + 1, 10).Resize(, 2).Value = Cells(Target.Row, 11).Resize(, 2).Value
   Application.EnableEvents = True
   End With
  End If
End Sub

 

Postado

Bom dia Osvaldo.

Na primeira vês que me passou um código eu consegui instalar e vai me ajudar muito.

Este seria apenas um complemento para mim, mas infelizmente meus conhecimentos ainda são muito pequenos e eu não consigo fazer este funcionar na planilha inteira que tenho.

Tenho certeza que seu código esta correto e funcionando, sou eu que preciso me aprimorar mais para no futuro conseguir executar de forma correta.

Por enquanto para este último caso continuarei copiando e colando mesmo rsrsr.

Mas agradeço muito por tentar me ajudar.

Grande abraço.

 

 

Postado

Osmar, se quiser disponibilize o seu arquivo com os códigos instalados e indique o resultado que está obtendo e qual o resultado que você deseja.

Postado

Osvaldo, Agradeço por sua atenção

Este é o arquivo que utilizo na integra.

Quando eu entro no menu (submenu contas a pagar), eu aplico o código que você me deu primeiro e que esta funcionando certinho. após entrar no sub menu contas a pagar, entro em 2016 e depois coloco dia 01,02 etc. e estes pagamentos da agenda vão para o banco do respectivo dia que eu digitei(este dia eu vejo clicando no dia no calendário do menu principal.

Feito isso, eu precisaria do código que não consegui instalar para replicar as coisas do Banco daquele dia para a planilha Itaú Alimenta (é esta que estou copiando e colando os dados).

depois que tudo estiver lançado no Itaú Alimenta, então eu utilizo o 3° código que também esta fincionando perfeitamente que é na planilha Itaú Alimenta eu digito na coluna ref. a Filial Saída e coloco Buriti mai ou Outlet mai etc estas são filiais e ao fazer esta digitação a linha vai para Buriti relatório anual detalhado ou para outra filial que eu digitar no mês de maio no caso. assim eu tenho o custo separado por filial.

a planilha esta protegida mas não tem senha.

 

 

Movimento financeiro - 2016 teste.xlsm

Postado

Osmar, aqui funciona da forma que você pediu. O que eu fiz no seu arquivo do post #22:

1. instalei o código que postei no post #19

2. removi o espaço existente no final do nome da planilha 'Itaú - Alimenta'

3. inseri dados em uma linha vazia da planilha 'dia 2'

4. reexibi a coluna 'J' da planilha 'dia 2' e inseri nela "alim", na mesma linha que inseri os dados (item 3 acima) e a linha foi replicada corretamente na planilha 'Itaú - Alimenta'

Não é isso que você quer?

 

obs.

1. no post #13 eu alertei sobre um espaço existente no nome da planilha, no entanto você não corrigiu...:(

2. o código executa após inserir o texto "alim" na coluna 'J' das planilhas 'dia x', no entanto a coluna 'J' está oculta em todas as planilhas; como você faz, reexibe a coluna, insere "alim" e volta a ocultá-la ? :(

Postado

na planilha que usei para teste eu consegui remover o espaço mas como estou engatinhando ainda, devo ter feito alguma outra coisa errada, pois não consegui fazer funcionar, ou seja até transferir das planilhas dia x para Itaú Alimenta, mas quando vou usar a planilha Itaú Alimenta para digitar o Buriti mai ou outra filial para gerar os custos por filial não deu certo.

dava certo no código que eu apaguei, pois você disse que colocou um comando para não influir no que estava usando.

mas não sei porque esta parte não vai.

 

no caso da coluna J estava oculta porque não estava usando, agora que vou usa-la, não vou ocultá-la mais.

 

Postado

Fica impossível ajudar e finalizar o tópico se você faz testes em um arquivo e disponibiliza outro diferente aqui...:tw_anguished:

Você pode manter os códigos anteriores pois este último não deverá interferir neles e tampouco ser interferido por eles.

 

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!