Notifications
Clear all

Busca de dados trás 1ª e 2ª ocorrencia

5 Posts
2 Usuários
0 Reactions
1,275 Visualizações
(@chook)
Posts: 197
Reputable Member
Topic starter
 

Boa noite gurus!

Então tenho uma situação que é a seguinte:

Faço uma checagem de lançamentos no sistema, e tenho que selecionar um código, o qual denominamos de grade (cmbxGrade). Ao seleciona-lo o sistema deverá trazer a primeira e a segunda ocorrencia lado a lado preenchendo os textbox.

Inicialmente pensei que se desse continuidade ao código o sistema entenderia que queria o próximo item abaixo daquele que foi encontrado, no entanto ele traz o mesmo resultado em ambos os lados.

Pergunta: Como é que faço para que o sistema carregue o lado esquerdo do resultado com o 1º item encontrado e o lado diteiro com o 2º item encontrado, em apenas 1 clique?

Private Sub cmbxGrade_Change()
Sheets("Contas_Pagar").Activate
Dim i, j, UltimaLinha As Integer
UltimaLinha = Sheets("Contas_Pagar").Cells(Cells.Rows.Count, 1).End(xlUp).Row
If UltimaLinha < 3 Then UltimaLinha = 3

With Worksheets("Contas_Pagar").Range("L:L")
    Set c = .Find(cmbxGrade.Value, LookIn:=xlValues, LookAt:=xlPart)
        If Not c Is Nothing Then
          c.Activate

            empresapapel.Value = c.Offset(0, -10).Value
            vencimentopapel.Value = c.Offset(0, -3).Value
            valorpapel.Value = c.Offset(0, -5).Value
            situacaopapel.Value = c.Offset(0, -1).Value
            gradepapel.Value = c.Offset(0, 0).Value
            emissaopapel.Value = c.Offset(0, -9).Value

    Set d = .Find(cmbxGrade.Value, LookIn:=xlValues, LookAt:=xlPart)
        If Not d Is Nothing Then
          d.Activate

            empresaimpresso.Value = c.Offset(0, -10).Value
            vencimentoimpresso.Value = c.Offset(0, -3).Value
            valorimpresso.Value = c.Offset(0, -5).Value
            situacaoimpresso.Value = c.Offset(0, -1).Value
            gradeimpresso.Value = c.Offset(0, 0).Value
            emissaoimpresso.Value = c.Offset(0, -9).Value

        End If

        End If
End With
End Sub

Forte abraço a todos!

 
Postado : 22/05/2012 3:49 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Eu acho melhor postar um modelo COMPACTADO, com a base de dados, por favor deixe apenas o que tem ligação direta com a dúvida na planilha.

Obrigado!!

 
Postado : 23/05/2012 5:03 am
(@chook)
Posts: 197
Reputable Member
Topic starter
 

Tem como a busca ser de baixo para cima? Isso resolve com certeza, por que só teremos duas ocorrências.

Set d = .Find(cmbxGrade.Value, LookIn:=xlValues, LookAt:=xlPart)
If Not d Is Nothing Then
'd.Activate

empresaimpresso.Value = c.Offset(0, -10).Value
vencimentoimpresso.Value = c.Offset(0, -3).Value
valorimpresso.Value = c.Offset(0, -5).Value
situacaoimpresso.Value = c.Offset(0, -1).Value
gradeimpresso.Value = c.Offset(0, 0).Value
emissaoimpresso.Value = c.Offset(0, -9).Value

 
Postado : 23/05/2012 8:12 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Lacerda experimente assim:

    Private Sub cmbxGrade_Change()
    Sheets("Contas_Pagar").Activate
    Dim i, j, UltimaLinha As Integer
    UltimaLinha = Sheets("Contas_Pagar").Cells(Cells.Rows.Count, 1).End(xlUp).Row
    If UltimaLinha < 3 Then UltimaLinha = 3

    With Worksheets("Contas_Pagar").Range("L:L")
        Set c = .Find(cmbxGrade.Value, LookIn:=xlValues, LookAt:=xlPart)
            If Not c Is Nothing Then
              c.Activate

                empresapapel.Value = c.Offset(0, -10).Value
                vencimentopapel.Value = c.Offset(0, -3).Value
                valorpapel.Value = c.Offset(0, -5).Value
                situacaopapel.Value = c.Offset(0, -1).Value
                gradepapel.Value = c.Offset(0, 0).Value
                emissaopapel.Value = c.Offset(0, -9).Value

        Set d = .FindNext(c)
            If Not d Is Nothing Then
              d.Activate

                empresaimpresso.Value = d.Offset(0, -10).Value
                vencimentoimpresso.Value = d.Offset(0, -3).Value
                valorimpresso.Value = d.Offset(0, -5).Value
                situacaoimpresso.Value = d.Offset(0, -1).Value
                gradeimpresso.Value = d.Offset(0, 0).Value
                emissaoimpresso.Value = d.Offset(0, -9).Value

            End If

            End If
    End With
    End Sub
 
Postado : 29/05/2012 9:56 am
(@chook)
Posts: 197
Reputable Member
Topic starter
 

Resolvidoooooooooo!!!!!!!!! Vc é feraaaa!!

 
Postado : 29/05/2012 11:41 am