[XL-2007] Problème pour remplir ma listView
Bonjour et déjà merci de votre aide,
Voilà j'ai créé une fonction de recherche qui prend en paramètre une saisie, et un integer. Et qui doit rechercher si ma saisie ce trouve dans plusieurs onglets à la fois.
Pour naviguer entre mes onglets j'utilise donc un integer qui va dans la fonction changer d'onglet sélectionné.
Pour stocker le tableau de résultats j'utilise donc un multipage, et je voudrais que le résultat de ma recherche soit bien disposer comme dans le fichier excel c'est-à-dire que les résultat de la recherche sur l'onglet A de excel vont dans l'onglet A du multipage.
Pour cela j'ai fais une tripe boucle ou i et le nombre de ligne trouvé, k le nombre d'onglets et j le nombre de cellule que je veux récupérer. je stock et tri les résultat dans une listview. tablist est un tableau de listView.
Chaque listView est dans une page du multipage.
Code:
1 2 3 4 5 6 7 8
| For k = 1 To NbOnglet
For i = 1 To 1
tabList(k - 1).Le_LISTVIEW.ListItems.Add , , Saisierecherche
For j = 2 To 15
tabList(k - 1).Le_LISTVIEW.ListItems(i).ListSubItems.Add , , (ResultRecherche.recherche(Saisierecherche, k)(i, j - 1))
Next j
Next i
Next k |
Pour la première recherche c'est-a-dire pour k=1 et pour tablist(k-1=0) dans l'onglet 0 les résultat du premier onglet s'affiche pour le reste j'ai le dernier onglet, mais 2 d'entre eux qui sont au milieu n'ont rien alors qu'il y a bien un champ identique.
PS: la fonction de recherche :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
Public Function recherche(resultat As Integer, k As Variant) As Variant()
'Déclaration de la variable pour le nombre de ligne dans la colonne
Dim cellule As String
Dim nbLigne As Integer
Dim compteur As Integer
Dim nomOnglet As Object
'On sélectionne la bonne page
Sheets(k).Select
'Tableau pour stocker les différentes lignes.
Dim ligneTrouver(10, 15) As Variant
'on affecte le nombre de ligne nbLigne non vide de la colonne
nbLigne = CInt(WorksheetFunction.CountA(Range("B6:B400")))
'On parcours la colonne. On commence à 6 car il a 4 ligne personnalisable +1 pour le nom de la colonne
For i = 6 To nbLigne + 6
'On regarde si la valeur de la cellule est égale au paramètre rechercher
If (resultat = Cells(i, 1).Value And Cells(i, 1).Value) Then
'on augmente le compteur du tableau
compteur = compteur + 1
For j = 1 To 16
'On stocke la valeur de la cellule
ligneTrouver(compteur, j - 1) = Cells(i, j).Value
End If
Next j
End If
Next i
recherche = ligneTrouver
End Function |
Merci de m'aider,
Cordialement.