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
  • Avatar do usuário
Avatar do usuário
Por Jimmy
Avatar
#46425
Ta me faltando entender como o arquivo de importação vai parar dentro da planilha, com aquele formato.

Na macro de importação notei que o delimitador é "#" e não "|", como seria necessário para poder importar o arquivo que você mandou.

Notei também que na planilha que temos trabalhado, os dados a serem concatenados e exportados, todos eles têm um "|" na frente do valor. Como esse caractere foi parar lá? Não vi esse tratamento na macro de importação.
Avatar do usuário
Por LEO2004
Posts Avatar
#46441
Ahh sim !!
para importar precisa abrir o txt..
aperta Ctrl + H e trocar "|" por "#|" e salvar o arquivo..
Faço isso para ele manter as tabulações delimitadas, pois se eu tirar os "|" na hora de exportar ele não vai retornar nos espaços em branco nas ultimas colunas.. Então ele precisa fazer isso..
Avatar do usuário
Por Jimmy
Avatar
#46450
LEO2004 escreveu:para importar precisa abrir o txt aperta Ctrl + H e trocar "|" por "#|" e salvar o arquivo..
Ok, então vou mudar a macro pra que isso não precise ser feito, e importar usando o # mesmo. Terá o mesmo efeito.
LEO2004 escreveu:Faço isso para ele manter as tabulações delimitadas, pois se eu tirar os "|" na hora de exportar ele não vai retornar nos espaços em branco nas ultimas colunas.. Então ele precisa fazer isso..
Quanto a exportação, a dúvida não era o "porque", e sim o como os "|" foram parar no início de cada célula da planilha?
Eu importei usando a sua macro de importação, e os valores vieram todos sem o "|".
Avatar do usuário
Por LEO2004
Posts Avatar
#46458
Bom dia Jimmy,

Sim, eu entendi..
Porem a importação do arquivo precisa vir com os "|"..
Pois cada espaço entre "|", no sistema de validação onde o arquivo vai ser enviado futuramente, representa um campo de preenchimento de informações..
Se eu importar sem esses "|" , nas ultimas colunas onde no txt ficam assim "| | | | ". Essas informações não vão para o excel ficando em branco .. Assim na hora de exportar o novo txt , ele ficará faltando campos e dará erro de leiaute no sistema validação do arquivo..
Avatar do usuário
Por Jimmy
Avatar
#46461
Leo,

A alteração que proponho não é eliminar o caractere delimitador de campos, pois isso iria misturar todos os campos.
A ideia na importação é utilizar o próprio "#" (aquele que você troca por "|") no lugar do "|".

Hoje o arquivo vem com
#aaa#bbb###ccc##ddd#####
e você troca por
|aaa|bbb|||ccc||ddd|||||

A ideia é a macro entender que quem separa os campos é o "#" e não o "|", e com isso você não precisa entrar no arquivo e trocar nada.

O funcionamento é o mesmo porque na importação qualquer caractere pode ser usado para delimitar, basta definir qual é ele.
Os campos em branco vão continuar a ser respeitados porque haverá ### (3 seguidos) mostrando na importação há 2 campos em branco. Isso é só pra te poupar trabalho de entrar no arquivo e alterar tudo. Eu testei aqui dessa forma, e o resultado foi o mesmo.

-------------

Agora um outro assunto:
Eu importei o arquivo TXT que você me mandou, usando a sua macro. OK!
Os campos entraram normalmente. OK!
As planilhas foram geradas normalmente, uma pra cada código (150, 100, atc.). OK!
Em cada planilha, lá estavam os valores e textos importados, separados em várias colunas. OK!
Nesses valores e textos, não havia o caractere "|" no início do conteúdo das céluas. Os valores estavam nas células, haviam também textos, etc, mas não havia o caractere "|" no início. OK!

Por outro lado, na planilha que você me mandou, já com os dados importados e prontos para serem exportados, há um caractere "|" no início de cada um dos valores e textos.
Eu sei que esse caractere é importante para a exportação. Minha dúvida não é o porque dele estar lá.
Minha dúvida é como é que ele foi parar lá, uma vez que a importação não o coloca lá.
Algo deve ser feito entre a importação e a exportação. Não sei se uma macro, ou se o operador da planilha o coloca.

