Notifications
Clear all

Criar fichas com base em listagem

13 Posts
3 Usuários
0 Reactions
2,917 Visualizações
(@shroeder)
Posts: 0
New Member
Topic starter
 

Boas,

Precisava de criar automaticamente fichas de cadastro com base em listagem.

Anexo um exemplo com 4 usuários que seriam criadas 4 fichas.

A ideia é que ao excecutar a macro, fossem criadas tantas fichas quantos usuários existirem na "listagem".

Alguem pode ajudar?

Obrigado.

 
Postado : 22/01/2018 4:28 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O ideal seria você ter criado o layout de como irá ficar estas fichas, você diz 4, mas pelos campos que informou são poucos dados, então supõe-se que terão linhas em branco, mas quantas ?
Se for somente para imprimir, aqui no forum tem alguns modelos de se criar etiquetas baseadas em uma lista e com determinada qde por folha, pesquise e veja se ajuda.

[]s

 
Postado : 22/01/2018 4:47 pm
(@klarc28)
Posts: 0
New Member
 

Arquivo anexo abaixo

 
Postado : 22/01/2018 4:49 pm
(@shroeder)
Posts: 0
New Member
Topic starter
 

Nem sei bem como me explicar melhor.

Na aba "Listagem" eu vou preencher com os dados de todos os meus clientes (podem ser 1 a 9999999).

A ideia seria que ao carregar "imprimir todos", fossem criadas todas as fichas de clientes com os dados da aba "Listagem".

Se eu tiver 100 Clientes e colocar 10 informações por cliente (nome, idade, etc), eu terei 100 linhas e 10 colunas. São estes dados que servirão para preencher a aba "Ficha".

Se não conseguir automatizar, terei de criar 100 fichas manualmente.

 
Postado : 22/01/2018 5:10 pm
(@klarc28)
Posts: 0
New Member
 

Teste o anexo postado abaixo

 
Postado : 22/01/2018 7:25 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Shroeder, é o seguinte, siga a dica que comentei, pelo que entendi qto a criar as fichas não é tão dificil, mas sem saber como é o tipo da ficha e que dados a mais irá utilizar fica dificil ajudar.
No inicio você disse :

Precisava de criar automaticamente fichas de cadastro com base em listagem.
Anexo um exemplo com 4 usuários que seriam criadas 4 fichas.
A ideia é que ao excecutar a macro, fossem criadas tantas fichas quantos usuários existirem na "listagem".

E no modelo que enviou temos 4 Nomes com 4 informações somente.
e agora diz :

Se eu tiver 100 Clientes e colocar 10 informações por cliente (nome, idade, etc),

Veja que temos informações desencontradas, ou são 4 informações por usuários ou são 10.
Procure montar o layout correto do que quer e detalhar com o máximo de informação possível.

[]s

 
Postado : 22/01/2018 8:26 pm
(@klarc28)
Posts: 0
New Member
 

Já postei o anexo. Funcionou perfeitamente. Dá para inserir mais pessoas (linhas) e mais informações (colunas), sem precisar alterar o código. Com a mesma formatação do arquivo de exemplo. Deu um trabalhinho.

 
Postado : 22/01/2018 8:33 pm
(@klarc28)
Posts: 0
New Member
 

Fiz outra versão, pulando uma linha a mais entre uma ficha e outra.

 
Postado : 22/01/2018 8:48 pm
(@klarc28)
Posts: 0
New Member
 

Fiz outra versão, sem pular linha dentro da ficha.

 
Postado : 22/01/2018 8:52 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

klarc28, a questão do meu questionamento é procurar compreender e facilitar a aplicação da automação, a rotina de copiar de uma lista e colocar em outra aba não é tão dificil, mas pela minha experiencia em foruns e em vba, procuro esmiuçar o máximo, assim não ficamos em suposições e com certeza ele irá voltar querendo saber quanto a impressão.
Nas postagens ele cita em criar as fichas para impressão e não para guarda-las, desta forma, precisa-se ter a informação se cada folha de A4 terá 4 fichas, e dependendo do layout destas fichas podemos economizar papel e colocarmos mais fichas ou ao contrário, termos muitas informações que acabará passando para outra folha, por isto é importante saber o layout das fichas e quais e quantas informações vão para estas fichas, e como citei, se a intenção for somente a impressão, não precisamos criar uma aba com varias informações, e sim somente o layout da ficha e mandar imprimir de acordo com a listagem.

[]s

 
Postado : 22/01/2018 9:00 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja klarc28, eu admiro todos aqueles que se dispoem a ajudar doando parte do seu tempo disponível, é louvável, mas perceba que o Shroeder disse em uma das postagens que "Nem sabe como explicar melhor", e você já criou 3 modelos, que pode ser que não seja o que ele tem em mente, por isso eu prefiro aguardar ele se manifestar e dar mais detalhes, assim não fico com suposições.

[]s

 
Postado : 22/01/2018 9:06 pm
(@shroeder)
Posts: 0
New Member
Topic starter
 

Obrigado pela ajuda.

Consegui encontrar um código que fazia quase o que eu precisava e adaptei.

Private Sub cmdImprimir_Click()
    
    Dim lng                     As Long
    Dim lngTotLinhas            As Long
    Dim mblnCancelaImpressao    As Boolean
    Dim x                       As Integer

    'Inicia o número da Linha Corrente
    Range("LCI").Value = Range("Nome").Row + 1
        
    'Posiciona-se na 1ª celula da Lista
    Range("$A$" & Range("LCI").Value).Select
    
    If Trim$(Range("$A$" & Range("LCI").Value)) <> "" Then
    
        mblnCancelaImpressao = False
        
        'Este if serve para resolver um problema q consiste em saber o numero de linhas q vao
        'ser imprimidas, já que se só ouver uma linha para imprimir não se pode usar a
        'funcionalidade feita na opção "else"
        If Trim$(Range("$A$" & (Range("LCI").Value + 1))) = "" Then
            lngTotLinhas = 1
        Else
            lngTotLinhas = Selection.End(xlDown).Row - (Range("LCI").Value - 1)
        End If
    
        x = MsgBox("Têm a certeza que deseja Imprimir as Declaração dos Empregados?" & vbNewLine & _
                     "(número aproximado de declarações a imprimir -> " & lngTotLinhas & ")", vbYesNo)
        If x = 6 Then
            FormCancImpressao.Show
            FormCancImpressao.blnParaImpressao = False
            For lng = 1 To lngTotLinhas
                    
                If mblnCancelaImpressao Then Exit For
                If Trim(Range("$A$" & Range("LCI").Value)) = "" Then Exit For
                    
                'Imprime a folha da Declaração
                Folha2.PrintOut
                    
                'Incrementa Linha Corrente
                Range("LCI").Value = Range("LCI").Value + 1
                
                DoEvents
                
                If FormCancImpressao.blnParaImpressao Then
                    x = MsgBox("Têm a certeza que deseja cancelar à Impressão!", vbYesNo)
                    If x = 6 Then
                        Exit For
                    Else
                        FormCancImpressao.blnParaImpressao = False
                    End If
                End If
                
            Next
            FormCancImpressao.Hide
        End If
    Else
      MsgBox ("Não existem dados para Imprimir!")
    End If
    Sheets("Listagem").Select

End Sub
 
Postado : 24/01/2018 10:36 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Shroeder, quando colocar códigos, favor colocar entre as TAGS

.

Se resolveu, favor setar como RESOLVIDO.

[]s

 
Postado : 25/01/2018 8:56 am