Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
paulocezarpicos

dia da semana

Recommended Posts

Galera,

Estou precisando da ajuda de vocês pra desenrolar uma formula que não estou conseguindo. É o seguinte: Tenho duas colunas, na coluna A tenho as datas e na coluna B tenho os espaços onde insiro os horários, só que gostaria que nas datas que correspondem a sábado e domingo na coluna do horário já aparecesse os nomes sábado e domingo. Como vocês podem perceber, na coluna dos horários não pode ter formula, então teria que ser em VBA. Espero ter sido claro o suficiente e que vocês possam me ajudar.

De já agradeço a quem possa me ajudar.

 

Paulo Cezar.

 

Obs.: Planilha em anexo.

CONTROLE_INDIVIDUAL_DE_FREQUENCIA- ABRIL_2017.zip

Compartilhar este post


Link para o post
Compartilhar em outros sites

@paulocezarpicos O que você poderia fazer nesse caso é o seguinte, acrescentar mais uma coluna antes ou depois da coluna A onde você colocaria por exemplo, se o dia 1º de Abril for Sábado, você vai preencher com "SAB", o dia 2 é Domingo, então você preenche com "DOM", nesse caso você já acabou criando para o Excel uma sequencia, agora basta você pegar a seta preta que tem dentro da célula e arrastar até os últimos dias do mês. Ficaria mais ou menos assim o procedimento:

 

85980e1637ce4df685eab6bb993e4ffb.png

 

E o resultado final seria esse:

 

72d086db40dd470bba29c48bd90c8567.png

 

Seria isso ou eu entendi errado?

Editado por Mr. Paglia
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Mr. Paglia,

    Obrigado por responder. Não posso inserir nada na coluna B, pois tenho que inserir os horários. Eu preciso que apareça somente nos sábados e domingos (os outros dias ficar em branco pra inserir os horários) e tem que ser na coluna B, logo depois das datas.

     

    Paulo Cezar.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @paulocezarpicos , boa noite.

     

    Prá fazer via código, pelo menos suas planilhas deveriam estar mais padronizadas, senão complica o meio de campo. Nem analisei todas, mas já da primeira ("Alexandre") prá segunda ("Antonio Mendes") tem algumas diferenças que interferem diretamente na criação da macro:

    1) na Alexandre, a coluna A (Dia), é inserida através de fórmula que pega mês e ano da célula L9. Ok, muito bom, pois nesse caso a coluna A vai conter valores válidos como data e podem ser usados diretamente assim na macro. A macro nesse caso poderia ser, por exemplo:

    Sub InsereFDS()
       Dim rgDiasDoMês As Range, rgDia As Range
       Set rgDiasDoMês = ActiveSheet.Range("A13:A43")
       For Each rgDia In rgDiasDoMês
         If IsDate(rgDia.Value) Then
            If Weekday(rgDia.Value) = 7 Or Weekday(rgDia.Value) = 1 Then '7 = Sábado e 1 = Domingo
               rgDia.Offset(0, 1).Resize(1, 4).Value = UCase(Format(rgDia.Value, "dddd"))
            End If
         End If
       Next rgDia
    End Sub

     

    2) Só que aí, olhando a segunda planilha, "Antonio Mendes", já começam a aparecer as diferenças. A coluna dos dias mostra algarismos de 1 a 31, aí prá converter para uma data válida tudo bem que daria prá pegar da K9 (na do Alexandre era L9), mas além de estar em um intervalo mesclado (K9:L10), mês e ano não estão mais como um valor mas no meio de um outro texto. Indo mais adiante, na planilha "Paulo Cruz", o intervalo mesclado já mudou e está agora em K10:L11.

     

    Claro que tudo isso dá prá resolver, dá prá localizar a célula onde estaria o mês/ano, dá prá extrair a substring mês e ano do meio do texto, sem problemas.

     

    Mas aí o código começa a inchar desnecessariamente só prá tratar das exceções e erros começam a pipocar. Se você pudesse definir e padronizar uma planilha mestra prá servir de modelo prá todas, facilita muito.

     

    @CasaDoHardware (Marcelo) que sempre diz: "Simplifica que simples fica"

    Editado por Edson Luiz Branco

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Edson,

    Perdão, era pra ter previsto essa dúvida. A planilha padrão é a primeira, aplicarei nas outras. Era exatamente o que eu estava precisando. Muito obrigado

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Edson,

    Tô com um probleminha na formula que você me mandou. É que quando altero o mês na planilha principal (Relação), nas outras planilhas não altera os dias sábado e domingo correspondente as suas datas. Estou enviando a planilha em anexo pra que você veja onde está o erro.

     

    Obs.: Vou inserir 74 planilhas.

     

    Paulo Cezar.

    CONTROLE INDIVIDUAL DE FREQUENCIA - 2017.zip

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Paulo, bom dia.

     

    Mas essa necessidade não estava em sua postagem original, não existia uma planilha principal "Relação" lá que gerasse novas datas.

    Então descreva completamente o que você quer fazer: imagino que você queira que, após atualizar mês/ano da planilha "Relação" apague onde antes já havia texto "SÁBADO" ou "DOMINGO" e reescreva para o novo mês? Ou você já faz isso ao fazer a limpeza dos lançamentos de horas?

     

    Algumas considerações/sugestões sobre seus formulários de preenchimento (filhos).

    1) Percebi que você está replicando a referência ao mês/ano da planilha Relação (D5) para cada planilha individual na célula L9. Entretanto, não entendi o porquê de a do Antônio Joaquim pegar da L9 da do Ivanildo que por sua vez pega da L9 da do Alexandre, que por sua vez, esta sim, pega da planilha principal, Relação. É um erro ou tem algum propósito? Se for erro, sugiro que você atribua à célula D5 de Relação um nome, digamos "MêsAno" e use esse nome (=MêsAno) como fórmula nas planilhas individuais em L9, assim evita erro se caso você elimine alguma planilha no futuro.

     

    2) Percebi também que você está tentando usar uma armadilha de eventos em cada planilha filha para capturar mudanças na célula L9 de cada uma delas. Só que infelizmente o evento Change só ocorre se a alteração foi feita inserindo/deletando algo na própria célula e não por alterações que são originadas como resultado de fórmula provenientes de outros locais. Neste caso, melhor seria usar o evento Calculate. Mas, melhor ainda seria capturar a alteração da célula da própria planilha "Relação" e fazer isso se propagar para todas de uma só vez, o que você acha? 

     

    Comente para que possamos continuar.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Meu caro Edson,

    Não sou tão bom como você imagina. Tentei usando o "nome" da celula D5 nas celulas L9 e não deu certo e sobre usar o calculate eu não sei fazer, se você sabe, vamos tentar. Outra coisa, eu percebo que a formula é só pra uma planilha, como é que dá certo pra 71 planilhas (inclusive a linha: "Planilha1.Range("B12:E43").ClearContents" que eu acrescentei na sua formula refere-se a uma planilha, tem como dá certo??

    Obs.: Tô mandando de novo a plan em anexo

    CONTROLE INDIVIDUAL DE FREQUENCIA - 2017.zip

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Em 28/03/2017 às 19:35, paulocezarpicos disse:

    Mr. Paglia,

    Obrigado por responder. Não posso inserir nada na coluna B, pois tenho que inserir os horários. Eu preciso que apareça somente nos sábados e domingos (os outros dias ficar em branco pra inserir os horários) e tem que ser na coluna B, logo depois das datas.

     

    Paulo Cezar.

     

    Você realmente não pode ter conteúdo algum na célula ou apenas ficar visualmente vazia? Se for isso, bastaria:

     

    =SE(DIA.DA.SEMANA($A13)=1;"DOMINGO";SE(DIA.DA.SEMANA($A13)=7;"SÁBADO";""))

     

    Feriado é outra história.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Walter,

    Realmente não posso inserir nada nessa coluna, pois tenho que inserir os horários. Tem que pelo VBA mesmo.

     

    Um abraço,

     

    Paulo Cezar.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Usa formatação condicional com formula do Walter.

     

    Uma pergunta porque nao inserir mais uma coluna como foi sugerido na primeira resposta?

     

    Coisa simples de resolver

     

    Editado por CasaDoHardware

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Edson,

    Federal, perfeito, o que eu posso dizer .... genial. Muito obrigado e que JESUS continue te abençoando.

     

    Paulo Cezar.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Edson,

    Não queria te perturbar, mas, se o santo é milagroso, não tem sentido mudar a devoção. É o seguinte: Me bati pra criar uma maneira prática de como imprimir as planilhas e não consegui. Fiz um formulário que será chamado pelo ícone que inseri na planilha "Relação" e queria que ao marcar o primeiro checkbox imprimisse todas as planilhas ou marcar o segundo checkbox aparecesse a Label3 e Textbox1 e então o usuário digitasse o nº da planilha, tipo 1,2,3,4,15,44 etc.....

     

    Na certeza de sua colaboração,

     

     

    Paulo Cezar.

     

    Obs.: Estou enviando a planilha em anexo.

    CONTROLE INDIVIDUAL DE FREQUENCIA - 2017.zip

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Edson,

     

    Muito agradecido pela sua presteza e atenção. Desse jeito que você fez não dá certo poque são 74 planilhas, não tem espaço no formulário que dê. Mas, não se preocupe, depois de apanhar muito consegui fazer do jeito que queria, isto é, fiz um código que imprime todas as planilhas e outro que imprime a planilha que estiver marcada com um "X" na coluna "F". Mas, o mais importante é que sou muito grato a você pela ajuda a mim dispensada.

     

    Que JESUS te abençoe hoje e sempre.

     

    Paulo Cezar.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    33 minutos atrás, paulocezarpicos disse:

    ...Desse jeito que você fez não dá certo poque são 74 planilhas, não tem espaço no formulário que dê.

     

    Bem, só prá informar, fiz teste com 86 planilhas e todas couberam, pois fiz de maneira que o form se expandisse em n colunas de 20 planilhas cada coluna.

     

    Mas, como você já resolveu, ok, sem problemas.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Edson,

    Venho aqui  humildemente admitir que não utilizei sua fórmula (planilha) devido a sua complexidade e assim sendo não pude fazer nenhuma alteração. Mas, se você não ficou chateado comigo e quiser me ajudar , gostaria que visse essa formula e me dissesse onde estou errando e ficaria muitíssimo grato pela sua compreensão e colaboração.

     

    Formula abaixo:

     

    Private Sub CommandButton1_Click()

     Dim I As Long
      For I = 1 To 2
       If UserForm2.Controls("CheckBox" & I) Then GoTo Mjump
      Next I
    MsgBox "VAL, MARQUE UMA OPÇÃO !!!!!!": Unload Me: Exit Sub
    Mjump:

    If CheckBox1 = True Then (imprime todas as planilhas)
    Call ImprimirPlanilhas


    If CheckBox2 = True Then    (imprime somente as planilhas marcadas)
            If Sheets("Relação").[F10] <> "" Then
               Sheets("ALEXANDRE").PageSetup.PrintArea = "A1:L48"
               Sheets("ALEXANDRE").PrintOut
           End If
            ElseIf Sheets("Relação").[F11] <> "" Then
               Sheets("ANTONIO").PageSetup.PrintArea = "A1:L48"
               Sheets("ANTONIO").PrintOut
            
            ElseIf Sheets("Relação").[F12] <> "" Then
                 Sheets("IVANILDO").PageSetup.PrintArea = "A1:L48"
                 Sheets("IVANILDO").PrintOut
           
            
            ElseIf Sheets("Relação").[F13] <> "" Then
                 Sheets("ANTONIO JOAQUIM").PageSetup.PrintArea = "A1:L48"
                 Sheets("ANTONIO JOAQUIM").PrintOut
            
            ElseIf Sheets("Relação").[F14] <> "" Then
                 Sheets("AMENDES").PageSetup.PrintArea = "A1:L48"
                 Sheets("AMENDES").PrintOut
            
            ElseIf Sheets("Relação").[F15] <> "" Then
                 Sheets("LOMBARDE").PageSetup.PrintArea = "A1:L48"
                 Sheets("LOMBARDE").PrintOut
            
            ElseIf Sheets("Relação").[F16] <> "" Then
                 Sheets("AURIVAN").PageSetup.PrintArea = "A1:L48"
                 Sheets("AURIVAN").PrintOut
            
            ElseIf Sheets("Relação").[F17] <> "" Then
                 Sheets("CLEMILTON").PageSetup.PrintArea = "A1:L48"
                 Sheets("CLEMILTON").PrintOut
            
            ElseIf Sheets("Relação").[F18] <> "" Then
                 Sheets("DANIEL").PageSetup.PrintArea = "A1:L48"
                 Sheets("DANIEL").PrintOut
            
            ElseIf Sheets("Relação").[F19] <> "" Then
                 Sheets("DANILO").PageSetup.PrintArea = "A1:L48"
                 Sheets("DANILO").PrintOut

     

            

    Else: MsgBox "VAL, VOCÊ NÃO MARCOU COM X NENHUM FUNCIONÁRIO !!!!!!": Unload Me: Exit Sub
            End If
    End If
    End If


    Call limpar

    Unload Me
    Application.ScreenUpdating = True

    End Sub

     

     

    De já, meus agradecimentos.

     

     

    Paulo Cezar.

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Paulo você vai imprimir as planilhas?

     

    Se sim nao precisa criar 80 guias em separado isso é no mimino despresar os recursos do excel,

     

    Da pra resolver isso com 2 planilhas uma com os dados e uma para ser impressa.

     

    Um codigo simples de pouco mais de 10 linhas resolve com facilidade.

     

    Outra coisa se vai imprimir nao precisa de VBA para identificar os sabados e domingos.

    Imaginei que você tivesse criando 80 guias porque cada funcionario iria lançar a informação hora de entrada e saida na planilha.

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • CasaDoHardware,

    Não é desprezo pelo excel e sim ignorância, me ajude, por favor. Sim vou imprimir as planilhas pra que seja escrito os horários todos os dias, são comprovantes de frequência. Só a título de informação, na planilha "Relação", na coluna "F" vou marcar um "X" no nome e assim imprimirá  a planilha correspondente. Perceba que tem um form com dois checkbox, se tiver uma mensagem quando os dois checkbox's estiverem desmarcados e outra mensagem quando o checkbox2 tiver marcado e não tiver nenhum "X" marcado na coluna "F", eu ficaria muitíssimo grato.

     

    Obs1.: Planilha em anexo;

    Obs2.: Se você comentar a formula minha gratidão será multiplicada por dez.

     

    Ficarei no aguardo,

     

    Paulo Cezar.

    CONTROLE INDIVIDUAL DE FREQUENCIA - 2017-3.zip

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×