Recherche dans fichier excel et inscription dans un listview [Résolu]

Signaler
Messages postés
130
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
23 novembre 2011
-
Messages postés
130
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
23 novembre 2011
-
Bonjour,


J'ai un bout de code qui permet de chercher un code dans un fichier
excel et qui inscrit le code et ca description dans un listview.


Mon problème ce situe au niveau d'une recherche infructueuse. Si le
code rechercher n'existe pas et que l'on recherche un nouveau code, il
inscrit une ligne vide dans le listview et une ligne avec le bon code...


Je suis certain que c'est une erreur stupide mais je n'arrive pas à trouver


voici le bout de code

<hr size="2" width="100%" />

Private Sub searchlist()

Dim Ligne   As ListItem

Dim xls As EXCEL.Workbook ' déclaration d'une variable objet de type classeur Excel

Dim var As String

Dim i As Integer

Dim a As Integer

Dim temp

var = "1"


 

 Set xls = GetObject(App.Path + "\inventaire\inventaire.xls")
'instanciation de l'objet (qui devient ici le fichier excel indiqué)

 Set Ligne = ListView1.ListItems.Add


 ' export de données

While var <> ""

    If a = 0 Then

        a = 1

    Else

    End If


var = ""

i = i + 1

var = xls.Worksheets(1).Range("A" & CStr(i)).Value


    temp = Right(var, Len(txtaddtolist.Text))

    If temp = txtaddtolist.Text Then

        searchindex = i

        Ligne.Text = xls.Worksheets(1).Range("A" & CStr(i)).Value

        Ligne.SubItems(1) = xls.Worksheets(1).Range("B" & CStr(i)).Value

        lblListMessage.ForeColor = vbBlack

        lblListMessage.Caption = "Inscription trouvé"

         a = a + 1

        txtaddtolist.Text = ""

        txtaddtolist.SetFocus

        Exit Sub

    Else

    End If


Wend

Set xls = Nothing


lblListMessage.ForeColor = vbRed

lblListMessage.Caption = "Aucune inscription n'a été trouver."

txtaddtolist.Text = ""

txtaddtolist.SetFocus

End Sub
<hr size="2" width="100%" />


Merci

@+

2 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut

essaie en mettant  Set Ligne = ListView1.ListItems.Add
après cette ligne :      If temp = txtaddtolist.Text Then

(puis un rajout de Set Ligne = Nothing)

Ca donnerai donc ça :

Private Sub searchlist()
Dim Ligne   As ListItem
Dim xls As EXCEL.Workbook ' déclaration d'une variable objet de type classeur Excel
Dim var As String
Dim i As Integer
Dim a As Integer
Dim temp
var = "1"

 
 Set xls = GetObject(App.Path + "\inventaire\inventaire.xls") 'instanciation de l'objet (qui devient ici le fichier excel indiqué)

' export de données
While var <> ""
    If a = 0 Then
        a = 1
    Else
    End If

var = ""
i = i + 1
var = xls.Worksheets(1).Range("A" & CStr(i)).Value

    temp = Right(var, Len(txtaddtolist.Text))
    If temp = txtaddtolist.Text Then
        Set Ligne = ListView1.ListItems.Add ' chgt donc ICI
           searchindex = i
        Ligne.Text = xls.Worksheets(1).Range("A" & CStr(i)).Value
        Ligne.SubItems(1) = xls.Worksheets(1).Range("B" & CStr(i)).Value
        lblListMessage.ForeColor = vbBlack
        lblListMessage.Caption = "Inscription trouvé"
        a = a + 1
        txtaddtolist.Text = ""
        txtaddtolist.SetFocus
        Set Ligne = Nothing               ' et ICI
        Set xls = Nothing               ' déplacé
        
Exit Sub
    Else               ' inutile
    End If

Wend

        Set Ligne = Nothing            
        Set xls = Nothing
lblListMessage.ForeColor = vbRed
lblListMessage.Caption = "Aucune inscription n'a été trouver."
txtaddtolist.Text = ""
txtaddtolist.SetFocus
End Sub

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
130
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
23 novembre 2011

Merci

c'est corrigé!!!


Je le savait, c'étais une stupidité