Ir ao conteúdo
  • Cadastre-se

Atualizar Dados em outra Pasta


Posts recomendados

Olá Pessoal,

 

Estou elaborando uma planilha para fazer um gerenciamento básico de um sistema de hotelaria.

 

A partir disso Segue as Imagens do  Plan1 e Plan2:

 

 

 

No Plan2 na Coluna B Estão números que vão variar entre 0 e 1.

 

0 = Quarto vazio.

1 = Quarto Ocupado.

 

Seguindo esse raciocínio, eu queria habilitar uma macro que no momento que eu selecionasse a data de entrada e a quantidade de dias, essa macro vá para o Plan 2 e troque os dias Correspondentes de 0 para 1.

 

Ex.:

 

Uma pessoa X vai dar entrada no hotel no dia  23/12/2014 e ficará 3 dias.

Automaticamente a macro fará a Planilha ficar desse jeito.

 

http://prntscr.com/5i4qbb

 

 

 

Att, Victor luís.

Link para o comentário
Compartilhar em outros sites

@minoso São vários Quartos...   Mas esse arquivo é só um Exemplo.

 

Olha Este Arquivo.

 

você irá compreender Exatamente o que eu quero. Ideia é Simples.

 

Verificar opções de Quartos => Se Disponível => Transformar de 0 em 1 os dias decorrentes para hospedagem.

Excel zuera no hotel.xlsx

Link para o comentário
Compartilhar em outros sites

Bom, fazia tempo que não programava.

 

Veja se o arquivo que estou anexando atende o que você precisa.

 

Se funcionar e não entender nada da lógica da macro, retorne que vamos nos falando!

 

Espero que eu tenha lhe ajudado ;)


EDIT - Caro, cometi um erro grotesco em salvar o arquivo como XLSX, ao invés de XLSM. Perdemos toda a macro Hahahah (Que loucura!) Amanhã pela manhã eu refaço toda ela e anexo aqui novamente. Perdão.

Excel zuera no hotel.xlsx

Link para o comentário
Compartilhar em outros sites

@minoso Olá,

 

Primeiramente...  sou teu fã (Foto do Fizz  hehe). e você resolveu o Probleminha do 0 e 1.  S2

 

 

Bom, Falando sério agora, a minha dúvida está nessa parte.

 

'verificando a quantidade de linhas da agenda dos quartos na aba QUARTO
    Range("A1").Select
    Selection.End(xlDown).Select
    contalinha = ActiveCell.Row - 1
    
    'verificando a quantidade de quartos na aba QUARTO
    Range("XFD1").Select
    Selection.End(xlToLeft).Select
    contaquarto = ActiveCell.Column
 
  • Esse Selection.End  Seria uma Seleção até a Ultima linha E/OU Coluna onde tenha informação?
  • Não entendi a lógica da Contagem dos Quartos.  Como isso foi possível se a ultima Coluna foi selecionada ?
Link para o comentário
Compartilhar em outros sites

 

'verificando a quantidade de linhas da agenda dos quartos na aba QUARTO

    Range("A1").Select
    Selection.End(xlDown).Select
    contalinha = ActiveCell.Row - 1
    
    'verificando a quantidade de quartos na aba QUARTO
    Range("XFD1").Select
    Selection.End(xlToLeft).Select
    contaquarto = ActiveCell.Column
 
  • Esse Selection.End  Seria uma Seleção até a Ultima linha E/OU Coluna onde tenha informação?
  • Não entendi a lógica da Contagem dos Quartos.  Como isso foi possível se a ultima Coluna foi selecionada ?

 

Mais ou menos por aí.

 

O "Selection.End" é um comando que orienta a seleção atual a se dirigir até a última célula COM CONTEÚDO. Note, ele não faz uma seleção de todas as células com conteúdo e sim apenas move a seleção (de uma única célula) para a orientação que damos (cima, baixo, esquerda ou direita). O efeito desse comando é o mesmo de quando você está na interface do excel, a planilha, segura o CTRL e com as setinhas do teclado vai orientando a seleção, sempre à extremidade da tabela.

 

Então, para contar o tamanho da agenda (quantas datas está cadastrada no quarto), nós orientamos a seleção a ir para A1 e, então, Selection.End(vá pra última linha com conteúdo).Select. Uma vez com a seleção na última linha, armazenamos a uma variável, que chamei de contalinha, o número da posição da linha que a seleção está, ou seja, a variável recebrá isso: contalinha = LIN(). Lembra-se da função =LIN() na interface do Excel? Então! O ActiveCell.Row tem o mesmo retorno.

 

A mesma lógica se aplica para a quantidade de quartos. Orientamos a seleção a ir lá pra última coluna da planilha, a XFD1, e então forçamos ela a ir ao extremo esquerdo, usando o Selection.End, assim sabemos que a seleção vai parar na primeira célula com conteúdo que encontrar. A partir disso armazenamos na variável contaquarto o ActiveCell.Column, o mesmo que contaquarto =COL() - função que retorna o número da posição da coluna.

 

Usando o anexo como teste de mesa, temos o seguinte:

 

Contalinha

A1 = posição linha 1

Selection.End(vá para baixo).Selecion {ele vai pra linha 34}

Então, atribua o número da linha em que a seleção está na variável

contalinha = 34

 

Contaquarto

XFD1 = coluna ??? (não sei o número dela)

Selection.End(vá para a esquerda).Selection {ele vai para a coluna 16, a última com conteúdo}

Então, atribua o número dessa coluna em que a seleção está na variável

contaquarto = 16

 

Com base nesse número e com o uso correto do FOR, conseguimos orientar a seleção dentro da nossa 'matriz', sabemos qual é o tamanho total de colunas que ela tem e o tamanho total de linhas preenchidas que ela tem (lista de datas), aí é só rodar o FOR e comparando os valores da células e quando achar, fazer a alteração do 0 para 1. O encadeamento do FOR gira na ordem de

  • Primeira varra as colunas de 16 a 1 (da direita para a esquerda) tentando achar o número do quarto preenchido no formulário PAINEL
  • Quando achar o quarto, comece a varrer a agenda da linha 1 a 34 tentando achar a data de Check IN
  • Quando achar a data de check in, entre no último FOR e faça o preenchimento com o número 1. A repetição desse for é o mesmo valor do número de dias que a pessoa vai ficar hospedada

 

Fim :)

 

Obs não séria: Sim, também sou fã do Fizz :P

Link para o comentário
Compartilhar em outros sites

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...