VBA Excel : gestion de fichiers .xls

VBA Excel : gestion de fichiers .xls - VB/VBA/VBS - Programmation

Marsh Posté le 17-11-2005 à 09:25:49    

Bonjour à tous !
 
Voici mon problème.
Ma requête doit chercher des infos dans d'autres classeurs Excel.
Or, actuellement, ceux-ci doivent être ouvert pour que ça marche (j'y ai alors accès avec la commande Windows("..." ).Activate).
 
Mais, je ne veux à avoir à les ouvrir manuellement pour récupérer ces données. De plus, il faut vérifier leur existence avant de les ouvrir.
 
Grand merci d'avance à celui ou celle qui pourra m'aider !! :jap:  
 
Joss

Reply

Marsh Posté le 17-11-2005 à 09:25:49   

Reply

Marsh Posté le 17-11-2005 à 10:50:53    

Salut joss,
 
Pour tester l'existance d'un fichier, tu peux utiliser ceci :

Code :
  1. Set fso = CreateObject("scripting.filesystemobject" )
  2. If fso.FileExists(chemin_complet_et_nom_du_fichier) = False Then Exit Sub


 
Pour ce qui est des données à récupérer, l'ouverture du fichier "Source" est, à ma connaissance, obligatoire ne serait-ce qu'une ouverture en lecture seule, enfin je suis loin de tout connaitre.
 
bon courage


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 17-11-2005 à 19:03:16    

Super, ton aide me permet déjà d'avoir une fonction qui ne plante pas (pour utiliser le FileExists, je trouve que c'est pas évident...).
Merci beaucoup Watashi !!
 
Pourtant, j'ai encore un problème : je n'arrive pas à trouver le chemin courant... Il me semble que ce soit ChDir (d'après l'aide), mais je n'arrive pas à l'utiliser. Peux-tu m'éclaircir ?
 
Il me reste également ce problème de pouvoir accéder à un fichier Excel (et extraire les données de ses cellules) sans avoir à l'ouvrir sur le Bureau Windows.
 
Encore merci.
 
Joss

Reply

Marsh Posté le 18-11-2005 à 09:06:47    

josserand_joss a écrit :

Pourtant, j'ai encore un problème : je n'arrive pas à trouver le chemin courant... Il me semble que ce soit ChDir (d'après l'aide), mais je n'arrive pas à l'utiliser. Peux-tu m'éclaircir ?

Le chemin courrant de quoi de ton fichier excel ou de ton application ?
 

josserand_joss a écrit :

Il me reste également ce problème de pouvoir accéder à un fichier Excel (et extraire les données de ses cellules) sans avoir à l'ouvrir sur le Bureau Windows.

Pour moi ouvrir le fichier est obligatoire. Tu peux éventuellement mettre excel en non visible c'est pratique quand tu travailles à partir de userform pour ne pas montrer excel mais tu n'as plus de visibilité sur les classeurs.  

Code :
  1. Sub lance()
  2. Excel.Application.Visible = False
  3. UserForm1.Show
  4. End Sub

Faut juste ne pas oublier de mettre visible.true au moment de tous les userform.hide
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 18-11-2005 à 14:39:49    

J'ai besoin du répertoire courant de mon fichier Excel.
 
En gros, j'ai un fichier Excel qui est lancé par l'utilisateur (où il y ma macro).
 
Celui doit extraire des données depuis d'autres fichiers Excel situés dans le même répertoire. Mais, l'intérêt est, pour l'utilisateur, de ne pas avoir à ouvrir tous les autres fichiers .xls avant d'exécuter la macro.
 
J'espère être clair dans mon explication... :sarcastic:
 
Encore merci.

Reply

Marsh Posté le 18-11-2005 à 15:23:30    

Re,
Le chemin du classeur c'est activeworkbook.path
Si tu fait un filesearch sur ce dossier tu peux avoir un array contenant le nom de tous tes fichiers à traiter. J'ai un code qui fait ça au bureau , si ça te tente je le posterais lundi :)
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 18-11-2005 à 15:55:39    

J'ai vu un site qui va pouvoir t'interessé sur la prises des données dans un classeur fermé :
ici
Ca a l'air pas mal, j'y regarderais plus loin un peu plus tard.


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 18-11-2005 à 16:10:04    

Merci pour ce lien, je regarderai ça en détail.
 
Joss

Reply

Marsh Posté le 21-11-2005 à 09:01:27    

Salut joss
 
voilà le code dont je te parlais vendredi :

Code :
  1. Sub ListFileInFolder()
  2.      Dim i, a, chemin
  3. 'Choix du chemin
  4.      chemin = ActiveWorkbook.Path
  5. 'mise en place de la liste de fichier
  6.      With Application.FileSearch
  7.           .NewSearch
  8.           .FileType = msoFileTypeExcelWorkbooks
  9.           .SearchSubFolders = False
  10.           .LookIn = chemin
  11.           If .Execute() > 1 Then
  12.                a = 0
  13.                ReDim Preserve LFIF(.FoundFiles.Count - 2)
  14.                '(-1) car array(0) (-1) car ce fichier est déjà ouvert
  15.                For i = 1 To .FoundFiles.Count
  16.                     If .FoundFiles(i) <> ActiveWorkbook.FullName Then
  17.                          LFIF(a) = .FoundFiles(i)
  18.                          a = a + 1
  19.                     Else
  20.                     End If
  21.                Next i
  22.           Else
  23.                MsgBox ("Aucun autre fichier que celui-ci" )
  24.           End If
  25.      End With
  26. End Sub

En espèrant que celà t'aide
 
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 21-11-2005 à 20:29:19    

Super !! Je crois que ça bien m'aider !!
Merci également pour la soluce du chemin du classeur (je viens seulement de m'en rendre compte, lol, dsl).
 
Je verrais ça à mon retour dans ma boîte, dans 15 jours (formation actuellement). Mais, je pense bien que ta soluce va me débloquer.
En cas de problème, je sais où m'adresser !! :sol:  
 
Joss

Reply

Marsh Posté le 21-11-2005 à 20:29:19   

Reply

Marsh Posté le 22-11-2005 à 10:37:05    

;) lol


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 05-12-2005 à 17:30:59    

En effet, ça m'a bien aider !!
Donc, un grand merci à toi, encore une fois.
 
Maintenant, j'ai abouti à un autre gros problème (à la con, j'avoue) que j'ai posté dans un nouveau sujet :
http://forum.hardware.fr/hardwaref [...] 1216-1.htm
 
A la prochaine !! Thanks !!
 
Joss

Reply

Marsh Posté le 06-12-2005 à 09:42:43    

nope vu et répondu ;)


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed