Notifications
Clear all

Somar Duas Colunas ListView

6 Posts
3 Usuários
0 Reactions
1,815 Visualizações
(@jcgmcs)
Posts: 0
New Member
Topic starter
 

Bom dia a todos..

Pessoal adaptando estes códigos conforme necessidades, estou com dificuldades pra fazer somar duas colunas ou mais dentro da ListView. Segue anexo o arquivo e dsd já agradeço a ajuda de vcs...

Meu Excel é 2003

Obrigado.

 
Postado : 27/12/2017 6:55 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Poderia dar mais detalhes, seu listview é carregado com duas colunas de valores quando inicia, mas quando filtra carrega somente uma.
Então o que exatamente quer somar ?

[]s

 
Postado : 27/12/2017 7:13 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

jcgmcs,

Bom dia!

Seria isso?

 
Postado : 27/12/2017 7:27 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Olhando melhor, estou supondo que quer carregar e somar os valores da coluna CUSTO, se for isto troque suas rotinas pelas as abaixo :

Private Sub UserForm_Initialize()

Me.ListView1.ListItems.Clear
    With ListView1
        .Gridlines = True
        .View = lvwReport
        .FullRowSelect = True
        .ColumnHeaders.Add Text:="Cód.", Width:=30, Alignment:=0
        .ColumnHeaders.Add Text:="Nome", Width:=120, Alignment:=2
        .ColumnHeaders.Add Text:="Data", Width:=50, Alignment:=0
        .ColumnHeaders.Add Text:="Total R$", Width:=80, Alignment:=2
        .ColumnHeaders.Add Text:="Custos R$", Width:=80, Alignment:=2
        
    End With

'****Carrega os dados na listView

ListView1.ListItems.Clear
Plan1.Select

Dim linha As Integer
Dim valor As Double
Dim ValorCustos As Double
Dim soma As Double
Dim somaCusto As Double
linha = 6  'Aqui - Carrega 5 Linhas abaixo

        Do Until Sheets("Plan1").Cells(linha, 3) = ""  'Aqui 2 coluna -  'Aqui 4
              
        Set li = ListView1.ListItems.Add(Text:=Plan1.Cells(linha, 2))  'Aqui 3 coluna -  'Aqui 4
            li.ListSubItems.Add Text:=Plan1.Cells(linha, 3)  'Aqui 3 coluna -  'Aqui 4 - Aqui 5
            li.ListSubItems.Add Text:=Plan1.Cells(linha, 4)  'Aqui -   'Aqui 2 coluna -  'Aqui 4 - Aqui 5
            li.ListSubItems.Add Text:=FormatNumber(Plan1.Cells(linha, 5), 2) 'Casa após vírgula (Nao alterado)  'Aqui 2 coluna -  'Aqui 4
            li.ListSubItems.Add Text:=FormatNumber(Plan1.Cells(linha, 6), 2) 'Aqui Coluna CUSTOS
            
            valor = Plan1.Cells(linha, 5)  'Aqui 2 coluna -  'Aqui 4
            soma = soma + valor
            
            ValorCustos = Plan1.Cells(linha, 6)  'Aqui Coluna CUSTOS
            somaCusto = somaCusto + ValorCustos
        
        linha = linha + 1
        Loop

lbl_registros = Me.ListView1.ListItems.Count & "  Registros Localizados"
Me.txt_Total = FormatNumber(soma, 2)
Me.txt_Custos = FormatNumber(somaCusto, 2) 'Total CUSTOS

End Sub
Private Sub TextBox1_Change()

' Condição... se não for selecionado as datas para pesquisa não vai executar o código
If Me.txt_data_inicial = "" Or Me.txt_data_final = "" Then

MsgBox ("Favor preencher a data inicial e final para a pesquisa")
Me.txt_data_inicial.SetFocus
Exit Sub

'se estiverem preenchidas as datas a pesquisa será feita
Else

    Dim linha As Integer
    Dim coluna As Integer
    Dim coluna_data As Integer
    Dim linhalistbox As Integer
    Dim valor_celula As String
    Dim valor_celula_data As Date
    Dim conta_registros As Integer
    Dim valor_pesq As String
    
Dim ValorCustos As Double
Dim somaCusto As Double

    Dim data_inicio As Date
    Dim data_fim As Date
        
    valor_pesq = TextBox1.Text
    data_inicio = Me.txt_data_inicial
    data_fim = Me.txt_data_final
    linhalistbox = 0
    conta_registros = 0
    linha = 6  'Aqui - Pesquisa por Nome após inserir data
    coluna = 3  'Aqui 2 -  'Aqui 4 - Aqui 5
    coluna_data = 4  'Aqui 2 -  'Aqui 4 - Aqui 5
     
    ListView1.ListItems.Clear
    
    Plan1.Select
     
    With Plan1
        While .Cells(linha, coluna).Value <> Empty
            valor_celula = .Cells(linha, coluna).Value 'recebe o valor da célula para fazer o teste
            valor_celula_data = .Cells(linha, coluna_data).Value 'recebe o valor da data para fazer o teste
            
            'Condição para satisfazer a busca tem que ser igual ao valor da texbox1 e estar entre o valor inicial e final das datas
            If UCase(Left(valor_celula, Len(valor_pesq))) = UCase(valor_pesq) _
            And valor_celula_data >= data_inicio _
            And valor_celula_data <= data_fim Then
                
                'adiciona itens a ListView
             
            Set li = ListView1.ListItems.Add(Text:=Plan1.Cells(linha, 2))  'Aqui 3 Cod. -  'Aqui 4
            li.ListSubItems.Add Text:=Plan1.Cells(linha, 3)  'Aqui 3 coluna -  'Aqui 4 - Aqui 5
            li.ListSubItems.Add Text:=Plan1.Cells(linha, 4)  'Aqui 2 coluna -  'Aqui 4 - Aqui 5
            li.ListSubItems.Add Text:=FormatNumber(Plan1.Cells(linha, 5), 2) 'Casa após vírgula (Nao alterado)  'Aqui 2 coluna -  'Aqui 4
            li.ListSubItems.Add Text:=FormatNumber(Plan1.Cells(linha, 6), 2) 'Aqui Coluna CUSTOS
            
            valor = Plan1.Cells(linha, 5)  'Aqui 2 coluna -  'Aqui 4
            soma = soma + valor
           
            ValorCustos = Plan1.Cells(linha, 6)  'Aqui Coluna CUSTOS
            somaCusto = somaCusto + ValorCustos
            
            End If
            linha = linha + 1
        Wend
    End With
    
     Me.lbl_registros = "Entre  " & data_inicio & "  e  " & data_fim & "  foram encontrados  " & Me.ListView1.ListItems.Count & "  registros."
     Me.txt_Total = FormatNumber(soma, 2)
Me.txt_Custos = FormatNumber(somaCusto, 2) 'Total CUSTOS
End If

End Sub

[]s

 
Postado : 27/12/2017 7:29 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Depois que vi que o Wagner já tinha postado.

[]s

 
Postado : 27/12/2017 7:33 am
(@jcgmcs)
Posts: 0
New Member
Topic starter
 

Ficou Perfeito Mauro e Wagner...!!
Muito obrigado à VCs e se não nos falarmos mais, um Feliz Ano Novo, muita saúde e sucesso pra VCs e à todos os amigos do Forum...
Abraçooo!!

 
Postado : 27/12/2017 9:33 am