Ir ao conteúdo
  • Cadastre-se

isabela queiroz

Membro Pleno
  • Posts

    101
  • Cadastrado em

  • Última visita

Tudo que isabela queiroz postou

  1. @Basole Obrigada! eu fiz umas alterações que acabou funcionando no final das contas, muito grata! vou verificar esse codigo novo e caso de mais algum erro utilizo ele
  2. @Scofieldgyn @Basole Obrigada aos dois, estou fazendo uma junção dos dois códigos de vocês, mas o que não consegui entender/fazer é ocultar algumas planilhas mas mesmo assim ainda usar elas nas macros, teria como? fazer isso ou só da pra fazer depois que o codigo termina? seria os sheets "T_SAV" "Produtos" e "Preenchendo_dados" @Basole Modifiquei apenas o nome dos sheets e por algum motivo não ta mais copiando as informaçoes pra aba nova que foi criada, fica sem informação nenhuma e salva vazia Sub Salvar_Aba_Novo_Arquivo() Dim wb, wbnew As Workbook Dim ws As Worksheet Dim filename As String On Error GoTo tr_ErRo0: Excel.Application.ScreenUpdating = False Set wb = ThisWorkbook 'ActiveWorkbook ' PastadeTrabalho ativa Set ws = wb.Sheets("T_SAV") 'Nome da planilha que está copiando filename = "CPallet_" & VBA.Replace(VBA.Replace(VBA.Now, "/", "-"), ":", "-") 'add Nova PastaTrabalho Set wbnew = Workbooks.Add wb.Activate 'copia a planilha para uma nova pasta de trabalho wb.Sheets("T_SAV").Copy Before:=wbnew.Sheets(1) Application.DisplayAlerts = False wb.Save ' salva o arquivo ativo 'salva o novo arq. criado na pasta Temp wbnew.SaveAs VBA.Environ("Temp") & Application.PathSeparator & filename, Excel.xlCSV wbnew.Close Application.DisplayAlerts = True InputBox "O Novo Arquivo " & VBA.Environ("Temp") & Application.PathSeparator & filename & ".csv" & _ " Foi Criado com Sucesso !!!", " Sucesso ! Copie o nome Arquivo! ", filename & ".csv" tr_ErRo0: Excel.Application.ScreenUpdating = True End Sub
  3. Precisa saber alguns comando do VBA para as seguintes ações: A sheet para carga pode sair em outro arquivo excel e ser salvo na pasta "temp" do usuário O nome poderia ser CPallet_"Data/hora do sistema".csv Como ocultar sheets e a macro ainda sim funcionar, ou se não tiver como só ocultar elas no final do comandocolocar um aviso quando finalizar o processo e uma caixa ou label onde o usuário possa copiar o nome do arquivo Um botão para limpar as informações
  4. @AfonsoMira E como eu continuaria o codigo pra selecionar as duas colunas que foram encontradas? preciso que elas e todas as celulas preenchidas da coluna sejam copiadas e coladas em outra planilha.
  5. tem como utilizar a opção FIND pra localizar colunas? as vezes recebo tabelas com 5 colunas mas entre elas só preciso achar aque tem o nome de "cliente" e outra de "numero" e algumas outras vezes tem umas 10 colunas e preciso encontrar essas mesmas informaçoes no meio de todas outras colunas, e pode mudar de posição dependendo do template, como faço pro FIND encontrar por nome e não por numero. Via vba no caso
  6. @AfonsoMira consegui aqui, muito obrigada! fiz assim 'Declara Variaveis de Livro e Folha Dim wb As Workbook: Set wb = ThisWorkbook Dim ws As Worksheet: Set ws = wb.Sheets("Produtos") Dim auxiliar() As String 'Declara Variavel ultima Linha Dim ultLinha As Long ultLinha = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 'Desde a linha 2 até a ultima For i = 2 To ultLinha valor = ws.Cells(i, 1) 'Se "-" existir então If InStr(valor, "-") Then 'Divide auxiliar = Split(valor, " - ") 'Remove espaços em branco 'valor = Trim(valor) 'Define o valor na célula If auxiliar(1) = "MALDIVES 6U" Then ws.Cells(i, 2) = auxiliar(1) & " " & Left(auxiliar(0), 3) '3 primeiras posições da esquerda Else ws.Cells(i, 2) = auxiliar(1) End If Else ws.Cells(i, 2).Value = valor End If Next i @OreiaG obrigada!
  7. Recentemente criei este tópico e foi resolvido parcialmente. Agora necessito que o item MALDIVES 6U 250 e 256 sejam copiados com seus 3 primeiros caracteres, deixando de ser "250G8 - MALDIVES 6U" para "MALDIVES 6U 250" com o código que foi feito no tópico acima funciona perfeitamente, fora essa minha necessidade de copiar itens que tenham o mesmo nome mas com o numero diferente. sempre vai ser assim, necessitando então que se tenha MALDIVES 6U copie os 3 primeiros caracteres.. pensei em fazer um if com condição de reconhecer que se for "250G8 - MALDIVES 6U" então copiar e colar "MALDIVES 6U 250" e caso não seja, vai ser o "256G8 - MALDIVES 6U" então copiaria e colaria o "MALDIVES 6U 256". mas não sei se isso seria possível. 'Declara Variaveis de Livro e Folha Dim wb As Workbook: Set wb = ThisWorkbook Dim ws As Worksheet: Set ws = wb.Sheets("Produtos") 'Declara Variavel ultima Linha Dim ultLinha As Long ultLinha = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 'Desde a linha 2 até a ultima For i = 2 To ultLinha valor = ws.Cells(i, 1) 'Se "-" existir então If InStr(valor, "-") Then 'Divide valor = Split(valor, "-")(1) 'Remove espaços em branco valor = Trim(valor) 'Define o valor na célula ws.Cells(i, 2) = valor Else ws.Cells(i, 2).Value = valor End If Next i teria que colocar no meio desse codigo, adicionar mais um if para caso ocorra alguma das situações e caso não apenas seguir copiando e colando em frente.
  8. @Scofieldgyn Obrigada pela ajuda dos pois! @AfonsoMira seu codigo funcionou perfeitamente aqui! muito obrigada!! Só notei uma coisa agora na verdade, o "MALDIVES 6U" existem dois um que é 250 e outro 256 tem como fazer um codigo que caso seja "maldives 6u" ele copiar os 3 primeiros numeros por exemplo o 250G8 - MALDIVES 6U fique MALDIVES 6U 250?
  9. @Scofieldgyn acho que consegui resolver esse erro, era só questão de fazer a macro identificar onde ficava o filtro. mas surgiu outro problema, pode me ajudar? esta nesse topico aqui
  10. Tenho essa tabela que a aba "Produto" recebe informações de outra planilha e então eu precisava que fosse criado a frente dessa coluna uma outra coluna chamada "Tamplate" como mostrado abaixo. porém essa coluna template precisava ser basicamente o CTRL C CTRL V da Produto mas quando a informação viesse com numeros e letras igual "Z4G4 - PIKE" fosse retirado todos os caracteres antes do "-" e assim colocado na coluna "template" e os que não tivem igual o "PETROF" apenas desse o CTRL C CTRL V. Acredito que isso possa ser feito pelo IF do vba, tenho um conhecimento básico de VBA e faço alguns códigos inclusive essecodigo que preciso vai ser inserido dentro de uma macro que funciona para outras 3 planilhas ja. ps. Existe uma planilha da qual recebe novos produtos sempre, então a coluna "produtos" precisa ser baseada em quantidade de linhas preenchidas porque pode ter mais informaçoes futuramente. E ela tem que ter o codigo de .RemoveDuplicates que ja esta inserido nela porque pode vir dois "Z4G4 - PIKE", por exemplo.
  11. tenho esse codigo aqui que funciona perfeitamente, fora a parte de copiar e colar sem fazer celulas duplicadas, não se se ta dando errado por eu estar mandando pegar do autofilter ou se ta dando errado por outro motivo: Sub Atualiza() '-------------------------AQUI SERIA A PARTE DO CODIGO QUE TA DANDO ERRADO----------------------------------- Sheets("Preenchendo_dados").Select Columns("C:C").Select ActiveSheet.Range("$A$1:$C$1048259").AutoFilter Field:=3 Selection.Copy Sheets("Produtos").Select Range("A1").Select ActiveSheet.Paste ActiveWindow.SmallScroll Down:=-12 ActiveSheet.Range("A1:C1000").RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes '---------s------------------------------------------ Dim Produto As Range Set Produto = ThisWorkbook.Sheets("Produtos").[A2] While Produto <> "" Call CopiaProduto(Produto, Produto(1, 2)) Set Produto = Produto(2) Wend End Sub Sub CopiaProduto(ByVal Produto As String, ByVal Template As String) Dim Area As Range Dim Busca As Range Set Area = ThisWorkbook.Sheets("Preenchendo_dados").[A1].CurrentRegion Call Area.AutoFilter(Field:=3, Criteria1:=Produto) Set Area = Area.Resize(Area.Rows.Count, 1) If Area.Offset(1).SpecialCells(xlCellTypeVisible).Count > 1 Then Set Busca = ThisWorkbook.Sheets("TEMPLATE_PESO_MEDIDA").[B:B].Find( _ What:=Template, LookIn:=xlValues, LookAt:=xlWhole) If Not Busca Is Nothing Then Set Area = Area.Resize( _ Area.Rows.Count - 1, 1).Offset(1, 3).SpecialCells(xlCellTypeVisible) Busca.Resize(1, 42).Copy Area.PasteSpecial xlPasteValues Application.CutCopyMode = False End If End If ActiveSheet.Range("$A$1:$C$349").AutoFilter Field:=3 End Sub Sub TabFinal() Columns("E:E").Select Selection.Delete Shift:=xlToLeft Columns("A:A").Select Selection.Copy Columns("D:D").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("D1").Select Application.CutCopyMode = False Selection.ClearContents Range("D2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets.Add After:=ActiveSheet ActiveSheet.Paste Columns("A:A").EntireColumn.AutoFit End Sub A ideia seria ficar assim mas ta ficando assim quando executo a macro
  12. esse foi o mais longe que eu cheguei Sub Atualiza() Dim Produto As Range Set Produto = ThisWorkbook.Sheets("Produtos").[A2] Sheets("Sheet1").Select Columns("C:C").Select ActiveSheet.Range("$A$1:$C$1048259").AutoFilter Field:=3 Selection.Copy Sheets("Produtos").Select Columns("A:A").Select ActiveSheet.Paste 'ActiveWindow.SmallScroll Down:=-12 ActiveSheet.Range("A1:C1000").RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes While Produto <> "" Call CopiaProduto(Produto, Produto(1, 2)) Set Produto = Produto(2) Wend End Sub Sub CopiaProduto(ByVal Produto As String, ByVal Template As String) Dim Area As Range Dim Busca As Range Set Area = ThisWorkbook.Sheets("Sheet1").[A1].CurrentRegion Call Area.AutoFilter(Field:=3, Criteria1:=Produto) Set Area = Area.Resize(Area.Rows.Count, 1) If Area.Offset(1).SpecialCells(xlCellTypeVisible).Count > 1 Then Set Busca = ThisWorkbook.Sheets("TEMPLATE_PESO_MEDIDA").[B:B].Find( _ What:=Template, LookIn:=xlValues, LookAt:=xlWhole) If Not Busca Is Nothing Then Set Area = Area.Resize( _ Area.Rows.Count - 1, 1).Offset(1, 3).SpecialCells(xlCellTypeVisible) Busca.Resize(1, 42).Copy Area.PasteSpecial xlPasteValues Application.CutCopyMode = False End If End If End Sub
  13. @Midori beleza! olha to tentando fazer a tabela de produtos ser copia da sheet1 pra depois ficar mais fácil caso apareça mais produtos em outros casos, que ai eu só precisaria fazer a parte do tamplete da tabela "produtos" como voce colocaria? tava colocando assim mas acho que vai da errado por ter que mudar o nome da tabela e na verdade no fim do codigo eu precisava que ficasse assim basicamente com o "SKU" de cada produto na frente onde ta ficando o nome eu queria que ficasse o sku
  14. @Midori ok, seu codigo funcionou agora aqui, mas ele não ta puxando os dados da planilha "template_peso_medida"
  15. @Midori se eu coloco só seu codigo da isso aqui tava fazendo algumas alterações no meu codigo e agora ta todo bagunçado, eu queria que o codigo começasse na planilha "sheet1" separando do lado uma tabela com todas as familiaas da coluna "G" tirando as copias no caso deixando somete as 10 familias, em seguida pegasse essas familias e colocasse em ordem igual voce fez na sua tabela com a coluna "B" do "tamplete" e em seguida fizesse a pesquisa nas planilhas, pegando da planilha sheet1 o nome "PIKE" por exemplo, pesquisando na planilha TAMPLETE_PESO_MEDIDA e em seguida colocando de volta na "sheet1" em frente a cada um, como tem o "maldives 6U" de exemplo. não consigo enviar a planilha por ser mais pesada do que pode aqui no clube. mas a planilha tamplete_peso_medida continua a mesma coisa só mudei de lugar a tabela do sheet1 e coloquei mais uma no canto
  16. @Midori consegui fazer parar de dar o erro mas eu to tentando fazer o codigo pegar da coluna "G" colar sem copia na coluna "A" pra depois ir para a planilha produtos e então fazer o seu codigo, porém não entendi ele muito bem. Sub Macro1() Columns("G:G").Select Selection.Copy Range("A1").Select ActiveSheet.Paste ActiveWindow.SmallScroll Down:=-12 ActiveSheet.Range("A1:C1000").RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes '--------------------------------------------------------------- 'Sub Atualiza() Dim Produto1 As Range Set Produto1 = ThisWorkbook.Sheets("Produtos").[A2] While Produto1 <> "" Call CopiaProduto(Produto1, Produto1(1, 2)) Set Produto1 = Produto1(2) Wend 'End Sub 'Sub CopiaProduto(ByVal Produto As String, ByVal Template As String) Dim Area As Range Dim Busca As Range Dim Produto As String 'teste Dim Template As String Set Area = ThisWorkbook.Sheets("Sheet1").[A1].CurrentRegion Call Area.AutoFilter(Field:=3, Criteria1:=Produto) Set Area = Area.Resize(Area.Rows.Count, 1) If Area.Offset(1).SpecialCells(xlCellTypeVisible).Count > 1 Then Set Busca = ThisWorkbook.Sheets("TEMPLATE_PESO_MEDIDA").[B:B].Find( _ What:=Template, LookIn:=xlValues, LookAt:=xlWhole) If Not Busca Is Nothing Then Set Area = Area.Resize( _ Area.Rows.Count - 1, 1).Offset(1, 3).SpecialCells(xlCellTypeVisible) Busca.Resize(1, 42).Copy Area.PasteSpecial xlPasteValues Application.CutCopyMode = False End If End If 'End Sub Sheets("Sheet1").Select ActiveSheet.Range("$A$1:$C$349").AutoFilter Field:=3, Criteria1:= _ "250G8 - MALDIVES 6U" Range("G1").Select With Worksheets("Sheet1").AutoFilter.Range ActiveCell.Value2 = Range("H" & .Offset(1, 0).SpecialCells(xlCellTypeVisible)(1).Row).Value2 End With 'Range("C4").Select ActiveCell.FormulaR1C1 = "250G8 - MALDIVES 6U" Sheets("TEMPLATE_PESO_MEDIDA").Select ActiveSheet.Range("$A$2:$AQ$48").AutoFilter Field:=2, Criteria1:= _ "MALDIVES 6U 250" 'procurando no tamplate a familia Range("D31:AQ31").Select 'copiando as info da familia Selection.Copy Sheets("Sheet1").Select Range("H4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'colando as info em sheet1 sem formatação Application.CutCopyMode = False '-----------------visualizando a primeira celula da coluna----------------------------- With Worksheets("Sheet1").AutoFilter.Range ActiveCell.Value2 = Range("H" & .Offset(1, 0).SpecialCells(xlCellTypeVisible)(1).Row).Value2 End With '------------copiando pro resto das celulas filtradas ---------------------------- Range(Selection, Selection.End(xlToRight)).Select 'seleciona ate a informação da linha Application.CutCopyMode = False 'copia a linha Selection.Copy Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.SpecialCells(xlCellTypeVisible).Select ActiveSheet.Paste End Sub
  17. então, eu fiz isso e ta dando erro 9 de subscript out of range e não to sabendo achar ele
  18. @Midori poderia me explicar melhor como funciona e como colocar a parte do seu codigo no meu?
  19. @Midori teria uma noção de como eu faria esse codigo? to tentando pensar em algo mas como tenho pouco conhecimento de vba to tendo que descobrir as coisas agora antes de pensar sobre se funciona ou não.
  20. então, to tentando achar uma forma de deixar isso mais simples, textbox me parece o caminnho mais fácil, tava pensando em fazer uma tabela ao lado que fosse preenchida com as informaçoes de quais as familias que vou precisar pesquisar dentro da planilha TAMPLATE_PESO_MEDIDA, pra ai depois fazer só um textbox que eu mesma digitaria familia por familia usando a tabela que falei em criar como base pra ficar mais rápido. não sei se é possível mas a tabela seria criada baseada no filtro de "family produto" da planilha "sheet1"
  21. tudo bem, vou resolver isso depois então, mas ainda é possível fazer um codigo que compreenda um loop? mesmo que fosse manualmente escrito qual a familia que é necessario. Sub Macro1() ' ' Macro1 Macro ' Sheets("Sheet1").Select ActiveSheet.Range("$A$1:$C$349").AutoFilter Field:=3, Criteria1:= _ "250G8 - MALDIVES 6U" Range("C4").Select With Worksheets("Sheet1").AutoFilter.Range ActiveCell.Value2 = Range("D" & .Offset(1, 0).SpecialCells(xlCellTypeVisible)(1).Row).Value2 End With 'Range("C4").Select ActiveCell.FormulaR1C1 = "250G8 - MALDIVES 6U" Sheets("TEMPLATE_PESO_MEDIDA").Select ActiveSheet.Range("$A$2:$AQ$48").AutoFilter Field:=2, Criteria1:= _ "MALDIVES 6U 250" 'procurando no tamplate a familia Range("D31:AQ31").Select 'copiando as info da familia Selection.Copy Sheets("Sheet1").Select Range("D4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'colando as info em sheet1 sem formatação Application.CutCopyMode = False '-----------------visualizando a primeira celula da coluna----------------------------- With Worksheets("Sheet1").AutoFilter.Range ActiveCell.Value2 = Range("D" & .Offset(1, 0).SpecialCells(xlCellTypeVisible)(1).Row).Value2 End With '------------copiando pro resto das celulas filtradas ---------------------------- Range(Selection, Selection.End(xlToRight)).Select 'seleciona ate a informação da linha Application.CutCopyMode = False 'copia a linha Selection.Copy Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.SpecialCells(xlCellTypeVisible).Select ActiveSheet.Paste end sub queria transformar isso num loop, mas toda vez que terminasse de preencher os dados de um, abrisse uma texbox pedindo pra inserir o nome da proxima familia pra encontrar e a textbox viesse de um botao.
  22. bom assim ta dando quase certo: Sub Macro1() ' ' Macro1 Macro ' ' Sheets("Sheet1").Select ActiveSheet.Range("$A$1:$C$349").AutoFilter Field:=3, Criteria1:= _ "250G8 - MALDIVES 6U" Range("C4").Select ActiveCell.FormulaR1C1 = "250G8 - MALDIVES 6U" Sheets("TEMPLATE_PESO_MEDIDA").Select ActiveSheet.Range("$A$2:$AQ$48").AutoFilter Field:=2, Criteria1:= _ "MALDIVES 6U 250" 'procurando no tamplate a familia Range("AD31:AQ31").Select 'copiando as info da familia Selection.Copy Sheets("Sheet1").Select Range("D4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'colando as info em sheet1 sem formatação Application.CutCopyMode = False '---------------------------------------------------------------------------- Range("D4").Select Range(Selection, Selection.End(xlToRight)).Select 'seleciona ate a informação da linha Application.CutCopyMode = False 'copia a linha Selection.Copy Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.SpecialCells(xlCellTypeVisible).Select ActiveSheet.Paste mas o problema agora é que não ta localizando a celula que esta as informações, ta copiando sempre da celula "AD4" , to pensando em fazer uma InputBox que la eu procuro o dado que necessito, mas ainda preciso que seja encontrado pelo FIND e que pegue qual celula certa ta esse dado e ai copiar as informaões na frente dele.
  23. @Midori então, eu fiz assim por enquanto ' Macro1 Macro ' ' Sheets("Sheet1").Select ActiveSheet.Range("$A$1:$C$349").AutoFilter Field:=3, Criteria1:= _ "250G8 - MALDIVES 6U" Range("C4").Select ActiveCell.FormulaR1C1 = "250G8 - MALDIVES 6U" Sheets("TEMPLATE_PESO_MEDIDA").Select ActiveSheet.Range("$A$2:$AQ$48").AutoFilter Field:=2, Criteria1:= _ "MALDIVES 6U 250" 'procurando no tamplate a familia Range("AD31:AQ31").Select 'copiando as info da familia Selection.Copy Sheets("Sheet1").Select Range("D4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'colando as info em sheet1 sem formatação Application.CutCopyMode = False '---------------------------------------------------------------------------- Range("D4").Select Range(Selection, Selection.End(xlToRight)).Select 'seleciona ate a informação da linha Application.CutCopyMode = False 'copia a linha Selection.Copy Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select 'seleciona ate a ultima informção da tabela Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'cola sem formatação End Sub to indo na base do ctrl c ctrl v só da informação que necessito da familia, o problema agora ta sendo que ta copiando pra tabela inteira, não somente as informaçoes que eu trouxe @Midori sobre o numero de colunas, acredito que tenham me solicitado assim porque as vezes as tabelas podem vir com mais colunas de informaçoes antes, não sei porque mudariam assim mas foi o que me solicitaram.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!