Lecture de code des fichiers .xls [Résolu]

Signaler
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
-
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

Messages postés
402
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 octobre 2008
28
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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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"
<!--
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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"
<!--
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
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
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
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 #
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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"
<!--
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
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 #
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
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
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Casy: effectivement, c'est un peu ce que je cherchais, mais comme tu l'auras deviné, je ne la connais pas non plus...

MPi
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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"
<!--
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
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
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
20
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