Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3076 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Excel/VBA]Utilisation de .Close avec Scripting.FileSystemObject

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Excel/VBA]Utilisation de .Close avec Scripting.FileSystemObject

n°2025862
hyperboles​ke
Posté le 29-09-2010 à 10:45:17  profilanswer
 

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 :  
 
 

Code :
  1. Set Fso = CreateObject("Scripting.FileSystemObject" )
  2. Set NomDossier = Fso.GetFolder(FolderFichiersExcelAParcourir)
  3. For Each objFichier In NomDossier.Files
  4.    ActiveWorkbook.Sheets(FEUILLE1).Cells(FEUILLEDESTINATION, 2).Value = objFichier.Name
  5.    """
  6.    """
  7.    """
  8. Next objFichier


 
 
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
mood
Publicité
Posté le 29-09-2010 à 10:45:17  profilanswer
 

n°2026092
SuppotDeSa​Tante
Aka dje69r
Posté le 30-09-2010 à 11:33:29  profilanswer
 

Set NomDossier = Nothing
Set Fso = Nothing
 
Il doit manquer un truc dans ton code présenté, où et comment ouvres tu ces fichiers ?


---------------
Soyez malin, louez entre voisins !
n°2026113
hyperboles​ke
Posté le 30-09-2010 à 12:47:04  profilanswer
 

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 :)
 

n°2026128
SuppotDeSa​Tante
Aka dje69r
Posté le 30-09-2010 à 14:01:31  profilanswer
 

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

Message cité 1 fois
Message édité par SuppotDeSaTante le 30-09-2010 à 14:04:40

---------------
Soyez malin, louez entre voisins !
n°2026138
hyperboles​ke
Posté le 30-09-2010 à 14:30:14  profilanswer
 

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 ?
 
Dans tous les cas, il faut qd meme tuer tes variables NomDossier et Fso


 
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 :jap:  (et pour info, quelle est l'utilité de le faire ? vider la mémoire ? :) )


Message édité par hyperboleske le 30-09-2010 à 14:30:22
n°2026143
SuppotDeSa​Tante
Aka dje69r
Posté le 30-09-2010 à 14:43:25  profilanswer
 

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.


Message édité par SuppotDeSaTante le 30-09-2010 à 14:45:22

---------------
Soyez malin, louez entre voisins !
n°2026432
kiki29
Posté le 02-10-2010 à 11:04:41  profilanswer
 

Salut, voir sur http://forum.hardware.fr/hfr/Progr [...] 0026_1.htm et sans doute adapter


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Excel/VBA]Utilisation de .Close avec Scripting.FileSystemObject

 

Sujets relatifs
fonction offset sous vba/excelBug très très étrange sous Excel VBA
[ORACLE] Utilisation du client sur un serveur partageMacro excel coloration de cellules sous conditions
utilisation d'un champ date dans une modal "jquery"Excel inviolable
formule excel quand recherchev ne suffit plus quoi faire? y a t-il un code VBA
Plus de sujets relatifs à : [Excel/VBA]Utilisation de .Close avec Scripting.FileSystemObject


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR