Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por fazerbem
Posts
#5268
Ola, venho novamente solicitar uma ajuda.

1- Tenho uma planilha Tabela Base.xLsm e dentro varias planilhas como "RESUMO" e outra "PRODUTOS" e "COMISSÕES".
2- Desejo criar varias planilhas conforme executar uma determinada Macro.

Tenho uma Tabela de Pedidos ( Tabela Base.xLsm ), ao qual serve para tirar o pedido das lojas e enviar a fábrica. A Planilha possui varias Abas . A Principal se chama "Resumo", tenho a de "Produtos" e tenho a de "Comissões".
Tenho uma Celula H10, ao qual nela coloco o nome da Loja e por esta pego todas as informacoes da loja. Entao tudo se baseia nesta Celula H10.

Existe uma Macro 1 ( Salvar /Enviar), que pega os valores bases de comissoes do "Resumo" e cola na Planilha "Comissões" uma linha debaixo da outra, conforme for tirando os pedidos. Grava parte da Planilha em xLs 9 1 ABA chamada "PEDIDO") e envia o pedido automaticamente para a Fabrica. Depois disto Limpa os campos digitados nas Planilhas Resumo e Produtos, e deixa a planilha pronta novamente para o proximo pedido a salvando como .xLsm.

Tenho uma outra Macro 2 ( Frete), que caso seja preciso fazer uma cotacao de frete, eu envio a fabrica somente parte desta planilha em .xLs e aguardo o valor do frete, para ai entao pegar este valor e colocar no pedido e entao rodar a Macro 1. Porem enquanto aguardo o valor, tenho que tirar outros pedidos que serao enviados conforme a Macro 1 ou cotados na Macro 2.

Eu gostaria que todas as vezes que for solicitado o frete, a Macro 2 (Frete), criasse uma Nova Aba com o Nome que estiver na Celula H10. Se eu solicitar 3x o frete vai ser criado por exemplo a Aba loja 1, depois a Loja 2 e depois a Loja 3 e assim sucessivamente. Porem essas abas criadas mas para frente serao apagadas dentro da Macro 1(Salvar/Enviar). Mais a frente explico.

Dentro dessas novas Abas criadas ( Loja 1, Loja 2 ....), colocarei algumas partes da planilha Resumo que serao copiadas seguindo-se a rotina abaixo, que certamente tera que ser adaptada.

Set Ws2 = Sheets("Loja 1 ou Loja 2") 'Referencia a guia Loja (1,2...) como Ws2
Set Dest = Ws2.Range("B3").Range("B52").End(xlUp).Offset(1, -1) 'Encontra a ultima linha da guia Loja ( 1,2 ...) (definida como Dest)

Ws1.Range("AB2:AH2").Copy 'Copia o intervalo AB2:AG2 da guia Resumo
Dest.PasteSpecial xlPasteValues 'Cola valores na guia Loja 1 ou Loja 2 .....
Application.CutCopyMode = False 'Desativaj o clipboard

Desta forma, vamos que eu tire um pedido que nao preciso cotar o Frete, entao vou e executo a Macro 1, ao qual é enviado o pedido em formato xLs a Fabrica apenas indo a Aba selecionada, pego as informacoes que quero do Resumo e as colo em Comissoes, depois limpado os campos digitados e deixando a planilha pronta para o proximo pedido e a salvando como xLsm.
Vamos que eu agora tenho outro pedido e tenho que cotar o frete, entao rodo a Macro 2 que ira preparar numa nova Aba com o nome H10 , esta Macro 2 envia a cotacao a fabrica como .xLs, apenas a Aba selecionada , depois disto apaga as areas digitadas em Resumo e Produtos, e salva toda a Planilha como "Tabela Base.xLsm", deixando-a pronta para o proximo pedido ou solicitacao de frete. Note que ao abri-la agora "Tabela Base.xLsm"existe a aba anteriormente criada "Loja 1 por exemplo" Se cotar novamente sera criada a Loja 2 .... . Se nao cotar tiro o pedido mas a loja 1 ainda fica a espera do valor de frete .

Dentro da Aba Loja 1... terá poucas areas de informacoes, a Celula valor de frete sera uma delas.

Quando eu tiver o valor de frete eu abro a Tabela Base, vou na Aba Loja 1 por exemplo, coloco o valor de frete. Quero que o Excel compreenda que o ciclo se fechou e neste momento crie na Aba Resumo um Botao em um ponto especifico, exemplo X15 e ao lado crie outra celula Y15 com o nome da Aba, neste caso a Loja 1. Entao ficaria o botao na X15 e na Y15 o nome da loja ( nome da Aba). se tiverem outros ciclos fechados que crie abaixo de X15 e Y15.. Para isso vou deixar 10 linhas reservadas para isso X15 a X25 e Y15 a Y25.

Se houver somente uma Aba entao X e Y 16 a 25 ficam em branco . se tiver duas abas de lojas entao X e Y 17 a 25 ficam em branco .

O proximo passo é pegar este Botao e selecionar , feito isto entra em acao outra MAcro 3 que sera responsavel em pegar as informacoes da aba ( Loja ) que ja possui o frete e transportar para as Celulas em Resumo, depois disto a Macro 3 apaga toda a ABA Loja 1, e depois desmarca o botao X15 e apaga Y15. Feito isto é como se eu tivesse tirando um pedido sem solicitacao de frete, dai entao posso usar normalmente a Macro 1.

OBS : Se tiverem outras Abas Loja 2, Loja 3 .... Elas ficam intactas esperando o valor de frete. Entao quando eu abrir novamente a Tabela Base, para um novo Pedido ou nova Cotacao ( neste caso seria gravada a Aba Loja 3 ( conforme o que estiver em H10 ) ).

Resumindo: Poderei tirar varios pedidos e fazer varias cotacoes de fretes que ficarao estes em Standy By, usando a mesma Tabela Base. Assim terei sempre uma Tabela Base atualizada as comissoes e esta mesma Tabela Base tera todas as Abas temporarias ( Loja 1, Loja 2....).

Note que em Resumo X e Y15 a X e Y25, toda vez que o ciclo for fechado o botao ficara desmarcado e Y em branco a espera do nome da proxima loja/Aba.

Espero que tenham entendido a minha necessidade.

Para isso caso possam me ajudar, eu colocaria aqui a minmha Tabela que ja esta pronta faltando somente adaptar a mesma as condicoes acima.

Grato

Andre Luiz
Você não está autorizado a ver ou baixar esse anexo.
Por fazerbem
Posts
#5311
Alexandre Vba e ParkeLess, falta somente esta agora para fechar aqui com chave de ouro.

Podem me ajudar ? Em quanto isso vou pesquisar mais nas aulas do Youtube.

Grato

Andre
Avatar do usuário
Por Parkeless
Posts Avatar
#5313
André,

Não ia falar nada, mas como pediu diretamente a meu usuário, senti que deveria me justificar.

Falo apenas por mim, ok?

Por outras postagens suas, principalmente no tópico em que interagimos antes, notei que você não entende nada de VBA. E não tem como você montar um projeto com essa complexidade sem ter o conhecimento, a não ser que alguém faça por você (me refiro à programação).
Não consigo mandar um código pra você adaptar, na verdade nem te explicar o que um faz, porque te falta lógica de programação...

Me desculpa cara, se for pra ajudar, ajudo com o maior prazer... mas fazer por você não dá né :| . Se quiser, recomendo com o maior prazer um livro ótimo de VBA para iniciantes (só chamar inbox), e, a partir daí, se tiver dúvida em algo específico, consigo te dar uma força.

Outra dica seria começar com algo menos complexo, algo que você sabia fazer ou tenha poucas dúvidas. Com o Excel dá pra fazer muitas coisas (mesmo) sem VBA, e muito provavelmente você conseguiria encontrar uma forma mais simples de resolver o seu problema. ;)
#5315
ParkeLess, grato por suas palavras, mas eu nao manjo mesmo de Vba, porem tudo que ja aprendi aqui consegui adaptar .

Veja no anexo que envio a Tabela que eu mesmo fiz, batendo cabeça mas fiz, porem chegou num quebra cabeças que joguei a toalha, se puder me dar uma dica de como fazer serei grato, se nao , jamias ficarei com recentimentos, pois vc me deu em outro post dicas muito uteis.

Segue o anexo e uma explicacao do que quero fazer , se é que da pra se fazer né. Se nao der , a minha tabela esta redondinha, apenas nap terei este recurso e vou ter que fazer o frete e o pedido em duas etapas.
Você não está autorizado a ver ou baixar esse anexo.
#5334
OLa Amigos !!!!!

Consegui fazer sozinho a primeira parte, lógico usando o gravador de macro e usando a lojica em erros e acertos, mas no final venci !

