Vous êtes sur la page 1sur 2

VBA - Excel : Lire dans un classeur ferm

Juin 2014
Sous VBA, les diffrentes techniques de lecture de donnes dans un fichier Excel ferm sont assez rebutantes par leur complexit. Cependant, il existe une
petite astuce permettant de contourner ceci, sans utiliser de connexion OLE DB, mais uniquement pour la lecture.
Introduction
La mthode, par Excel :
Le code VBA correspondant
Prcautions d'emploi
Exemple d'utilisation
Tlchargement

Introduction
Nous avons besoin, dans notre classeur Recap , d'avoir les informations situes dans la plage de cellules A1 :F10 de la feuille Feuil1 d'un
classeur source , lui-mme situ dans le rpertoire C:\Pijaku\Ne_fait_rien_de_ses_journes\CCM\ . Donc pour commencer, ouvrons un classeur,
inscrivons Pijaku en Feuil1 de la cellule A1 la cellule F10 et enregistrons le sous source.xls dans le rpertoire :
C:\Pijaku\Ne_fait_rien_de_ses_journes\CCM\. Fermons ce classeur. Ouvrons un second classeur Excel et enregistrons le sous Recap.xls dans le
bureau (par exemple).
La mthode, par Excel :
Dans votre classeur Recap.xls :
Insrer un nom dfini :
Menu : Insertion
Choix : Nom
Cliquer sur : Dfinir
Noms dans le classeur => saisir : plage Fait rfrence => saisir : ='C:\Pijaku\Ne_fait_rien_de_ses_journes\CCM\[source.xls]Feuil1'!$A$1:$F$10 Cliquer
sur Ajouter.
Dans votre classeur, en A1 saisir la formule : =plage
puis valider. Etirer cette formule sur toute la plage de A1 F10...
Le code VBA correspondant
Sub ImporterDonneesSansOuvrir()
Dim Chemin As String, Fichier As String Chemin = "C:\Pijaku\Ne_fait_rien_de_ses_journes\CCM\" Fichier = "source.xls" ThisWorkbook.Names.Add "plage", _

Prcautions d'emploi
Surtout, vrifiez bien le chemin d'accs au rpertoire, l'orthographe, la casse sont trs important. Aussi vrifier le \ entre le chemin du rpertoire et le
nom du classeur.
Exemple d'utilisation
Ce code boucle sur tous les classeurs Excel d'un rpertoire et en extrait le contenu de la cellule A1 Feuil1, en l'occurence pour l'exemple, une date.
Option Explicit
Sub ImporterDates() Dim objShell As Object, objFolder As Object Dim Chemin As String, fichier As String Set objShell = CreateObject("Shell.Application")

Tlchargement
Vous pouvez tlcharger le classeur source exemple ainsi que le classeur recap utiliss en premire partie de cette astuce. Si toutefois ceux-ci n'taient
plus disponibles sur cjoint, merci de me le faire savoir en m'envoyant un MP ici, cliquez sur Lui crire un message
Ce document intitul VBA - Excel : Lire dans un classeur ferm issu de CommentCaMarche (www.commentcamarche.net) est mis disposition sous les termes de la licence Creative
Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixes par la licence, tant que cette note apparat clairement.