Que procedimento é esse?
Avatar do usuário
Por LEO2004
Posts Avatar
#46474
Boa noite,

Bom como é que "|" foi para no inicio da célula? No inicio quando eu importava o arquivo sem mudar no txt, a planilha tirava todos "|".. Então isso era um problema na hora de gerar o txt novamente pois ele não memorizava onde estava os "|".
Então eu mudei o código para retirar "#".. e eu abria o TXT substituía todos "|" por "#|" .. Assim o código retirava lia o TXT e retirava somente "#" deixando somente os "|"..
foi isso que eu fazia

Quando alterava o TXT ficava assim #|C100#|000#|000#|000#|..
Avatar do usuário
Por Jimmy
Avatar
#46477
Certo Leo!! Agora antendi, demorou mas foi. kkkk

Quando você disse que trocava "#" por "#|" não percebi que tinha uma barrinha ali...

Vou te mandar outra versão da planilha, para que teste, e nela, não será necessário trocar nada. A importação virá sem a barra, mas na hora de exportar ela é colocada novamente. Essa barra tem sentido existir somente nos arquivos TXT. Na planilha não precisa. Fique tranquilo que vai funcionar bem.

Mais uma pergunta: entre a importação e a exportação você deve fazer alterações nos dados, correto?

Isso feito e testado, veremos a questão daquele "C".

Jimmy
Avatar do usuário
Por LEO2004
Posts Avatar
#46478
Olá Jimmy,
isso mesmo, entre a importação e exportação é feitas alterações nos dados..
Avatar do usuário
Por Jimmy
Avatar
#46480
Leo,

Segue a planilha.

Faça uma importação e depois a exportação pra testar.

Não precisa alterar "#" para "#|" no TXT de entrada.

Verá que as células importadas não tem mais o "|" no início, mas a exportação funciona normalmente.

Dê retorno.

Jimmy
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por LEO2004
Posts Avatar
#46482
Boa noite Jimmy,

A planilha importou e exportou e ficou, ótima..
Muito Obrigado!!
Só tenho mais um favor se eu não estiver abusando..
Na hora exportar os registros precisam seguir a ordem conforme consta o TXT antes da importação..
Note que se abrir o TXT antes da importação segue uma ordem:
C100
C170
C190
C100
C170
C190
E assim por adiante..
Por isso que eu estava tentando também fazer com que numero da nota que contem no C100 fosse para a ultima coluna do C170 e C190..
Acredito fazendo isso será mais fácil mapear os registros na hora de exportar para o txt..
Avatar do usuário
Por LEO2004
Posts Avatar
#46483
Estou lhe encaminhado uma imagem explicando melhor ..
Desde ja agradeço pela sua ajuda..
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por Jimmy
Avatar
#46485
Bom dia Leo,

Ainda não entendi bem essa parte.

Tem duas questões que estão relacionados mas ainda não entendi a relação. Uma é a ordem de exportação, e a outra o número da NF que vai de C100 para C170/C190.

Perguntas:

Os registros C170 e C190 devem ter um campo alterado, onde será jogado o número da NF do registro C100. Correto?

Perguntas:

Cada C170/C190 tem um C100 correspondete?

Todo C100 tem um C170 e um C190 correspondente?

Podem haver dois C100 para um C170 ou C190?

Podem haver mais de um C170 ou C190 para um mesmo C100?

Como estabelecer essa correspondência, como eu sei qual C100 se conecta com qual C170/C190?

Pela ordem no TXT de importação?

O C100 sempre vem primeiro que os seus C170/C190 correspondentes?

Se durante a importação, quando ler um registro C100 eu anotar o número da NF, e, posteriormente, quando ler um C170/C190 eu colocar o número anotado nesse registro, estará sendo respeitada a correspondência correta?

Vamos esclarecer isso, e depois vamos em frente.

Jimmy San Juan
Avatar do usuário
Por LEO2004
Posts Avatar
#46488
Bom dia Leo,

