Notifications
Clear all

pegar Codigos listView e jogar na planilha

9 Posts
2 Usuários
0 Reactions
1,372 Visualizações
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Bom dia, poderiam me passar um codigo assim:

Tenho uma listView com 5 colunas, porem somente a primeira coluna, ao qual é o codigo do produto me interessa.
Se na ListView tiverem por exemplo 5 produtos, quero que somente os 5 codigos de cada produto sejam lancados numa plan: "Baixar Estoque" , sendo o primeiro codigo da ListView ser lancado na Range A2, o segundo na Range A3, o tereceiro na Range A4 e assim sucessivamente.

Feito isso vou poder dar baixa de meu estoque atraves de uma macro que ja possuo abaixo.

Se tiver uma forma de se fazer direto a baixa da listView direto na Plan : Estoque, sem passar pela Plan Baixar Estoque, seria melhor ainda , por ser mais rapido o comando.

Desde ja agradeço

Sub Baixa()

    Application.ScreenUpdating = 0
'PRODUTOS a dar baixa estoque

 '  Pocisionar Produto no Ranking

Dim Produto As String ', VendaAba As String
Dim Cont1 As Long, xb As Integer
Dim WC1 As Worksheet, WR1 As Worksheet, WT1 As Worksheet

Application.ScreenUpdating = False
VendaAba = Range("B1").Value

Set WC1 = Worksheets("Estoque")
Set WR1 = Worksheets("Baixar Estoque")

Produto = WR1.Range("A1").Value

VOLTAR:
WC1.Activate
WC1.Range("B6").Activate
    
Do While ActiveCell <> ""
    If ActiveCell = Produto Then
        ActiveCell.Offset(0, 2).Activate
    Cont1 = ActiveCell
    Cont1 = Cont1 - WR1.Range("B" & xb).Value
    ActiveCell = Cont1
GoTo Pule
Else
    ActiveCell.Offset(1, 0).Activate
End If
Loop

Pule:
'Sheets(s).d


'---------------------------------------
    WR1.Activate
'Aqui faz uma verificacao se existem outros produtos

For xb = 2 To 40
If Range("A" & xb).Value <> "" And Range("C" & xb).Value = 0 Then
Produto = WR1.Range("A" & xb).Value
Range("C" & xb).Value = 1 'Aqui escrevo 1 para marcar que essa rotina foi comprida !
GoTo VOLTAR
End If
Next

Set WC = Nothing
Set WR = Nothing
Set WT = Nothing

Range("A2:C40") = ""
Sheets("Estoque").Activate

    Application.ScreenUpdating = 1

End Sub

 
Postado : 22/02/2017 8:08 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

fazerbem,

Bom dia!

Anexe seu exemplo aqui no fórum.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 22/02/2017 8:16 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

ola wang, ai que ta nao tenho um molde, essa que tenho possui informacoes que nao posso aqui postar, pois a planilha esta operante.

Basta ser algo simples, o formulario ter apenas ja 4 ou 5 itens aparecendo na listview e a plan de destino que e o estoque recebendo a baixa. Veja que a macro que enviei funciona, mas so nao estou conseguindo jogar da listview na plan temporaria

 
Postado : 22/02/2017 8:31 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Fiz assim e funcionou, mas esqueci que tem que pegar tb a coluna QNT da ListView e transportar tb

Na ListView a Coluna COD é a primeira ( 0 )
Na ListView a Coluna QNT é a 4 coluna ( 3 )
Sendo que minha listView e composta de 8 colunas, mas preciso somente dessas 2.

Bem parte do comando eu fiz, e agora como selecionar a coluna 4 ?

Private Sub CommandButton57_Click()

Dim i As Integer, j As Integer

Sheets("Baixar Estoque").Activate

'Loop as lignes
For i = 1 To ListView1.ListItems.Count
Cells(i + 1, 1) = ListView1.ListItems(i).Text

Next i

