Lecture de code des fichiers .xls

Résolu
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 4 nov. 2006 à 15:49
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 5 nov. 2006 à 11:06
Bonjour,


Je me suis déjà créé une application VB qui me permet de faire une
recherche de mots-clés dans le code de fichiers VB (.frm,  .bas,
.cls,...) en fait toutes sortes de fichiers qu'on peut lire avec

Open Fichier for Input as #1


Il me permet donc de scruter tous les dossiers et sous-dossiers d'un
chemin donné et ça m'est souvent utile. C'est rapide et efficace.


J'aimerais pouvoir faire la même chose avec des fichiers xls

Mais comme les fichiers sont compilés, je ne vois pas d'autre
alternative que d'ouvrir une instance d'Excel (objet Excel) ... ce qui
risque de ralentir passablement l'application puisque j'ai plus de 1000
fichiers à lire...


Est-ce que quelqu'un verrait une autre façon d'y arriver ?

MPi

12 réponses

michelxld Messages postés 402 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 octobre 2008 32
4 nov. 2006 à 18:57
bonsoir

"Et est-ce que les PC doivent avoir Open Office installé ou un composant pourrait être suffisant ?"

Open Office doit être installé.
Mais à mon avis le passage par OOo n'apportera un gain de temps significatif.

bonne soirée
michel
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 nov. 2006 à 17:12
Bonjour MPi,

hônnetement, je ne pense pas qu'il y ait d'autre façon que d'ouvrir réellement l'application Excel pour lecture.
J'ai tenté plusieur "bonjour" dans diffèrentes cellules, et ouvert avec wordpad, le résultat n'est pas fameux : un seul mot trouvé, donc impossible à lire comme ceci.

Cependant, je teste un truc...

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 nov. 2006 à 17:37
J'ai vérifié le temps d'éxecution sur une simple opération :

Private Sub Form_Load()
    Dim xlApp       As Excel.Application
    Dim xlBook      As Excel.Workbook
    Dim sFileText   As String
    Dim x           As Integer, y As Integer
    Dim execproc, resultat

execproc = Timer

Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = False: xlApp.ScreenUpdating = False
'Set xlBook = xlApp.Workbooks.Open("C:\Documents and
settings\Mortalino\Bureau\Nouveau.xls")
Set xlBook = xlApp.Workbooks.Open("C:\Documents and
settings\Mortalino\Bureau\Copie de Nouveau.csv")

For x = 1 To 20
    For y = 1 To 500
        sFileText = sFileText & Cells(y, x).Value
    Next y
Next x

xlBook.Sheets(2).Select: xlBook.Sheets(3).Select
xlBook.Sheets(2).Select: xlBook.Sheets(3).Select

xlBook.Close True: xlApp.Quit
Set xlBook = Nothing: Set xlApp = Nothing

resultat = Timer - execproc: Debug.Print resultat
End Sub


--Mortalino--

Le premier test a été de vérifier le temps d'exécution pour cette petite opération entre les deux formats : xls et csv

Voici les résultats :
 35.48438 .xls
 34.10938 .csv

L'écart est minim, un peu moins d'une seconde et demi, mais il faudrait vérifier sur une plus grosse opération pour que ce soit révélateur.
A toi de voir.
@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 nov. 2006 à 17:52
Merci Mortalino,

Bien que mon application ait pour but de lire le code des procédures, ça demeure quand même le procédé que je pensais utiliser, c'est-à-dire Excel.Application .

Mais avant de me lancer dans l'application (VB et/ou VBA) comme telle, j'aurais quand même bien aimé savoir s'il n'y a pas une autre méthode... Ou peut-être une façon de voir rapidement s'il y a ou non du code dans le fichier. Ça serait au moins ça de gagné question rapidité, s'il n'y a pas d'autres façons de faire.

MPi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 nov. 2006 à 18:28
Ouhhhh que c'est vilain, une mesure de temps d'execution à l'aide de la fonction Timer. Bouhhhhh pas bien

Pour info Timer à une résolution de 18.2ms (pas top comme précision)

Pour les temps d'executions voir plutot de coté de l'api GetTickCount (1ms). Ou mieux sur les pc qui le permettent QueryPerformanceCounter (résolution dépendant de la machine, généralement on descent au moins à la µs)

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 nov. 2006 à 18:34
Oui, effectivement, j'aurai pu mieux faire
De toute façon, mon code n'est pas vraiment ce que MPi recherche.

C'est le vbproject.Components. Malheureusement, MPi, je crains que tu n'aies pas le choix...
J'ai regarder sur le net, comme tu l'as dit, les vbproject (et ses composants) sont intégrés dans le fichier Excel, et donc aucun moyen de le lire, mis à part Excel, ou OO.o

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 nov. 2006 à 18:38
Ou décoder le fichier .xls, si tu en connais la structure. Perso je ne la connais pas.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 nov. 2006 à 18:40
Mortalino: Open Office ?
Penses-tu que ça pourrait être mieux, voire plus rapide, que de passer par Excel.Application ?
Et est-ce que les PC doivent avoir Open Office installé ou un composant pourrait être suffisant ?

MPi
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 nov. 2006 à 18:42
Casy: effectivement, c'est un peu ce que je cherchais, mais comme tu l'auras deviné, je ne la connais pas non plus...

MPi
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 nov. 2006 à 18:50
La structure du fichier est complexe. Ce ne doit pas être évident, d'autant plus que tout est mélangé (feuilles, données cellules, composant userform, modules, etc)

Désolé MPi, je ne sais pas car je n'aime pas OO.o donc utilisé qu'une seule fois, et vite désinstaller, par contre, le fait que le code apparaissent dans des onglets, c'est peut-être
un peu plus rapide.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 nov. 2006 à 19:20
Ok, merci Michelxld
Comme je voudrais utiliser l'application au bureau, pas question d'installer quoi que ce soit...

Merci à ceux qui ont répondu,


Et si quelqu'un d'autre trouve l'idée de génie, n'hésitez surtout pas...

MPi
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
5 nov. 2006 à 11:06
salut,

la structure des fichiers Excel est certes complexe mais se complique surtout de version en version...

c'est openoffice qui donne un petit document de 222 pages : http://sc.openoffice.org/excelfileformat.pdf et http://sc.openoffice.org/compdocfileformat.pdf

et un peu de doc MSDN :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/html/d17dc0dd-3115-4830-8c6b-694a8d1accaa.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/stg/stg/ipropertysetstorage_compound_file_implementation.asp

et un petit exemple connexe (surtout pour les TLB) : http://www.vbfrance.com/codes/LECTURE-MODIFICATION-PROPRIETES-FICHIERS-OFFICE-NTFS5_24534.aspx

avec tout ça tu peux avoir de bonnes performances :
-> soit tu codes tout en VB même la lecture des documents compound
-> soit tu codes avec les interfaces de lecture

seulement bon courage :)...

ShareVB
0
Rejoignez-nous