Página 1 de 1

Macro avançada

Enviado: 18 Out 2019 às 08:04
por nmcaslb
Bom dia
Precisava de uma ajuda para a criação de uma macro. No ficheiro que segue em anexo queria retirar para outra folha de cálculo tudo o que na coluna B tiver os códigos 2, 8, 9, 10 e 11. As colunas que quero que passem para outra folha são, por esta ordem, Coluna A, Coluna C, Coluna B, Coluna G, Coluna H, Coluna I, Coluna J, Coluna AM, aqui fica uma coluna em branco, Coluna M, Coluna O e finalmente Coluna N. Quero que só passe a informação, quando na coluna K estiver algum valor, se estiver vazia essa linha não passa para a nova folha. Depois há dois sectores, no sector que vai do início até à linha 2998 os valores das colunas M e N têm que passar conforme estão, no sector entre as linhas 3003 e 3104 os valores das colunas M e N têm que passar a negativo. Todas as informações que passem para outra folha têm que ser como texto, ou seja as fórmulas devem ficar desativadas na passagem.
Se tiverem dúvidas digam-me que fazemos passo a passo.
Obrigado pela ajuda e cumprimentos
Nuno

Re: Macro avançada

Enviado: 18 Out 2019 às 12:16
por eduardogrigull
Veja se funcionou! Está meio difícil de entender, mas deve estar certo, ou praticamente... Coloquei um botao, e o resultado na outra planilha "Resultado"

Re: Macro avançada

Enviado: 21 Out 2019 às 11:58
por nmcaslb
Boa tarde
Antes de mais obrigado pela ajuda.
Acho que está tudo certo, queria pedir mais algumas alterações, quando for possível. Queria que na folha do resultado fosse ordenado pela coluna C e se possível com uma linha de intervalo entre os diferentes códigos. Depois queria que do código 2 só passasse para a folha do resultado o que estiver diferente de Portugal na coluna D da folha de origem. Em relação a esse código também há mais algumas colunas que gostaria que passassem para a folha de resultado, mas se calhar tratamos depois.
Muito obrigado e cumprimentos

Nuno

Re: Macro avançada

Enviado: 21 Out 2019 às 15:45
por eduardogrigull
Veja se resolveu o que voce pediu...

Macro avançada

Enviado: 22 Out 2019 às 07:05
por nmcaslb
Bom dia. Penso que há algo errado com esta nova macro, visto que quando ele passa a informação para a folha do resultado, ele fica com menos linhas do que tem a folha de origem. Também em relação à ordenação aqui dá um erro e não faz. Podes verificar por favor?
Queria pedir-te para em vez de colocares o resultado numa folha ao lado, se era possível abrir um livro novo.
Obrigado e cumprimentos
Nuno

Macro avançada

Enviado: 22 Out 2019 às 11:13
por eduardogrigull
O resultado está indo na folha ao lado, e obviamente tem menos linhas do que a folha de origem, pois segui os critérios que você pediu. A não ser que você se expressou mal.
Quanto ao erro ao ordenar, qual o erro?
Qual versão do Excel você usa?

Re: Macro avançada

Enviado: 23 Out 2019 às 12:56
por nmcaslb
Boa tarde
Mais uma vez obrigado pela ajuda.
Eu estive a verificar e realmente tens razão, em relação às linhas está tudo certo, mas aparecem valores negativos que deviam estar positivos, penso que a separação é que está no sítio errado. Segue uma outra folha com o resultado final e com a linha que dá erro na macro. Na tua folha do resultado eu pintei a vermelho o que realmente tem que ser negativo.
Depois queria que na parte relativa ao código 2 colocasses as seguintes colunas, por esta ordem da folha de origem: A, C, B, G, H, I, J, M, N, O, P, Q, V, AA, AB, AC, D.
Obrigado e cumprimentos
Nuno

Re: Macro avançada

Enviado: 23 Out 2019 às 14:53
por eduardogrigull
Testei aqui e parece ter funcionado. Os valores que você disse que estavam errados na verdade não estavam, eles atendiam ao critério que voce pediu desde o início. Ao reordenar está funcionando, a não ser que tenha alguma incompatibilidade de versão de Excel. Aliás, qual sua versão do Excel?

Macro avançada

Enviado: 24 Out 2019 às 06:04
por nmcaslb
A minha versão de excel é de 2010. Tu colocaste todas as colunas que te pedi mas para todos os códigos e eu só queria para o código 2. Os códigos 8, 9, 10 e 11 fica como estavam, ou seja com as colunas A, C, B, G, H, I, J, AM, Coluna em branco, M, O, N, se for possível. Para o código 2 não é necessária a coluna em branco.
Obrigado e desculpa pelo trabalho que estou a dar.
Nuno

Macro avançada

Enviado: 25 Out 2019 às 10:55
por Jimmy
Olá Nuno,

Acho que seria oportuno juntar tudo o que foi pedido, o que foi alterado, o que foi acrescentado posteriormente, etc, em um novo descritivo da sua necessidade. Seria bom passar o procedimento a limpo.

Poderia aproveitar e definir qual o critério para passar as colunas M e N para negativo. Quero dizer um critério que não se baseie no número da linha, porque essa informação pode mudar com facilidade ao inserir mais linhas acima. Esse critério poderia ser o conteúdo da coluna "I"? Por exemplo, o que estiver entre "TOTAL FACTURAÇÃO" e "TOTAL N/CRÉDITO"?

