Trie d'un fichier excel par une autre appli en vb

ptithomm Messages postés 10 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 17 mai 2006 - 24 mars 2005 à 10:54
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 25 mars 2005 à 10:52
Bonjour,





Je cherche a trie un document excel depui une autre application en vb.
ca j'ai besoin de trouver une ligne dans ce document grace a la
connaissance de 2parametre de 2 colonnes.


Mais si je fait un recherche ligne a ligne ca prend bcp de temps (
jusqu'a 1min) car mon document contient environ 5000 lignes. Je sais
pas si faire un filtre sur le document excel est possible depuis une
autre appli. et je sais pas si ca peut faire gagner du tps.


en gros en macro excel ca donne :





Selection.AutoFilter Field:=1, Criteria1:="3"


Selection.AutoFilter Field:=3, Criteria1:="4"


Selection.AutoFilter Field:=1


Selection.AutoFilter Field:=3





Mais je veux faire ca depuis une autre appli


pour l'instant je fait une recherche ligne a ligne. Voila ce mon code:





Public Sub defautsysteme(IntID As Integer, IntNumber As Integer)





'déclaration des variables


Dim docexcel 'As Excel.Application


Dim xlSht


Dim NumLigne As Integer


Dim IDlu As Integer


Dim Numlu As Integer


Dim errorcode As String


Dim severity As String


Dim intitule As String


Dim cause As String


Dim remedes As String





NumLigne = 2





Screen.MousePointer = vbHourglass





'le prog va aller chercher les informations du défaut dans le fichier excel:


Set docexcel = CreateObject("Excel.Application")


docexcel.Visible = False


docexcel.Workbooks.Open "C:\Defaut_sys.xls"


Set xlSht = docexcel.ActiveSheet





'tant que il y a des données ou que le code n'a pas été trouvé


Do


IDlu = xlSht.Application.Cells(NumLigne, 1)





'si le code lu est le même que celui saisi


If IDlu = IntID Then





Do


Numlu = xlSht.Application.Cells(NumLigne, 3)





If Numlu = IntNumber Then



errorcode = xlSht.Cells(NumLigne, 2)



severity = xlSht.Cells(NumLigne, 4)



intitule = xlSht.Cells(NumLigne, 5)



cause = xlSht.Cells(NumLigne, 6)



remedes = xlSht.Cells(NumLigne, 7)


Exit Do ' l'erreur a été trouvé on peut sortir de la boucle


End If





NumLigne = NumLigne + 1


Loop While IDlu = IntID


Exit Do 'sort de la boucle si le code a été trouvé ou que l'erreur n'est pas repertoriée


End If





NumLigne = NumLigne + 1


Loop While (xlSht.Application.Cells(NumLigne, 1) "")





'ferme le document excel


docexcel.Application.Quit



Quelqu'un a t'il une solution ou peut il m'aider, svp? merci d'avance.

3 réponses

valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
25 mars 2005 à 01:51
Salut,
Il éxiste une classe pour VB6 qui te sera utile
http://www.vbfrance.com/article.aspx?ID=2113

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
ptithomm Messages postés 10 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 17 mai 2006
25 mars 2005 à 09:50
Merci bcp je vais regarder !!
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
25 mars 2005 à 10:52
Re,
Sinon en gros quand tu crée to appi Docexcel et ta feuille xlScht tu as sous la main toutes les propriétées et méthode de ses objets
je te conseille de faire un for each qui est plus rapide qu'une boucle

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
Rejoignez-nous