Ir ao conteúdo
  • Cadastre-se

Breno Bargamasco

Membro Júnior
  • Posts

    10
  • Cadastrado em

  • Última visita

Reputação

0
  1. @DJunqueira Consegui o proposto das listas suspensas vinculadas, e está em anexo, caso queira entender o processo. Fiz com a utilização de tabelas e listas + um PROCV. Por favor, não consegui entender muito bem o PROC feito na planilha "REGRAS" que tu inseriu... Se puder, poderia fazer o mesmo buscando os clientes na "Plan4"? To quebrando cabeça a um tempo e não consigo entender de forma mais clara o que foi feito. Obrigado! example2.xlsx
  2. @DJunqueira não tenho acesso ao Access por aqui, então, a única saída seria mesmo o Excel.
  3. Saudações pessoal! Estou com dificuldades para conseguir formatar a planilha de acordo com as regras que estão anexadas a ela. Pesquisei por diversos sites, mas não consegui nenhum que resolvesse ou me ajudasse de uma forma mais precisa. Preciso criar listas suspensas com resultados vinculados a outras listas e condições para serem preenchidos em uma célula. Coloquei no anexo um exemplo simples com um cenário de dados. Agradeço muito a ajuda! example.xlsx
  4. Não sou muito bom no VBA, pois pratico a pouco tempo. Criei através do gravador uma macro, e fui adaptando com algumas coisas que li tanto aqui no site, quando no livro Vba and Macros for Microsoft Excel - Jelen, Bill; Syrstad, Tracy. Porém, creio que posso conseguir tornar mais rápida algumas funções executadas, mas creio que algumas funções podem ser resumidas para conseguir um melhor desempenho do código. Hoje, o mesmo leva em média, 1 minuto e meio pra executar, mesmo com um PC de alto desempenho, pois as planilhas possuem muitos dados. O que posso utilizar para deixar o arquivo mais limpo, e também, mais ágil? Segue: Option Explicit Sub Macro02__ArquivoBase() ' ' SEGUNDA ETAPA: transformação do TXT e aplicação de fórmulas ' ' With Application .ScreenUpdating = False .EnableEvents = False End With ' TRANSFORMAÇÃO DE FÓRMULAS EM VALORES ActiveCell.Columns("A:B").EntireColumn.Select ActiveSheet.Range("$A$1:$AG$1048576").AutoFilter Field:=2 ActiveSheet.Range("$A$1:$AG$1048576").AutoFilter Field:=3 Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Activate ' EXCLUSÃO DA COLUNA "A" ActiveCell.Columns("A:A").EntireColumn.Select Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft ActiveSheet.Range("$A$1:$AG$1048576").AutoFilter Field:=2, Criteria1:="5365" ActiveCell.Select ' COLAGEM DOS REGISTROS COLUNA "T" Selection.End(xlDown).Select ActiveCell.Offset(0, 19).Range("A1").Select ActiveCell.FormulaR1C1 = _ "=IF(RC[-6]<0,RC[-19]&-RC[-12]&-RC[-11]&RC[-6],RC[-19]&-RC[-12]&-RC[-11]&-RC[-6])" ActiveCell.Select Selection.Copy ActiveCell.Select Application.CutCopyMode = False Selection.Copy Range(Selection, Selection.End(xlUp)).Select ActiveSheet.Paste Application.CutCopyMode = False ActiveSheet.Range("A$1:$AG$1048576").AutoFilter Field:=2, Criteria1:=Array( _ "5360", "5365", "5370", "5375", "5380", "5385"), Operator:=xlFilterValues ' COLAGEM DOS REGISTROS COLUNAS "V" A "AG" Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(0, 21).Range("A1").Activate ActiveCell.FormulaR1C1 = "=RC[-20]" ActiveCell.Offset(0, 1).Range("A1").Activate ActiveCell.FormulaR1C1 = "=RC[-20]" ActiveCell.Offset(0, 1).Range("A1").Activate ActiveCell.FormulaR1C1 = "=RC[-16]" ActiveCell.Offset(0, 1).Range("A1").Activate ActiveCell.FormulaR1C1 = "=RC[-16]" ActiveCell.Offset(0, 1).Range("A1").Activate ActiveCell.FormulaR1C1 = "=RC[-14]" ActiveCell.Offset(0, 1).Range("A1").Activate ActiveCell.FormulaR1C1 = "=R[1]C[-25]" ActiveCell.Offset(0, 1).Range("A1").Activate ActiveCell.FormulaR1C1 = "=R[1]C[-25]" ActiveCell.Offset(0, 1).Range("A1").Activate ActiveCell.FormulaR1C1 = "=R[1]C[-25]" ActiveCell.Offset(0, 1).Range("A1").Activate ActiveCell.FormulaR1C1 = "=R[2]C[-28]" ActiveCell.Offset(0, 1).Range("A1").Activate ActiveCell.FormulaR1C1 = "=R[2]C[-28]" ActiveCell.Offset(0, 1).Range("A1").Activate ActiveCell.FormulaR1C1 = "=R[2]C[-28]" ActiveCell.Offset(0, 1).Range("A1").Activate ActiveCell.FormulaR1C1 = "=R[2]C[-28]" ActiveCell.Offset(0, -11).Range("A1:L1").Activate ActiveCell.Activate Selection.Copy Range(Selection, Selection.End(xlUp)).Select ActiveSheet.Paste ' FORMATAÇÃO DAS COLUNAS Range("C:C,H:H,W:W,X:X,AB:AB,AE:AE").Activate Selection.NumberFormat = "0.00" Selection.NumberFormat = "0.0" Selection.NumberFormat = "0" ' RENOMEAÇÃO DAS COLUNAS Range("T1").Activate ActiveCell.FormulaR1C1 = "Chave (material-NF-CFOP-quantidade)" Range("U1").Activate ActiveCell.FormulaR1C1 = "Validação" Range("V1").Activate ActiveCell.FormulaR1C1 = "Registro" Range("W1").Activate ActiveCell.FormulaR1C1 = "Meq_NumDoc" Range("X1").Activate ActiveCell.FormulaR1C1 = "NF" Range("Y1").Activate ActiveCell.FormulaR1C1 = "CFOP" Range("Z1").Activate ActiveCell.FormulaR1C1 = "TpMov" Range("AA1").Activate ActiveCell.FormulaR1C1 = "Reg Filho" Range("AB1").Activate ActiveCell.FormulaR1C1 = "EnqLegal/BC" Range("AC1").Activate ActiveCell.FormulaR1C1 = "BC" Range("AD1").Activate ActiveCell.FormulaR1C1 = "RegExport" Range("AE1").Activate ActiveCell.FormulaR1C1 = "DE/RE" Range("AF1").Activate ActiveCell.FormulaR1C1 = "CompExport" Range("AG1").Activate ActiveCell.FormulaR1C1 = "Valid Devoluções" ' FUNDO CINZA Range("T1,U1,V1,X1,AA1,AC1,AD1,AE1,AF1,AG1").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorDark1 .TintAndShade = -0.499984740745262 .PatternTintAndShade = 0 End With ' FUNDO AMARELO Range("W1,Y1,Z1,AB1").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With With Selection.Font .Color = -16776961 .TintAndShade = 0 End With ' JUSTIFICATIVA DAS COLUNAS Range("J:J,Q:S").Activate Selection.ColumnWidth = 1 Range("K:M,O:P").Activate Selection.ColumnWidth = 6 Columns("Z:Z").Activate Selection.ColumnWidth = 8 Range("A:B,D:D,F:G,I:I,V:V,Y:Y,AA:AA,AC:AC").Activate Selection.ColumnWidth = 10 Range("E:E,N:N,X:X,AD:AF").Activate Selection.ColumnWidth = 12 Range("H:H,AB:AB,AG:AG").Activate Selection.ColumnWidth = 15 Range("C:C,W:W").Activate Selection.ColumnWidth = 16 Columns("U:U").Activate Selection.ColumnWidth = 18 Columns("T:T").Activate Selection.ColumnWidth = 36 Range("A1").Activate ' ELIMINAÇÃO DAS FÓRMULAS ActiveSheet.Range("A$1:$AG$1048576").AutoFilter Field:=2 Columns("T:AG").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ' VALIDAÇÃO DE DUPLICIDADES DO NUMDOC Cells.Select Selection.AutoFilter Columns("A:AG").Select Selection.AutoFilter ActiveSheet.Range("$A$1:$AG$126011").AutoFilter Field:=2, Criteria1:="5365" Columns("W:W").Select Selection.Copy Sheets("Valid Dupli").Select Columns("A:A").Select ActiveSheet.Paste Columns("A:A").ColumnWidth = 14 Columns("B:B").ColumnWidth = 12 Application.CutCopyMode = False ActiveWorkbook.Worksheets("Valid Dupli").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Valid Dupli").Sort.SortFields.Add Key:=Range("A1") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Valid Dupli").Sort .SetRange Range("A2:A979157") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ' APLICAÇÃO DA FÓRMULA =A1=A2 Range("B2").Select ActiveCell.FormulaR1C1 = "=R[-1]C[-1]=RC[-1]" Range("B2").Select Selection.Copy ActiveCell.Offset(0, -1).Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(0, 1).Range("A1").Select Range(Selection, Selection.End(xlUp)).Select ActiveSheet.Paste Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWindow.ScrollRow = 1 Columns("A:B").Select Selection.AutoFilter Range("A1").Select With Application .ScreenUpdating = True .EnableEvents = True End With End Sub Obrigado!
  5. @Basole eu verifiquei essa possibilidade. Porém, tenho em média, 20 mil linhas que não são úteis, e isso num arquivo de 1,4 mil é ínfimo e nada favorável rsrs
  6. Muito obrigado @CasaDoHardware e @Basole . Vou verificar outras formas de tentar solucionar isso
  7. Não posso continuar a carregar em outra coluna pois leitura e interpretação dos dados ficam falhos. Na conversão, o TXT ocupa 40 colunas, e utilizo mais 20 para validações dos dados, que após, substituem os valores incorretos que estão dentro do TXT, gerando um novo arquivo. Continuar a carga de dados em outra coluna ou outra planilha vai me obrigar a pensar em um código VB totalmente novo, tendo de ser mais variável e assim, suscetível a erros.
  8. Não consigo abrir pelo Access porque a empresa não o possui, e as portas USB são bloqueadas, nem instalando num dispositivo externo conseguiria executar. A única alternativa é o Excel mesmo
  9. Possuo um arquivo TXT a ser carregado ao Excel 2010 que contem 1.466.402 registros, e outros maiores também. Normalmente trabalho com leitura e manipulação de planilhas com menos registros, com média de 500 mil, e as macros que criei conseguem executar tanto com 1, como o limite máximo de 1.048.576 de registros impostos numa pasta de trabalho. Há alguma forma de executar por macro uma planilha com volume superior a esta contagem de 1.048.576 de linhas? Como uma linha depende de outra, não posso quebra-la em dois arquivos, pois desta forma, estarei perdendo referências, tornando inválida a validação que as macros executam, portanto, a única opção seria uma forma de forçar o excel a ler esta TXT transformado em colunas com linhas infinitas, ou analisar pontos de quebra de linhas no meio do arquivo (uma opção muito difícil de ser executada devido a complexidade dos registros). Todos os arquivos são separados por "|" pipe. Desde já agradeço a ajuda.
  10. Estou com dificuldades para conseguir alinhar a macro a condição descrita acima. Segue a situação: Na célula "C1", possuo um valor X, que é copiado para a célula "B2", este por sua vez, copiado para a "A3", e novamente para a "B3". Preciso colar os valores deste comando em todas as células vazias abaixo dessas célulass preenchidas até que a macro pare na última casa da coluna C com dados inseridos. CONDIÇÃO Algumas células já possuem dados, e não podem ser substituídos pelos que já estão adicionados. Em anexo encontra-se um pequeno arquivo com exemplo Agradeço pela ajuda! example.xlsx

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...