Ainda não entendi bem essa parte.

Tem duas questões que estão relacionados mas ainda não entendi a relação. Uma é a ordem de exportação, e a outra o número da NF que vai de C100 para C170/C190.

Perguntas:

Os registros C170 e C190 devem ter um campo alterado, onde será jogado o número da NF do registro C100. Correto?

Perguntas:

Cada C170/C190 tem um C100 correspondete? Sim, cada C100 tem um C170 e C190 e, mas pode acontecer de ter um C100 sem um C170..

Todo C100 tem um C170 e um C190 correspondente?Sim, exatamente, cada C100 tem um C170 e C190, mas pode acontecer de ter um C100 sem um C170.. ( A mesma ideia da primeira pergunta, pois funciona da mesma forma).


Podem haver dois C100 para um C170 ou C190? Não

Podem haver mais de um C170 ou C190 para um mesmo C100? sim..

Como estabelecer essa correspondência, como eu sei qual C100 se conecta com qual C170/C190? Levando o numero da NF para a ultima coluna dos registros C170, C190 ..

Pela ordem no TXT de importação? isso perfeito..

O C100 sempre vem primeiro que os seus C170/C190 correspondentes? sempre...

Se durante a importação, quando ler um registro C100 eu anotar o número da NF, e, posteriormente, quando ler um C170/C190 eu colocar o número anotado nesse registro, estará sendo respeitada a correspondência correta? Sim, perfeitamente..

Detalhe , muito importante : Quando o arquivo for exportado as colunas dos "C" onde foram inseridas as informações dos numeros das NF, não podem ir para o TXT..

Desde já agradecendo Novamente pela sua ajuda..
Avatar do usuário
Por LEO2004
Posts Avatar
#46489
Bom dia Jimmy

Respondendo..

Perguntas:

Os registros C170 e C190 devem ter um campo alterado, onde será jogado o número da NF do registro C100. Correto?

Perguntas:

Cada C170/C190 tem um C100 correspondete? Sim, cada C100 tem um C170 e C190 e, mas pode acontecer de ter um C100 sem um C170..

Todo C100 tem um C170 e um C190 correspondente?Sim, exatamente, cada C100 tem um C170 e C190, mas pode acontecer de ter um C100 sem um C170.. ( A mesma ideia da primeira pergunta, pois funciona da mesma forma).


Podem haver dois C100 para um C170 ou C190? Não

Podem haver mais de um C170 ou C190 para um mesmo C100? sim..

Como estabelecer essa correspondência, como eu sei qual C100 se conecta com qual C170/C190? Levando o numero da NF para a ultima coluna dos registros C170, C190 ..

Pela ordem no TXT de importação? isso perfeito..

O C100 sempre vem primeiro que os seus C170/C190 correspondentes? sempre...

Se durante a importação, quando ler um registro C100 eu anotar o número da NF, e, posteriormente, quando ler um C170/C190 eu colocar o número anotado nesse registro, estará sendo respeitada a correspondência correta? Sim, perfeitamente..

Detalhe , muito importante : Quando o arquivo for exportado as colunas dos "C" onde foram inseridas as informações dos numeros das NF, não podem ir para o TXT..

Desde já agradecendo Novamente pela sua ajuda..
Avatar do usuário
Por Jimmy
Avatar
#46491
Leo,

Alterei a macro e falta testar. Coloquei o número da NF apenas nas planilhas C170 e C190, mas fiquei na dúvida se era em todas as planilhas que iniciam com "C".

Se a macro estiver ok, partimos para o seguinte:
Mas eu na hora de projetar a consolidação eu não fiz mapeamento de hierarquia.. ou seja nos registros c100 depois c170 depois c190 depois c191..
Se voce abrir o txt voce vai ver que segue uma ordem C100 depois vem o C170 depois C190 e assim por diante.. ele deve seguir essa sequencia de informações..
Explique melhor isso. As planilhas vão sendo criadas na importação, na ordem em que vão aparecendo no TXT de entrada. Você precisa que as planilhas, após a importação, sejam colocadas em ordem alfabética, para que na exportação os registros fiquem na ordem? É isso?