So preciso para terminar esta fase de uma ajuda de vcs.

Veja que o codigo ficou muito grande, mas ta ok, So preciso que a variavel

Sheets("Mv Meier").Select

" MV Meier "

seja pega por H10, caso contrário daqui pra frente vai dar erro !

Percebam que todos os Sheets abaixo tive que colocar "MV Meier" colocando-se o H10, vou poder fazer infinitas ABAS !

Vou acabar ficando bom tb em VBA .

Grato pela ajuda.

Andre





Sub InserirPlanilhaComNome()

Dim Ws1 As Worksheet
Dim nome
Set Ws1 = Sheets("RESUMO")

Application.ScreenUpdating = 0 'Deixa a macro mais rápida (Desliga a tela de atualização)


Sheets.Add ' inseri uma nova planilha
nome = Sheets("RESUMO").Range("H10")
ActiveSheet.Name = nome ' renomeia a planilha
Sheets("RESUMO").Select
Range("H22").Select



Sheets("MODELO FRETE").Select

Range("A1:R56").Select
Selection.Copy
Sheets("Mv Meier").Select
Rows("1:1").RowHeight = 14.25
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Rows("1:1").RowHeight = 11.25
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Sheets("RESUMO").Select
Range("H10:J10").Select

Selection.Copy

Sheets("MV Meier").Select

Range("C5").Select
'ActiveSheet.Paste

'cola na pasta largura criada (1)a largura coluna e (2)os dados
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False '(1)
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False '(2)

Application.CutCopyMode = False 'Desativaj o clipboard

Sheets("RESUMO").Select
Range("H14:J14").Select
Selection.Copy
Sheets("MV Meier").Select
Range("C7:E10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C7:E10").Select

Application.CutCopyMode = False 'Desativaj o clipboard


Sheets("RESUMO").Select
Range("H20:J25").Select
Selection.Copy
Sheets("MV Meier").Select
Range("C11:E16").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C11:E16").Select

Application.CutCopyMode = False 'Desativaj o clipboard

Sheets("MODELO FRETE").Select

Range("A1:R56").Select
Selection.Copy
Sheets("Mv Meier").Select
Rows("1:1").RowHeight = 14.25
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Rows("1:1").RowHeight = 11.25

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Sheets("RESUMO").Select

Range("N3:X4").Select
Selection.Copy
Sheets("Mv Meier").Select
Range("G5:Q6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("RESUMO").Select
Range("N5:T5").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("G7:M7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


Sheets("RESUMO").Select
Range("N6:P6").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("G8:I8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("RESUMO").Select
Range("Q6:T6").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("J8:M8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select
Range("N7:Q7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("G9:J9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select
Range("R7:T7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("K9:M9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select
Range("N8:P9").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("G10:I10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select
Range("Q8").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("J10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select
Range("R8:T8").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("K10:M10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select
Range("Q9:T9").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("J11:M11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select
Range("N12:P51").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("G14:I14").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select

Range("Q12:Q51").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("J14").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select

Range("R12:R51").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("K14").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select


Range("S12:T53").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("L14:M14").Select
Sheets("RESUMO").Select

Range("S12:T51").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("RESUMO").Select
Range("Q52:T53").Select
Sheets("Mv Meier").Select

Sheets("RESUMO").Select
Range("S52:T53").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select

Range("L54:M55").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("P9:Q23").Select
Application.CutCopyMode = False
Selection.Copy


Sheets("RESUMO").Select

Range("W7:X8").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("RESUMO").Select
Range("W9").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("P11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("P:P").ColumnWidth = 5.29
Columns("P:P").ColumnWidth = 4.29
Sheets("RESUMO").Select
Range("X9").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("Q11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("Q:Q").ColumnWidth = 10.57
Sheets("RESUMO").Select
Range("W10:X13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("P12:Q12").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select
Range("W14:X15").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("P16:Q17").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select
Range("W16:X17").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("P18:Q19").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select
Range("W18:X19").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("P20:Q21").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RESUMO").Select
Range("W20:X21").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mv Meier").Select
Range("P22:Q23").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("P22:Q23").Select
Selection.FormatConditions.Delete


Sheets("RESUMO").Select
Ws1.Range("H10,H20:H25").Value = "" 'Limpa as células

Application.ScreenUpdating = 1 'Deixa a macro mais rápida (Liga a tela de atualização)

End Sub
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord