separar dados usand...
 
Notifications
Clear all

separar dados usando if ou until

10 Posts
4 Usuários
0 Reactions
2,343 Visualizações
(@elosprod)
Posts: 0
New Member
Topic starter
 

Bom dia preciso de uma ajuda na planilha anexa, separar os dados da pasta xml estofado por clentes contidos na coluna D.

tenho já um código que peguei aqui em outros tópicos e consegui copiar algumas linhas mas quando a condição muda ele para de copiar.

preciso copiar todos os dados do cliente em cada pasta nominada. já tentei várias formas de condições e não consigo

seque a planilha para quem possa me ajudar.

Obrigado

 
Postado : 24/06/2016 9:53 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

elosprod,

Boa tarde!

Tá... copiar todos os dados dos clientes que estão na coluna D da pasta XML estofado para as outras abas... MAS... com que critério??? Como é que se sabe quem vai para onde?

 
Postado : 24/06/2016 11:00 am
(@mprudencio)
Posts: 0
New Member
 

Os nomes das colunas nao são iguais

Por exemplo nao encontrei a coluna Entrada alem de outras

.....

 
Postado : 24/06/2016 11:25 am
(@elosprod)
Posts: 0
New Member
Topic starter
 

Gente desculpe não me expressei bem, seguinte:

quando abro o formulario na aba xml estofado, e clico no botão buscar dados XML a listview carrega os dados contidos desta planilha que não foram precessados ainda, após vc chamar o botão ele coloca um "processado" na coluna 28, se tiver já processado não aparece nada na listview (até ai está certo).

Após aparecer os dados na listview, eu chamo o botão "exportar Planilha", aí que vem minha dúvida.

Na posição 4 da listview carrega o nome Emitente que refere-se a coluna D da guia XML estofado, PRECISO separar esses 3 emitentes que serão os mesmos todos os dias quando eu importar novos dados na guia xml estofados e separálos em guias diferentes, (que até já nominei ali) a formatação e outras coisas até consigo fazer , só não estou entendendo o do until

O problema é que não estou conseguindo raciocinar quanto ao critério no Do until ou if.

Vou quebrar a cabeça como tenho feito, mas se puderem ajudar agradeço

 
Postado : 24/06/2016 11:54 am
(@mprudencio)
Posts: 0
New Member
 

Disponibilize o arquivo pronto para realização do filtro.

Ou seja o arquivo que vc consegue criar

 
Postado : 24/06/2016 2:20 pm
(@elosprod)
Posts: 0
New Member
Topic starter
 

Este arquivo está completo faltando somente fazer a cópia dos dados.

Obrigado

 
Postado : 24/06/2016 2:34 pm
(@mprudencio)
Posts: 0
New Member
 

Essa é igual a outra

Faz assim marca na planilha solar qual a coluna deve copiar

 
Postado : 24/06/2016 3:17 pm
(@elosprod)
Posts: 0
New Member
Topic starter
 

Olha desculpe,

a "planilha solar" vai receber os dados das seguintes colunas da planilha "xlm estofado" (caso na coluna "D" contenha o nome SOLAR MOVEIS LTDA) as colunas que serã0 copiadas são: A (CHAVE), B(NOTA), D(EMITENTE), N(DESTINO), R(CIDADE) S(UF), AD(VOLUME), AE(PESO).

já consigo copiar esses dados na rotina que criei, só não consigo separar pelos emitentes, preciso que ao encontrar o nome do emitente na coluna D SOLAR, MACIEL, CONFORTT, copie os dados contidos nessas celulas da mesma linha mas em planilhas diferentes cada um com seu emitente.

a rotina que criei funciona até encontrar emitente diferente, depois para de copiar, preciso que só pare de copiar caso ache celula vazia abaixo na ultima.

 
Postado : 25/06/2016 6:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Segue sua rotina "Exportar" alterada, veja se vai de encontro ao que espera

Private Sub CommandButton2_Click()

Dim Cliente(2) As String
Cliente(0) = "Confortt"
Cliente(1) = "Maciel"
Cliente(2) = "Solar"
Sheets("xml estofado").Select
nreg = Sheets("xml estofado").Cells(Cells.Rows.Count, "D").End(xlUp).Row
 lin = 2
 For x = 0 To 2
 
    For lin = 2 To nreg
        If UCase(Sheets("xml estofado").Cells(lin, 4)) Like UCase("*" & Cliente(x) & "*") Then
            If Sheets("xml estofado").Cells(lin, 33) = "copiado" Then
            Else
                Sheets("xml estofado").Cells(lin, 2).Copy Destination:=Sheets("planilha " & Cliente(x)).Range("A1048576").End(xlUp).Offset(1, 0)
                Sheets("xml estofado").Cells(lin, 29).Copy Destination:=Sheets("Planilha " & Cliente(x)).Range("A1048576").End(xlUp).Offset(0, 3)
                Sheets("xml estofado").Cells(lin, 4).Copy Destination:=Sheets("Planilha " & Cliente(x)).Range("A1048576").End(xlUp).Offset(0, 4)
                Sheets("xml estofado").Cells(lin, 14).Copy Destination:=Sheets("Planilha " & Cliente(x)).Range("A1048576").End(xlUp).Offset(0, 5)
                Sheets("xml estofado").Cells(lin, 18).Copy Destination:=Sheets("Planilha " & Cliente(x)).Range("A1048576").End(xlUp).Offset(0, 6)
                Sheets("xml estofado").Cells(lin, 19).Copy Destination:=Sheets("Planilha " & Cliente(x)).Range("A1048576").End(xlUp).Offset(0, 7)
                Sheets("xml estofado").Cells(lin, 30).Copy Destination:=Sheets("Planilha " & Cliente(x)).Range("A1048576").End(xlUp).Offset(0, 8)
                Sheets("xml estofado").Cells(lin, 31).Copy Destination:=Sheets("Planilha " & Cliente(x)).Range("A1048576").End(xlUp).Offset(0, 9)
                Sheets("xml estofado").Cells(lin, 1).Copy Destination:=Sheets("Planilha " & Cliente(x)).Range("A1048576").End(xlUp).Offset(0, 10)
                Sheets("xml estofado").Cells(lin, 34).Value = Date
                Sheets("xml estofado").Cells(lin, 34).Copy Destination:=Sheets("Planilha " & Cliente(x)).Range("A1048576").End(xlUp).Offset(0, 1)
                Sheets("xml estofado").Cells(lin, 33) = "copiado"
            End If
        End If
        lin = lin + 1
    Next
Next
ListView1.ListItems.Clear
For x = 0 To 2
    Sheets("Planilha " & Cliente(x)).Select
    Columns("A:O").Select
    Selection.Style = "Normal 3"
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Columns("B:B").Select
    Selection.NumberFormat = "m/d/yyyy"
    Columns("C:C").Select
    Selection.NumberFormat = "m/d/yyyy"
    Columns("D:D").Select
    Selection.NumberFormat = "0.00"
    Columns("I:I").Select
    Selection.NumberFormat = "0.00"
    Selection.NumberFormat = "0.0"
    Selection.NumberFormat = "0"
    Columns("J:J").Select
    Selection.NumberFormat = "0.00"
    Selection.NumberFormat = "0.0"
    Selection.NumberFormat = "0"
    Range("A1:O1").Select
    Selection.Font.Bold = True
    Selection.Font.Size = 11
    Selection.Font.Size = 12
    Selection.Font.Size = 11
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With
    
    Dim Intervalo As Range
   
    Set Intervalo = Range("A2:O" & [A2:O5000].SpecialCells(xlCellTypeLastCell).Row)
    
    Intervalo.Select
    
    borda_ok_mesmo

    'Sheets("planilha Solar").Select
    Range("A1").Select
    Range("A1048576").End(xlUp).Offset(1, 0).Select
Next
    ActiveWorkbook.Save
    Unload Me
    
    End Sub
 
Postado : 25/06/2016 7:50 am
(@elosprod)
Posts: 0
New Member
Topic starter
 

MUITO OBRIGADO

É isso mesmo, galera vcs são muito bons!!!, posso fazer um agradecimento público na Minha página do facebook?

Estou iniciando nesse mundo VBA e pelas pesquisas percebi que aqui no forum só aprendo com os melhores.

vcs são demais!!!

obrigado

Prometo contribuir com o forum em breve (vou estudar mais ) e ajudar outras pessoas como eu que querem aprender

Grande abraço

 
Postado : 25/06/2016 9:32 am