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
#63461
Olá,
Gostaria da ajuda de vocês com a seguinte situação.

É possível criar uma macro que utilize o nome do fornecedor na coluna "B" para criar uma nova guia, movendo para lá todas as informações deste fornecedor?

Exemplo, Fornecedor Matrix. Criar uma guia com o nome Matrix e copiar as informações para esta nova guia com tudo que for do fornecedor Matrix, incluindo o cabeçalho (material, fornecedor e valor), sem alterar a ordem.

Grato se puderem ajudar.
Anexo exemplo com os dados.
Você não está autorizado a ver ou baixar esse anexo.
#63463
#
Experimente:
Código: Selecionar todos
Sub InserePlanilhas()
 Dim k As Long, x As Long, ws As Worksheet
  Set ws = ActiveSheet
  For k = 2 To ws.Cells(Rows.Count, 1).End(3).Row
   With ws
    x = Application.CountIf(.[B:B], .Cells(k, 2))
    Sheets.Add.Name = .Cells(k, 2)
    .[A1:C1].Copy [A1]
    .Cells(k, 1).Resize(x, 3).Copy [A2]
    Columns("A:C").AutoFit
    k = k + x - 1
   End With
  Next k
End Sub
JCabral agradeceu por isso
#63479
#
Salve, Jorge.
Código: Selecionar todos
Sub InserePlanilhasV2()
 Dim k As Long, x As Long, ws As Worksheet
  Application.ScreenUpdating = False
  Set ws = ActiveSheet
  With ws
   For k = 2 To .Cells(Rows.Count, 1).End(3).Row
    x = Application.CountIf(.[B:B], .Cells(k, 2))
    If Evaluate("IsError('" & .Cells(k, 2).Value & "'!A1)") = True Then
     Sheets.Add.Name = .Cells(k, 2)
     .[A1:C1].Copy [A1]
    End If
    .Cells(k, 1).Resize(x, 3).Copy Sheets(.Cells(k, 2).Value).Cells(Rows.Count, 1).End(3)(2)
    Sheets(.Cells(k, 2).Value).Columns("A:C").AutoFit
    k = k + x - 1
   Next k
   '.Range("A2:C" & .Cells(Rows.Count, 1).End(3).Row) = ""
  End With
End Sub
JCabral agradeceu por isso
#63483
Sim, o código irá replicar o s dados existentes na Planilha1 e se aqueles dados não forem renovados então serão repetidos a cada vez que rodar a macro.

Nesses casos em que se utiliza uma planilha para a entrada de dados e uma macro para distribuir os dados pelas respectivas planilhas, é desejável apagar os dados ao final da macro, se não o fizer, a planilha de entrada irá acumular desnecessariamente dados que já estão nas demais planilhas.

Para apagar os dados replicados basta descomentar esta linha no código que passei ~~~> '.Range("A2:C" & .Cells(Rows.Count, 1).End(3).Row) = ""
JCabral agradeceu por isso
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