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:  
silvajmp0

Transferência dados Plan1 para Plan2 e Plan3

Recommended Posts

Olá pessoal,

Sou iniciante em vba Excel, tenho um planilha que salva os dados Plan1 para Plan2 e Plan3, bom era para salvar, mas não esta dando certo e não sei aonde estou errando, mais explicações e melhor entendimento da minha necessidade em anexo.

silva_jmp :o

http://www.4shared.com/file/oyTYu8e1/MODELO_TESTE.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

testaí, Silva

Sub SalvarPedVenda()
Application.ScreenUpdating = False
Dim ws As Worksheet, LR, k, m, x, y, z, w As Long
Set ws = ThisWorkbook.Sheets("PedVenda")
k = Application.CountA(ws.Range("E20:E26"))
m = Application.WorksheetFunction.Count(ws.Range("E29:E31"))
x = (k * m) - 1
If ws.[E8] = "" Or ws.[C29] = "" Or k = 0 Then Exit Sub
With ThisWorkbook.Sheets("RelVenda")
LR = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Range(.Cells(LR, 1), .Cells(LR, 1).Offset(x)) = ws.[E8]
.Range(.Cells(LR, 2), .Cells(LR, 2).Offset(x)) = ws.[J8]
.Range(.Cells(LR, 3), .Cells(LR, 3).Offset(x)) = ws.[K8]
.Range(.Cells(LR, 4), .Cells(LR, 4).Offset(x)) = ws.[E12]
.Range(.Cells(LR, 12), .Cells(LR, 12).Offset(x)) = ws.[C29]
.Range(.Cells(LR, 13), .Cells(LR, 13).Offset(x)) = ws.[C33]
Do While y < k
ws.Range("E" & 20 + y & ":J" & 20 + y).Copy
.Cells(LR + m * y, 5).Resize(m).PasteSpecial Paste:=xlPasteValues
Do While z < m
ws.Range("E" & 29 + z).Copy
.Cells(LR + w + z, 14).PasteSpecial Paste:=xlPasteValues
.Cells(LR + w + z, 14).PasteSpecial Paste:=xlPasteValues
z = z + 1
Loop
z = 0
w = w + m
y = y + 1
Loop
ws.Range("E8,J8,K8,E12:H12,J32:K32,I29,I30,E20:J26").ClearContents
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
Sheets("PedVenda").Select
Range("E12").Select
End Sub

sugestão - as suas fórmulas em 'E29:E31'usam a função AGORA(), que retorna data e hora; talvez melhor utilizar HOJE() no lugar. No entanto, penso que o ideal seria que essas fórmulas buscassem a data em 'J8', pois, se o pedido não for salvo na mesma data em que for aberto provocará divergência nas datas de vencimento das parcelas, se isso for relevante, claro.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Osvaldo, obrigado por mandar pelo clubedohardware a duvida que coloquei no outro fórum e a sugestão, bom testei deu certo, mas observei que se eu manter o número dos itens, as quantidades e valor preço unitário no relatório, se eu for fazer um controle de estoque ou somar os pedidos vai dar resposta dos valores incorretos, e possível manter o número dos itens, quantidade e valor unitário na primeira linha de cada item do produto, no caso se houver para itens, e o resto continua igual...

    silva_jmp

    Editado por silvajmp0

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Iaê, Silva.

    Somente com a descrição acima fica difícil entender o que você quer. Melhor você postar o arquivo com explicações nas próprias planilhas envolvidas e com o resultado desejado.

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Aê, Silva.

    Desculpe pela demora.

    Teste esta fórmula em 'G29', arraste para baixo:

    =SE(D29="";"";SE(E(ÉNÚM(F29);F29>0;F29>=E29);"PAGAMENTO EFETUADO";SE(E(ÉNÚM(F29);F29>0;F29<E29);"PAGAMENTO PARCIAL";SE(D29>=HOJE();"DENTRO DO PRAZO";"PAGAMENTO ATRASADO"))))

    A outra parte que você pediu, transcrita abaixo... tá embaçado, o tico e teco não deram conta de entender o que você deseja... tente descrever por partes, acho que tá meio embolado...

    Na plan *PedVenda* gostaria de usar o próprio layout do pedido para efetuar consulta por pedido onde todas as células devem estar travadas menos as que vamos lançar os pagamentos por vencimento, acrescida na célula F29:F31 e I29:I30 que são para o desconto ou acrescimo do total e criar um botão *Alterar* para salvar as alterações somente das células F29:F31, I29:I30 lançando na plan *RelVenda* as alterações conforme as linhas dos pedido alterado e as linha da data do vencimento.

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Boa noite, Silva !

    Tentando contribuir..

    Gostaria também que você desse um olhada na formula na célula G29, na qual, já me atende, mas gostaria de acrescentar mais uma condição que quando a célula F29 for <> E29, "PAGAMENTO PARCIAL", pois tentei colocar mais deu excesso de argumento.

    A formula ficou muito longa, mais veja se atende ao seu pedido.

    Baixe --->> Click aquí.

    Dê retorno,

    Abraços,

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    A formula ficou muito longa, mais veja se atende ao seu pedido.

    sugestão - insira em F29:F31 um espaço, ou uma letra, ou um valor maior do que 645, veja se o resultado da sua fórmula está coerente...

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Bom dia, Osvaldo !

    1-) insira em F29:F31 um espaço, 2 -) ou uma letra
    .

    1- Formatei para contábil inserir o espaço não aconteceu nada.

    2 - Também não teve alteração nenhuma.

    Dê mais detalhe do q/ você/ encontrou de encoerente na formula, resaltando q/ fiz baseado na antiga formula q/ já existia na plan. Mais enfim estamos aqui para ajudar e ser ajudado.

    Abraços !

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Silva, das 4 pendências que você relacionou no último arquivo que postou seguem sugestões para resolver 3 delas. A última, se entendi corretamente, será um projeto grande, talvez você pudesse cogitar em fazer tudo isto em Access. Ou, se quer continuar com o Excel, separe o projeto em partes e vá colocando as partes aqui para obter ajuda.

    1. resultado das fórmulas - as fórmulas em 'E29:E31' estão retornando resultado correto. O problema está no 'Vr.Parc.'. Este valor, se tiver dízima, exibe valor menor do que é, formate com 4 ou 5 casas decimais para ver, então o 'Vr. Pago' será sempre menor.

    ex. 'Vr.Parc.' igual a 28,333333..., o 'Vr. Pago' será 28,33, então a fórmula retorna 'PAGAMENTO PARCIAL', porque o valor pago foi menor do que o valor a pagar.

    Essa situação realmente não foi prevista.

    Uma foma de resolver é arrendondar os valores em 'Vr.Parc.' Testaí:

    E29

    =SE($J$31="";"";SE($J$8="";"";SE($C$29=$AX$7;$J$31;SE($C$29=$AX$8;$J$31;SE($C$29=$AX$9;[COLOR="Red"]ARRED([/COLOR]$J$31/2[COLOR="Red"];2)[/COLOR];SE($C$29=$AX$10;[COLOR="Red"]ARRED([/COLOR]$J$31/3[COLOR="Red"];2)[/COLOR];""))))))

    E30

    =SE($J$31="";"";SE($J$8="";"";SE($C$29=$AX$9;[COLOR="Red"]ARRED([/COLOR]$J$31/2[COLOR="Red"];2)[/COLOR];SE($C$29=$AX$10;[COLOR="Red"]ARRED([/COLOR]$J$31/3[COLOR="Red"];2)[/COLOR];""))))

    E31 =SE($J$31="";"";SE($J$8="";"";SE($C$29=$AX$10;[COLOR="Red"]ARRED([/COLOR]$J$31/3[COLOR="Red"];2)[/COLOR];"")))

    2. data do vencimento - no Módulo1, macro 'SalvarPedVenda', alterei a linha abaixo; formate a coluna 'Q' para Data

    ws.Range("E" & 29 + z).Copy

    para esta

    ws.Range("D" & 29 + z).Copy

    3. repetição da 'Qte' e 'Preço Un.' - acrescentei no código para não repetir

    4. substitua o código que está no seu arquivo por este abaixo

    5. alterei também no código a linha que idenfifica a última célula preenchida, pois antes utilizava a coluna 'C' e você colocou fórmulas até 'C5000', que antes não havia; mudei para a coluna 'D'

    LR = .Cells(Rows.Count, 4).End(xlUp).Row + 1

    Sub SalvarPedVenda()
    Application.ScreenUpdating = False
    Dim ws As Worksheet, LR, [COLOR="Red"]LR1[/COLOR], k, m, x, y, z, w As Long
    Set ws = ThisWorkbook.Sheets("PedVenda")
    k = Application.CountA(ws.Range("E20:E26"))
    m = Application.WorksheetFunction.Count(ws.Range("E29:E31"))
    x = (k * m) - 1
    If ws.[E8] = "" Or ws.[C29] = "" Or k = 0 Then Exit Sub
    With ThisWorkbook.Sheets("RelVenda")
    LR = .Cells(Rows.Count, [COLOR="Red"]4[/COLOR]).End(xlUp).Row + 1
    .Range(.Cells(LR, 4), .Cells(LR, 4).Offset(x)) = ws.[E8] 'Registro
    .Range(.Cells(LR, 5), .Cells(LR, 5).Offset(x)) = ws.[J8] 'Data
    .Range(.Cells(LR, 6), .Cells(LR, 6).Offset(x)) = ws.[K8] 'Hora
    .Range(.Cells(LR, 7), .Cells(LR, 7).Offset(x)) = ws.[E12] 'Cliente
    .Range(.Cells(LR, 15), .Cells(LR, 15).Offset(x)) = ws.[C29] 'Condição de pagamento
    .Range(.Cells(LR, 16), .Cells(LR, 16).Offset(x)) = ws.[C33] 'Forma de pagamento
    Do While y < k
    ws.Range("E" & 20 + y & ":J" & 20 + y).Copy
    .Cells(LR + m * y, 8).Resize(m).PasteSpecial Paste:=xlPasteValues
    Do While z < m
    ws.Range("[COLOR="Red"]D[/COLOR]" & 29 + z).Copy
    .Cells(LR + w + z, 17).PasteSpecial Paste:=xlPasteValues
    .Cells(LR + w + z, 17).PasteSpecial Paste:=xlPasteValues
    z = z + 1
    Loop
    z = 0
    w = w + m
    y = y + 1
    Loop
    [COLOR="Red"]LR1 = .Cells(Rows.Count, 8).End(xlUp).Row
    For i = LR + 1 To LR1
    If .Cells(i, 8) = .Cells(i - 1, 8) Then
    .Range("K" & i, "M" & i).ClearContents
    End If
    Next i[/COLOR]
    End With
    ws.Range("C29,C33:G33,E8,J8,K8,E12:H12,J32:K32,I29,I30,E20:J26").ClearContents
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    Sheets("PedVenda").Select
    Range("E12").Select
    End Sub

    Iaê,Trafix.

    Primeiramente peço desculpas se o meu post pareceu agressivo. Não tive essa intenção. Como você já escreveu em outro post, trocando conhecimentos todos aprendemos.

    Quanto a sua fÓrmula:

    1. se for inserido um conteúdo não numérico (espaço, letras, texto) em 'Vr. Pago' a fórmula interpreta que foi registrado um pagamento e retorna 'PAGAMENTO PARCIAL'.

    Modestamente, entendo que a fórmula deveria ignorar o conteúdo inserido ao invés de considerá-lo como um pagamento. Só deveria considerar como pagamento um conteúdo numérico.

    2. se for inserido em 'valor pago' um valor maior do que 'Vr.Parc.' a fórmula retorna 'PAGAMENTO PARCIAL'. Entendo que deveria retornar 'PAGAMENTO EFETUADO'. Claro, é improvável que alguém vá pagar mais do que deve, então o valor pago nunca seria maior do que o valor devido...

    Mas, poderá haver encargos por atraso, por exemplo, e o valor a pagar ser maior do que o valor da pacela.

    3. se 'Vr. Pago' estiver vazio, portanto supõem-se que não foi efetuado o pagamento, e 'Dt. Venc.' (data de vencimento) for ultrapassada, a fórmula retorna vazio. Entendo que seria razoável retornar 'PAGAMENTO ATRASADO'. Pois a data de vencimento é passado e não foi pago.

    abraço

    PS - @Trafix, postei a mensagem para você bem depois de postar para o Silva, mas este fórum decidiu, sem me perguntar, e colocou os 2 posts juntos.

    Editado por osvaldomp

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Boa noite Osvaldo,

    Obrigado por estar me ajudando nesta planilha, bom, a alteração para não repetir os campos Qte e Vr. deu certo, mas esta duplicando os itens.

    Explicação no arquivo em anexo.

    :D silva_jmp

    http://www.4shared.com/file/s3Udw5Df/Controle_Venda_-_Compra_3.html

    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

    ×