Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/10/2011, 12h12   #1
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 0
Points : 0
Par défaut Extraire données à partir d'un fichier fermé VBA

Bonjour,
Je souhaiterai extraire des données excel dans un fichier ouvert à partir d'un fichier Excel fermé.
Je n'ai jamais fait ça avec VBA.
J'ai 2 question :
- Est-ce efficace de faire ce travail sur une base de données lourde (en terme de mémoire et de temps de travail) ?
- Pouvez vous m'aider pour pouvoir faire ce travail svp ?
Exemple :
J'ai une table "A" dans mon fichier excel ouvert "Fichier1", et mon objectif est de copier les colonne "C" et "D" de la table "B" du fichier fermé "Fichier2" qui se trouve dans "C:\dossierB" .

Merci pour votre aide !
Malco1503 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 12h27   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Tu as une documentation générale ici :

http://silkyroad.developpez.com/VBA/ClasseursFermes/

Si tu veux une aide suppémentaire, indique le type du classeur fermé (.xls, .xlsx)
et si le tableau du classeur possède des entêtes.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 13h56   #3
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 0
Points : 0
Merci Daniel pour ta reponse,
Le fichier fermé est typé .xls et le tableau possede bien des entetes.
Merci d'avance

Tout en sachant que dans ce fichier fermé il y a plusieurs feuilles, mais je veux copier la table qui se situe par exemple dans la feuille "Sheet5" et la coller dans la feuille nommée "Output" du fichier Excel ouvert.
Merci
Malco1503 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 15h31   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Voici un exemple. Il faut que tu modifies le nom du fichier, celui de la feuille ainsi que la destination. Les endroits à modifier sont indiqués. Dans la fenêtre VBE, tu dois cocher la référence :
Microsoft ActiveX Data Objects x.x Library.
La macro est tirée de la page indiquée plus haut.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub Lire_Classeur_Ferme()
'Réf. 111018.xlsm
 
'Références à sélectionner :
'référence Microsoft ActiveX Data Objects x.x Library
 
Dim cn As ADODB.Connection
Dim Fichier As String
Dim NomFeuille As String, texte_SQL As String
'Définit le classeur fermé servant de base de données
Fichier = "C:\Users\Daniel\Documents\Donnees\Daniel\Excel\ADO\ClasseurFerme.xls" '*** à modifier
Set cn = New ADODB.Connection
'--- Connexion ---
With cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & Fichier & _
        ";Extended Properties=Excel 8.0;"
    .Open
'texte_SQL = "SELECT * FROM [" & NomFeuille & " ]"
NomFeuille = "MaNouvelleFeuille" '*** à modifier
texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
Set rst = New ADODB.Recordset
Set rst = .Execute(texte_SQL)
'Ecrit le résultat de la requête dans la cellule A2
Sheets("Feuil3").Range("A2").CopyFromRecordset rst '*** à modifier
End With
'--- Fermeture connexion ---
cn.Close
Set cn = Nothing
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h24.


 
 
 
 
Partenaires

Hébergement Web