Utilisation de .Close avec Scripting.FileSystemObject [Excel/VBA] - VB/VBA/VBS - Programmation
Marsh Posté le 30-09-2010 à 11:33:29
Set NomDossier = Nothing
Set Fso = Nothing
Il doit manquer un truc dans ton code présenté, où et comment ouvres tu ces fichiers ?
Marsh Posté le 30-09-2010 à 12:47:04
Non non, le code se limite à ça pour aller chercher les infos dans les fichiers. Quand ils sont ouverts, c'est "en tâche de fond". Ils n'apparaissent pas sous Excel. Le reste du code se limite à attribuer des valeurs à des cellules.
j'ai posé la question sur un autre forum et la réponse m'a été donnée. Il faut rajouter : Application.Workbooks(objFichier.Name).Close False juste avant le Next objFichier
Marsh Posté le 30-09-2010 à 14:01:31
Hum ok j'avais pas lu entierement ton code, tu ne récuperes que le nom du fichier ou elements de ce genre ? Rien a l'interieur du fichier ? valeurs de cellules etc ?
Dans tous les cas, il faut qd meme tuer tes variables NomDossier et Fso
Marsh Posté le 30-09-2010 à 14:30:14
SuppotDeSaTante a écrit : Hum ok j'avais pas lu entierement ton code, tu ne récuperes que le nom du fichier ou elements de ce genre ? Rien a l'interieur du fichier ? valeurs de cellules etc ? |
En entrée, j'ai le nom du répertoire dans lequel se trouvent les fichiers à parcourir. La boucle For Each objFichier In NomDossier.Files/NextobjFichier parcours chaque fichier et je connais la feuille et les coordonnées des cellules à regarder (identiques pour chaque fichier).
Je vais rajouter le kill de ces variables (et pour info, quelle est l'utilité de le faire ? vider la mémoire ? )
Marsh Posté le 30-09-2010 à 14:43:25
Donc si tu regardes des cellules, en effet tes fichiers s'ouvrent.
Avec le code que tu as mis ici, ca n'ouvre pas le fichier, ca recupere juste le nom du fichier (sans l'ouvrir) avec la propriete Name de Files, elle meme de GetFolder, qui decoule de Scripting.FileSystemObject. Aucun rapport avec Excel.
Ce genre de chose marche tres bien dans un VBS par exemple.
"Vider" la mémoire, oui, mais pour ce genre d'objet, il le fait presque tout seul a tous les coups en sortant de la fonction ou de la procédure.
C'est surtout pour des objets plus chiants (OLE, thread enfants etc.), ca te donne l'habitude de t'en servir.
Marsh Posté le 02-10-2010 à 11:04:41
Salut, voir sur http://forum.hardware.fr/hfr/Progr [...] 0026_1.htm et sans doute adapter
Marsh Posté le 29-09-2010 à 10:45:17
Bonjour !
Voila, je suis en train de créer un fichier excel de "monitoring". Ce fichier utilise plusieurs macro afin de récupérer des infos venant de plusieurs fichiers Excel différents.
Pour cela, j'utilise la fonction "Scripting.FileSystemObject" afin de parcourir mes différents fichiers et récupérer les datas qui m'intéressent.
Le fonctionnement global est le suivant :
Mes infos sont bien récupérées et tout fonctionne bien, SAUF le fait que tous ces fichiers Excel que je parcoure semblent rester ouverts en "fond" après l'éxecution de la macro. Si je ne quitte pas le fichier de monitoring d'où sont qui récupére les infos, je ne peux ouvrir les autres fichiers Excel qui sont parcourus qu'en Lecture seule.
J'ai tenté de mettre :
NomDossier.Close
En fin de fonction, avant ou après le Next mais VB me sort une erreur : "Object doesn't support this property or method
Quelqu'un aurait une idée de la manière de procéder ?
Merci d'avance !
Message édité par hyperboleske le 29-09-2010 à 11:04:23