Ir ao conteúdo
  • Cadastre-se

Excel Impressão fichas de aluno


Ir à solução Resolvido por Visitante,

Posts recomendados

Olá pessoal, boa tarde. Precisaria de uma ajuda / luz para resolver uma questão.

Preciso de uma macro que imprimisse a planilha "Ficha de aluno" para cada aluno de uma determinada turma, pensei por exemplo:

 

Um botão em conjunto com uma lista. Seleciono a turma nesta lista e apertaria o botão "imprimir" que quando acionado, imprimiria uma planilha de cada aluno dessa turma (se possivel ignorando os remanejados ou transferidos). 

 

Então se eu selecionasse na lista o 2ºC, por exemplo, e apertasse o botão imprimir, teria impresso uma ficha d lanilha "Ficha de aluno" para cada aluno ATIVO do 2ºC. (retirando os transferidos/remanejados).

 

Agradeço qualquer ajuda.

 

Luciano

Teste_manha_2019.zip

Link para o comentário
Compartilhar em outros sites

2 horas atrás, ljbrito disse:

Então se eu selecionasse na lista o 2ºC, por exemplo, ...

Em qual planilha estão as listas ? Em qual célula está o 2ºC ?

 

e apertasse o botão imprimir, teria impresso uma ficha d lanilha "Ficha de aluno" para cada aluno ATIVO do 2ºC. (retirando os transferidos/remanejados).

Como identificar aluno ativo ?

 

 

Uma ideia: o código irá colocar o nome de cada aluno em C6 da planilha "Ficha do aluno", então seria oportuno que você colocasse nos demais campos daquela planilha fórmulas para "puxar" os demais dados que você deseja imprimir, se o caso.

Para prevenir erros em caso de homônimos, o código poderá preencher série e ou período, nesse caso indique a origem desses dados.

 

dica - não mescle células, pois células mescladas além de desnecessárias e inúteis, podem provocar erros em fórmulas e em macros

Link para o comentário
Compartilhar em outros sites

15 horas atrás, osvaldomp disse:

Em qual planilha estão as listas ? Em qual célula está o 2ºC ?

 

As listas dos alunos estão na aba "Alunos". Quando disse a célula 2ºC, seria criar um botão onde eu escolhesse qual turma queria imprimir, mais ou menos como tem na aba  "Lista" onde escolho qual aba imprimir no botão "Imprimir Planilha".

 

15 horas atrás, osvaldomp disse:

Como identificar aluno ativo ?

 

Na aba "alunos", todo aluno com uma marcação na 3ª coluna (TR, REM, NC, etc..), NÃO está ativo. Se estiver em branco, está ativo.

 

15 horas atrás, osvaldomp disse:

Uma ideia: o código irá colocar o nome de cada aluno em C6 da planilha "Ficha do aluno", então seria oportuno que você colocasse nos demais campos daquela planilha fórmulas para "puxar" os demais dados que você deseja imprimir, se o caso.

Para prevenir erros em caso de homônimos, o código poderá preencher série e ou período, nesse caso indique a origem desses dados.

 

Depois lembrei que o período não precisa, pois essas turmas já estão separadas por período (essa 15 turmas são da manhã). Então seria somente o nome do aluno e sua turma e isso estão na aba "Alunos".

 

 

15 horas atrás, osvaldomp disse:

 

dica - não mescle células, pois células mescladas além de desnecessárias e inúteis, podem provocar erros em fórmulas e em macros

 

@osvaldomp, obrigado pela dica. Eu não manjo de macro, então por isso eu fazia planilhas assim, com células mescladas. Já vi que dá problema, então vou seguir sua dica e tentar desmesclar as atuais. Quando eu fizer uma do zero, certeza não terá tanta mesclagem, hehe. Valeu pela ajuda.

Link para o comentário
Compartilhar em outros sites

  • Solução

Veja se ajuda.

Na planilha Lista selecione a turma na coluna C e rode o código abaixo.

 

Sub ImprimeFichasAlunos()
 Dim c As Long, a As Range
  With Sheets("Alunos")
   c = .[2:2].Find(ActiveCell.Value).Column
   For Each a In .Range(.Cells(4, c + 1), .Cells(Rows.Count, c + 1).End(3))
    If a.Offset(, 1).Value = "" Then
     Sheets("Ficha do aluno").[C6] = a.Value
     Sheets("Ficha do aluno").PrintOut
    End If
   Next a
  End With
End Sub

 

Link para o comentário
Compartilhar em outros sites

Osvaldo, boa tarde

 

Primeiramente obrigado pela ajuda e desenvolvimento do código. O problema é que não sou muito bom em macro e não sei bem o que fazer com esse código. Até criei um botão na planilha "Ficha de alunos" e colei esse codigo, mas não funcionou. Provavelmente devo ter feito o procedimento errado.

 