Jimmy San Juan
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por LEO2004
Posts Avatar
#46494
Ola Jimmy,
ficou otimo.. sim precisa que todas as planilhas que começam "C"..

[*]Explique melhor isso. As planilhas vão sendo criadas na importação, na ordem em que vão aparecendo no TXT de entrada. Você precisa que as planilhas, após a importação, sejam colocadas em ordem alfabética, para que na exportação os registros fiquem na ordem? É isso? Então, sim se notar cada C170 e C190 C114 etc.. seguem uma ordem.. Então na exportação deve manter a sequencia como estava antes da importação...

Se olhar um registro C170 importado na planilha agora ele vai estar com o numero da NF que foi pego registro C100, entao esse C170 deve ficar de baixo do C100, a mesma coisa funciona com C190, C 140 C141 e assim por diante ate ir para o proximo C100 ..
Avatar do usuário
Por Jimmy
Avatar
#46495
Ok, NF em todas as que iniciam com "C". Feito.

Essa ordem de saída que tem que ser igual à de entrada complica um pouco, mas vamos tentar contornar.

Para tentar contornar, me diga um pouco qual tipo, ou quais tipos de alterações você faz nos dados entre a importação e a exportação.

Jimmy San Juan
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por LEO2004
Posts Avatar
#46498
Olá..
Os tipos de alterações variam entre editar os dados do C170 e C190; excluir registros C170 e C190; Incluir registros C170 e C190;

Basicamente é isso..
Avatar do usuário
Por Jimmy
Avatar
#46501
Leo,

Vou te fazer uma proposta de um novo leiaute da planilha. A planilha anexa mostra esse leiaute.

Os dados ficam todos na planilha TXT ORIGINAL, e não haveriam mais diversas planilhas, uma para cada código.
Você trabalha nessa única planilha, selecionando qual código irá trabalhar, através dos filtros nas células da linha 4.
Essa forma tem uma vantagem sobre a forma anterior (a de várias planilhas) pois permite que você selecione mais de um código para ver conjuntamente. Pode, por exemplo, selecionar C100, C190 e C170 apenas.

Pra ajudar a visualizar quando seleciona mais de um código, formatei esses 3 do exemplo acima, de cores diferentes.

A colua A ficou para o número da linha. Caso você resolva classificar uma das colunas (o filtro permite isso), e perder a ordem de entrada, basta classificar novamente pela coluna da linha (A). Dessa forma, a ordem dos registros de entrada é mantida na exportação, enquanto que pela forma anterior (várias planilhas) quando os registros são divididos em planilhas, a ordem se perde.

A Coluna B ficou para a nota fiscal. Agora é possível ver apenas os registros referentes a uma determinada NF.

Da coluna C para a frente são os campos do registro em si.

Você pode aplicar filtro em várias colunas, se quiser. Pode, por exemplo, ver os registros C100, C190 e C170 apenas de uma determinada NF. Para isso, escolha a NF no filtro da coluna B, e os registros no da coluna C.

O botão LIMPAR limpa os filtros aplicados e mostra tudo.

É possível criar botões para aplicar filtros predefinidos, como os que você usa com maior frequencia.

Teste e me diga o que achou. A macro de exportação não alterei porque não sei se aprovará essa mudança ou não.

Se não tiver familiaridade com filtros, me avise.

Se achar que assim ficou ruim de trabalhar, me avise que daremos um jeito pelo formato antigo mesmo. É possível!

Jimmy
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por LEO2004
Posts Avatar
#46508
Bom dia Jimmy,

Ficou muito boa a planilha, porém a planilha não será de uso somente meu, será de outras pessoas do meu setor..
Por isso que foi escolhido o formato registro separado por planilhas, onde outras pessoas que tem dificuldade com filtros e até mesmo em Excel possam utiliza-la..
Mas ficou muito bom o modelo que vc me encaminhou..

Mas tem como agente utilizar o modelo antigo?
E tem como fazer a exportação na ordem?

Desde já agradeço amigo ..
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