End Sub

 
Postado : 22/02/2017 8:50 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

fazerbem,

Se não pode postar a planilha real, poste uma planilha exemplo, todavia, com o layout real de como são seus dados de fato. Fica muito difícil ajudar sem ter uma exemplo que funcione.

Não estou nem conseguindo entender o que você realmente quer. Precisamos, para ajudar, ver o seu código funcionando (mesmo que seja num exemplo).

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 22/02/2017 8:58 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Sera que vc nao teria nenhum modelo que pudesse me servir, so quero pegar o comando mesmo.

Bastaria carregar uma listView bem simples apenas com 3 colunas COD, Produto e QNT , ja com os tres produtos sendo carregados no Initialize:

COD produto QNT
1 Produto a 3
2 Produto b 4
3 Produto c 6

com um botao de comando.

Ter uma plan de nome PLan1 e nessa plan1 ao precionar o botao de comando da listView , transferir apenas o COD e QNT de cada item e jogar na Plan 1 ,

Coluna A2 = Cod 1 - Coluna C2 = QNT ', produto nao precisa somente esses dois
Coluna A3 = Cod 2 ..........

Com isso ja poderei usar o comando abaixo , pois ja testei. Negocio so ta em jogar da list view pra plan1 ou outro nome qualquer

Sub Baixa()

Application.ScreenUpdating = 0
'PRODUTOS a dar baixa estoque

' Pocisionar Produto no Ranking

Dim Produto As String ', VendaAba As String
Dim Cont1 As Long, xb As Integer
Dim WC1 As Worksheet, WR1 As Worksheet, WT1 As Worksheet

Application.ScreenUpdating = False
VendaAba = Range("B1").Value

Set WC1 = Worksheets("Estoque")
Set WR1 = Worksheets("Baixar Estoque")

Produto = WR1.Range("A1").Value

VOLTAR:
WC1.Activate
WC1.Range("B6").Activate

Do While ActiveCell <> ""
If ActiveCell = Produto Then
ActiveCell.Offset(0, 2).Activate
Cont1 = ActiveCell
Cont1 = Cont1 - WR1.Range("B" & xb).Value
ActiveCell = Cont1
GoTo Pule
Else
ActiveCell.Offset(1, 0).Activate
End If
Loop

Pule:
'Sheets(s).d

'---------------------------------------
WR1.Activate
'Aqui faz uma verificacao se existem outros produtos

For xb = 2 To 40
If Range("A" & xb).Value <> "" And Range("C" & xb).Value = 0 Then
Produto = WR1.Range("A" & xb).Value
Range("C" & xb).Value = 1 'Aqui escrevo 1 para marcar que essa rotina foi comprida !
GoTo VOLTAR
End If
Next

Set WC = Nothing
Set WR = Nothing
Set WT = Nothing

Range("A2:C40") = ""
Sheets("Estoque").Activate

Application.ScreenUpdating = 1

End Sub

 
Postado : 22/02/2017 10:06 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

segue modelo bem basico

 
Postado : 22/02/2017 1:12 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

revisado

 
Postado : 22/02/2017 1:14 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Consegui resolver meu problema por aqui mesmo, bati a cabeca ate resolver, e consegui.

segue o codigo

'Transfere COD e QNT da ListView para a Planilha Baixar Estoque
Private Sub CommandButton57_Click()


'Sheets(f).f

 Dim i As Integer, j As Integer
    
   Sheets("Baixar Estoque").Activate

    'Loop as lignes
    For i = 1 To ListView1.ListItems.Count
        Cells(i + 1, 1) = ListView1.ListItems(i).Text
        
        'Loop as colunas
        For j = 1 To ListView1.ColumnHeaders.Count - 1
            Cells(i + 1, j + 1) = ListView1.ListItems(i).ListSubItems(3) '(j).Text
            GoTo A
            
        Next j
        
A:
    Next i

End Sub
 
Postado : 22/02/2017 1:45 pm