Jimmy San Juan

Macro avançada

Enviado: 25 Out 2019 às 13:12
por nmcaslb
Olá Jimmy
Então vou tentar explicar da melhor forma o que pretendo. No ficheiro inicial pretendo que passe para um ficheiro novo tudo o que esteja preenchido na coluna B com os códigos 2, 8, 9, 10 e 11, mas só as linhas que contenham informação na coluna K, as que estiverem em branco não são para passar. No código 2 (coluna B) pretendo que passe para o tal ficheiro novo as colunas A, C, B, G, H, I, J, M, N, O, P, Q, V, AA, AB, AC, D, por esta ordem, mas só as linhas que, na coluna D estiverem diferentes de PORTUGAL. Dos códigos 8, 9, 10 e 11 (coluna B) quero que passem as colunas A, C, B, G, H, I, J, AM, Coluna em branco, M, O, N também por esta ordem. Em relação aos valores positivos ou negativos, quero que tudo o que esteja acima do TOTAL FACTURAÇÃO passe a positivo (colunas M e N) e tudo o que esteja entre o TOTAL FACTURAÇÃO e TOTAL N/CRÉDITO passa a negativo para a nova folha (colunas M e N). Quando a informação estiver no novo ficheiro pretendo que seja ordenada pela coluna C (Coluna B da origem) e entre cada um dos códigos 2, 8, 9, 10 e 11 fique uma linha em branco.
Penso que está tudo, se mesmo assim houver alguma dúvida diz que eu esclareço.
Obrigado e cumprimentos
Nuno

Re: Macro avançada

Enviado: 25 Out 2019 às 14:00
por Jimmy
Nuno,

E aquela parte que tem que constar "Portugal". Acho que esqueceu dela.

Certifique-se de que essa sua última descrição contemple tudo, pois a proposta é que ela seja totalmente suficiente para rescrever a necessidade.

Jimmy San Juan

Macro avançada

Enviado: 28 Out 2019 às 11:32
por nmcaslb
Jimmy
Já editei o pedido, penso que agora está tudo.
Obrigado e cumprimentos
Nuno

Macro avançada

Enviado: 28 Out 2019 às 12:03
por Jimmy
Bom dia Nuno,

Teste a planilha anexa e veja se te atende

Notei que há 2 tipos de cópias de colunas: a do código 2, e a dos demais códigos. As colunas copiadas são em parte as mesmas, e em parte diferentes. Na planilha destino elas ficam assim:
Código: Selecionar todos
Código 2:   A    C    B    G    H    I    J    M    N    O    P    Q    V   AA   AB   AC    D
Demais  :   A    C    B    G    H    I    J   AM    -    M    O    N
Dá pra notar que os valores das colunas M, N, O, Q e AM não ficam sempre uns em baixo dos outros. Isso impede que se coloque cabeçalhos nas colunas.
Pensei que se fizermos um pequeno ajuste o cabeçalho já seria possível, poque todos os valores de M, por exemplo, estarão na mesma coluna, independente se o código é 2 ou outro.
Código: Selecionar todos
Código 2:   A    C    B    G    H    I    J    -    -    M    O    N    P    Q    V   AA   AB   AC    D
Demais  :   A    C    B    G    H    I    J   AM    -    M    O    N
Se essa nova planilha for usada para importação de dados em outro sistema, ai tanto os cabeçalhos quanto a mudança no leiaute das colunas é desnecessário.

Se esta mensagem colabora para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan

Macro avançada

Enviado: 28 Out 2019 às 13:42
por nmcaslb
Jimmy
Eu preciso dessa macro mas o resultado é para exportar para um ficheiro previamente construído, por isso não há necessidade de cabeçalhos.
Verifiquei o resultado e está tudo a funcionar corretamente, só faltou uma coisa. Sempre que na coluna K do ficheiro de origem estiver sem nada, essa linha não passa para a folha do resultado e neste momento está a passar, de resto está tudo impecável.
Quando estiver esse ponto vou tentar adaptar a macro ao meu ficheiro para ver se funciona tudo bem e digo-te.
Mais uma vez muito obrigado pela ajuda.
Cumprimentos
Nuno

Macro avançada

Enviado: 28 Out 2019 às 14:13
por Jimmy
Olá Nuno,

Sim, a variável CoK representa o conteúdo da coluna K.
A linha:
CoK = Pl1.Range("F" & Lin1).Value
de ser alterada para:
CoK = Pl1.Range("K" & Lin1).Value

Erro de digitação... Tem conhecimento de macro para fazer essa alteração?

Jimmy San Juan

Macro avançada

Enviado: 28 Out 2019 às 14:36
por nmcaslb
Jimmy
Já alterei a macro, já está a funcionar bem, vou tentar adaptar agora ao meu ficheiro, depois dou feedback.
Obrigado e um abraço
Nuno

Macro avançada

Enviado: 28 Out 2019 às 21:09
por Jimmy
Ok, se precisar de ajuda na adaptação, avise.

Jimmy San Juan

Macro avançada

Enviado: 29 Out 2019 às 09:23
por nmcaslb
Jimmy
Já adaptei a macro ao meu ficheiro e está a funcionar. Excelente mesmo, muito obrigado pela ajuda, grande abraço.
Nuno