Poderia me orientar como fazer para utilizar esse código?

 

Obrigado

Link para o comentário
Compartilhar em outros sites

Instalação do código

Instale uma cópia do código em um módulo comum, assim:

1. abra o seu arquivo Excel

2. copie o código daqui
3. de volta ao arquivo Excel tecle 'Alt+F11' para acessar o editor de VBA
4. no menu do editor Inserir / Módulo
5. cole o código na janela em branco que vai se abrir
6. feito! 'Alt+Q' para retornar para a planilha

 

Para rodar o código

Mantenha a planilha Lista ativada, selecione a turma desejada na coluna C daquela planilha e utilize um dos procedimentos abaixo.
a)  tecle 'Alt+F8' / selecione a macro ImprimeFichasAlunos / Executar , ou

b) insira um botão na planilha Lista e atribua a ele a macro ImprimeFichasAlunos , ou

c) vincule a macro a um atalho de teclado ~~~> Alt+F8 / selecione ImprimeFichasAlunos  / Opções / na caixa Ctrl+ digite uma letra da sua escolha (por exemplo a letra "i", sem as aspas) / OK / Cancelar ~~~> daí em diante para rodar o código aperte Ctrl+i

Link para o comentário
Compartilhar em outros sites

Mestre Osvaldo, muito boa tarde

 

Finalmente consegui um tempo aqui na escola para testar seu código e funcionou do jeito que eu desejava. 

- colocou o nome de cada aluno na planilha;

- só imprimiu os alunos ativos;

- evitou o desperdício, imprimindo somente o exato numero de alunos de cada turma.

 

Se não seria abusar mais um pouco, na ficha só foi o nome do aluno e não sua turma (2ªA, 2ºB, etc...). Poderia acrescentar no código a ida da turma na coluna "série"?

 

Muito obrigado pela ajuda.

 

Luciano

Link para o comentário
Compartilhar em outros sites

Olá, Luciano.

Acrescente ao código a linha em vermelho conforme abaixo.

 

    c = .[2:2].Find(ActiveCell.Value).Column
    Sheets("Ficha do aluno").[A6] = .Cells(2, c)
    For Each a In .Range(.Cells(4, c + 1), .Cells(Rows.Count, c + 1).End(3))

Link para o comentário
Compartilhar em outros sites

Bom dia, ljbrito (Luciano) e Mestre osvaldomp

 

Primeiramente é sempre gratificante e perfeito as soluções do Mestre Osvaldo, aprendemos

muito com isso (abrindo novas maneiras de solucionar a mesma questão 😀, obrigado 👏👍)....

 

Luciano, tem outra "solução" feita por mim no outro Fórum (não sabia que neste Fórum já tinha sido

resolvido a questão ☹️😮) verifique.... e uma dica muito importante :

 

💡Quando criar um Tópico com o mesmo assunto em outro Fórum.. lançando a mesma dúvida, você
poderia informar com os Links deles para que os integrantes deste(s) Fórum(ns) que tenham perguntas
semelhantes possam acompanhar ...
(e aqueles que querem ajudar possam verificar se já foi solucionado, para não "amarrá-los" depois que
foi resolvido), fazendo isso em todos os Fóruns que tenha aberto; se tiver a(s) solução(ões) em algum
deles colocando o link desta solução nos outros..👍

 

Aguardando sua resposta e seu Feed Back ... se foi útil, não esqueça de clicar na "mãozinha" :D

 

LaerteB :D

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

LaerteB e Osvaldo, bom dia

 

De maneira nenhuma queria dar a impressão de desmerecer o trabalho e a dedicação na ajuda de você ou do Osvaldo. Eu realmente não manjo de macro e toda ajuda é bem vinda. Há alguns anos, o mestre Osvaldo já me ajudou no outro fórum mas vi que ele não está mais lá, por isso resolvi postar aqui também. Nunca imaginei que poderia mencionar fóruns concorrentes sem sanções, por isso não o fiz. Se é o procedimento correto a fazer, peço desculpas aos colegas pelo ocorrido

 

Minha intenção é deixar essas planilhas para um "leigo" poder usar, então a ideia dos botões que você colocou no outro fórum é muito interessante para mim, para deixar os arquivos no futuro para a escola.

 

A solução do Osvaldo é rápida e servirá para a impressão das fichas que já estão atrasadas. Agradeço aos 2 pelo tempo e dedicação na solução do meu problema.

 

Meu muito obrigado.

 

PS: procurei como colocar a tag "resolvido" mas nao encontrei e já colocaram pra mim.

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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