Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#54773
Bom dia. Não tenho certeza se é necessário uma Macro para isso, mas vou explicar o que preciso.
Tenho uma pasta com 4 planilhas. A DADOS é um cadastro de pacientes. Outras 2 são dos pacientes internados. A outra são dos retornos agendados.
Eu queria que....na planilha DADOS....na coluna CONDUTA....quando fosse selecionado Internação...alguns dados desta linha fossem copiados automaticamente para sua planilha específica (Homens ou Mulheres internados).
Quando na coluna SAÍDA fosse selecionado Alta ou Óbito...os dados fossem deletados automaticamente da planilha de Internados.
E quando na coluna RETORNO...fosse inserido uma data....alguns dados fossem copiados para planilha Retornos automaticamente.
Segue um anexo adaptado.

Desde já obrigado.
Você não está autorizado a ver ou baixar esse anexo.
#54779
Veja se ajuda.
Você não está autorizado a ver ou baixar esse anexo.
#54788
Primeiramente, muito obrigado, é isso mesmo que eu preciso.
Se possível, ainda precisa de alguns ajustes...poderia ajudar?
Por exemplo...
Na planilha de Internados (homens e mulheres) a data a ser inserida (coluna A) seria a data conduta, troquei na fórmula e parece que deu certo, mas apareceram vários alertas nos cantos das células.
Fiz este procedimento para a planilha Retorno também, onde a data deveria ser a data inserida na coluna Retorno da planilha Dados, parece que deu certo também.
Outra coisa, seria melhor se as linhas fossem inseridas ou organizadas na ordem cronológica, da menor para maior data, não deslocando uma linha para baixo e inserindo os dados na primeira linha, mas sim inserindo esta linhas abaixo.
Na planilha Retornos, as colunas Conduta e Data conduta não devem ser copiadas, elas serão preenchidas no dia do retorno. Aí, a coluna Conduta da planilha Retornos teria que fazer igual a coluna Conduta da planilha Dados, que quando escolhido Internação, copiaria os dados para a planilhados internados.
Será que consegui explicar?
Obrigado novamente.
#54869
Boa noite.Recebi resposta sobre minha dúvida. Tentei melhorá-la e/ou adaptá-la para uma situação extra, mas não consegui. Assisti alguns vídeos, acompanhei a ajuda do excel passo a passo, item por item da fórmula, mas não dei conta de aplicar.
Se possível, gostaria de alguma explicação mais didática da fórmula utilizada ou da resolução da segunda parte do meu post.
Obrigado.
#54873
Se você quiser experimentar uma solução via macro então instale os códigos abaixo como segue.

'instalar no módulo da planilha Dados
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim LR As Long, ws As Worksheet, c As Range
  If Target.Count > 1 Then Exit Sub
  If Cells(Target.Row, 3) = "F" Then
   Set ws = Sheets("Mulheres internadas")
  ElseIf Cells(Target.Row, 3) = "M" Then
   Set ws = Sheets("Homens internados")
  Else: Exit Sub
  End If
  If Target.Column = 7 And Target.Value = "Internação" Then
   With ws
    LR = IIf(.Cells(2, 1) = "", 2, .Cells(1, 1).End(4).Row + 1)
    .Cells(LR, 1) = Cells(Target.Row, 8)
    .Cells(LR, 2).Resize(, 4).Value = Cells(Target.Row, 2).Resize(, 4).Value
   End With
  ElseIf Target.Column = 9 And Target.Value = "Alta" Or Target.Value = "Óbito" Then
   With ws
    Set c = .[B:B].Find(Cells(Target.Row, 2))
    If Not c Is Nothing Then c.EntireRow.Delete
   End With
  ElseIf Target.Column = 11 And Target.Value <> "" Then
   Set ws = Sheets("Retornos")
   With ws
    LR = IIf(.Cells(2, 1) = "", 2, .Cells(1, 1).End(4).Row + 1)
    .Cells(LR, 1) = Target.Value
    .Cells(LR, 2).Resize(, 4).Value = Cells(Target.Row, 2).Resize(, 4).Value
   End With
  End If
   With ws
  .Range("A1").Resize(.Cells(Columns.Count, 1).End(3).Row, .Cells(1, 1).End(2).Column) _
   .Sort Key1:=.[A1], order1:=xlAscending, Key2:=.[B1], order2:=xlAscending, Header:=xlYes
 End With
End Sub
'instalar no módulo da planilha Retornos
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim LR As Long, ws As Worksheet, c As Range
  If Target.Count > 1 Then Exit Sub
  If Target.Column = 6 And Target.Value = "Internação" Then
   If Cells(Target.Row, 3) = "F" Then
    Set ws = Sheets("Mulheres internadas")
   ElseIf Cells(Target.Row, 3) = "M" Then
    Set ws = Sheets("Homens internados")
   Else: Exit Sub
   End If
   With ws
    LR = IIf(.Cells(2, 1) = "", 2, .Cells(1, 1).End(4).Row + 1)
    .Cells(LR, 1) = Cells(Target.Row, 7)
    .Cells(LR, 2).Resize(, 4).Value = Cells(Target.Row, 2).Resize(, 4).Value
    .Range("A1").Resize(.Cells(Columns.Count, 1).End(3).Row, .Cells(1, 1).End(2).Column) _
     .Sort Key1:=.[A1], order1:=xlAscending, Key2:=.[B1], order2:=xlAscending, Header:=xlYes
   End With
  End If
End Sub
dica para instalar códigos em módulo de planilha
1. copie o código daqui
2. clique com o direito na guia da planilha de interesse 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
#55316
Osvaldo boa noite.
Desculpe a demora para responder, mas só consegui mexer hj no arquivo.
É quase isso, ainda não funcionou certinho, mas já deu uma adiantada.
Vou fazer algumas modificações e logo logo relato, mas desde já muito obrigado.
Qualquer dúvida te aviso.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord