FileImport du VBE

Fermé
Code Jack Messages postés 18 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 21 juillet 2011 - 12 juil. 2011 à 18:00
Code Jack Messages postés 18 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 21 juillet 2011 - 19 juil. 2011 à 09:50
Bonjour,

Je viens de commencer à programmer sur le VBE, et j'ai (déjà) un petit problème concernant la méthode FileImport indiquée dans l'aide du VBE.

Je veux faire exactement exactement ce que la fonction est censée faire, c'est-à-dire importer une certaine plage de cellules le plus efficacement possible (sans avoir à ouvrir le document par exemple), dans un nouveau document Excel.

Voici ce que j'ai écrit, en basant le code sur celui proposé par l'aide :

Sub Import()
With ActiveWorkbook.Application
.FileImport Filename:="test.xlsx", _
ImportRange:="A2:D5", WorksheetName:="onglet2"
End With
End Sub

Je souhaite prendre les cellules de A2 à D5 de l'onglet2 du fichier test.xlsx, et les importer dans le classeur actif sur lequel je travaille.

A terme, l'idée est de faire ceci avec une dizaine de fichiers Excel, et de tout importer dans un onzième fichier.

Le message que j'obtiens pour le moment est le suivant :
"Propriété ou méthode non gérée par cet objet", en surlignant les 3ème et 4ème lignes.

Malgré maintes recherches, je n'ai pas trouvé la coquille.
Quelqu'un peut-il me venir en aide en m'indiquant mon erreur (le plus important) et éventuellement en proposant une version qui marche ?

Merci d'avance à vous,

Bonne soirée,

Code Jack

A voir également:

5 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 13/07/2011 à 16:38
Tu pourrais utiliser la formule dite de John Walkenbach.

Exemple :
Sub LireFichierFermé() 
Dim NomFichier As String 
Dim Chemin As String 
Dim Formule As String 

  ActiveSheet.Range("A1").ClearContents 
   
  Chemin = "D:\Temp\" 
  NomFichier = "Classeur_à_lire.xls" 
  Formule = "='" & Chemin & "[" & NomFichier & "]Feuil1" & "'!" & "A1" 
  ActiveSheet.Range("A1").Formula = Formule 
  ActiveSheet.Range("A1").Value = ActiveSheet.Range("A1").Value 

End Sub


Cordialement
Patrice
1
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
13 juil. 2011 à 13:18
FileImport s'applique à un objet Chart (pas au classeur)
0
Code Jack Messages postés 18 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 21 juillet 2011 7
13 juil. 2011 à 14:00
Très bien merci !

Mais alors dans ce cas existe-t-il une méthode qui fait la même chose, pour un classeur ?

Il paraît étrange qu'une méthode aussi pratique pour importer des données ne soit applicable que pour un objet Chart non ?

Sinon ça ne fait rien je rajouterai des étapes dans le code...

Merci en tout cas,

Code Jack
0
Code Jack Messages postés 18 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 21 juillet 2011 7
13 juil. 2011 à 15:02
J'ai changé d'objet, et je travaille désormais sur un objet Chart, mais il me renvoie toujours le même message d'erreur...

Sub Import()
'select the destination chart
Charts(1).Activate
With ActiveChart
'import data from test.xlsx, A2:D5, KPI worksheet
.FileImport Filename:="C:\Users\User\Desktop\test.xlsx", _
ImportRange:="A1:D1", WorksheetName:="KPI", _
OverwriteCells:=True
End With
End Sub

Une idée ?

Merci d'avance,

Code Jack
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Code Jack Messages postés 18 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 21 juillet 2011 7
19 juil. 2011 à 09:50
En effet, ça m'aide beaucoup dans ma tâche,

Merci beaucoup et très bonne continuation, je vois le bout du tunnel de mon côté... Conflict resolved !

Code Jack
0