Export de données via un bouton vers un autre fichier, fermé

Le
Yves
Bonjour, j'aimerais, en cliquant sur un bouton,
Exporter les données [A3:A10] de classeur1 feuil1
Vers [a3:h3] dans classeur2 feuil1 (qui lui reste fermé)

Etant novice dans le domaine, pourriez vous me rédiger pour exemple des
lignes de code que je pourrais après recopier ?
D'avance merci
Yves
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #18624861
Je te propose plutôt ceci. Écrire dans un fichier c'est réalisable
mais c'est ce n'est pas si simple que ça. Tu dois passer par
ADO (activex data object). Si tu y tiens, tu peux aller sur le
Site internet de Misange http://www.excelabo.net tu vas
pouvoir télécharger quelques fichiers exemple dont celui-ci
que j'ai commis : dm-basedonnee.zip

'--------------------------------
Sub test()
Dim Chemin As String, Fichier As String
Dim wk As Workbook

'*******Variable à définir**************
Chemin = "C:UsersPowerUser"
Fichier = "AppelMacro1.xls"
'***************************************

Application.ScreenUpdating = False
Set wk = Workbooks.Open(Chemin & Fichier)
ThisWorkbook.Worksheets("Feuil1").Range("A3:A10").Copy
wk.Worksheets("Feuil1").Range("A3:H3").PasteSpecial xlPasteAll, , , True
Application.CutCopyMode = True
wk.Close True
End Sub
'--------------------------------

"Yves"
Bonjour, j'aimerais, en cliquant sur un bouton,
Exporter les données [A3:A10] de classeur1 feuil1
Vers [a3:h3] dans classeur2 feuil1 (qui lui reste fermé...)

Etant novice dans le domaine, pourriez vous me rédiger pour exemple des
lignes de code que je pourrais après recopier ?
D'avance merci...
Yves
Gloops
Le #18625031
Bonjour,

Je ne dirais pas qu'ouvrir un fichier Excel en liaison DDE ou Automation
plutôt qu'en classeur Excel normalement s'adresse particulièr ement à
un novice.

Donc, je serais assez d'avis de commencer par ouvrir le classeur cible
(sans d'ailleurs qu'il soit obligatoire qu'il soit visible, si je ne
m'abuse, enfin ça c'est si on aime le risque), et ensuite ...

Je vais m'en tenir aux adresses indiquées, en dur, et proposer quelq ue
chose qui devrait fonctionner dessus (je n'ai pas la machine pour le
tester mais le principe devrait rester valable).

Je laisse écrire les instructions pour que ClasseurSource et
ClasseurCible désignent les deux classeurs concernés, et active r les
feuilles voulues.

Dim I As Integer
For I = 1 to 8
ClasseurCible.ActiveSheet.Cells(I + 2, 1) = _
ClasseurSource.ActiveSheet.Cells(I, 1)
Next

Il n'y a plus qu'à fermer le classeur qui doit être fermé.
___________________________________
Yves a écrit, le 09/02/2009 13:31 :
Bonjour, j'aimerais, en cliquant sur un bouton,
Exporter les données [A3:A10] de classeur1 feuil1
Vers [a3:h3] dans classeur2 feuil1 (qui lui reste fermé...)

Etant novice dans le domaine, pourriez vous me rédiger pour exempl e des
lignes de code que je pourrais après recopier ?
D'avance merci...
Yves


JB
Le #18625141
Bonjour,

Se placer dans Classeur2.Xls et créer une liaison vers Classeur1.Xls
(A3:A10).A l'ouverture de classeur2.xls, les infos seront disponibles.

JB
http://boisgontierjacques.free.fr
On 9 fév, 13:31, Yves
Bonjour, j'aimerais, en cliquant sur un bouton,
Exporter les données [A3:A10] de classeur1 feuil1
Vers [a3:h3] dans classeur2 feuil1 (qui lui reste fermé...)

Etant novice dans le domaine, pourriez vous me rédiger pour exemple des
lignes de code que je pourrais après recopier ?
D'avance merci...
Yves


Yves
Le #18643311
je me suis rendu compte que ma question n'est pas correctement formulée...
En fait, dans [classeur1 feuil1], A3:A10 est une synthèse de cette feuil.
Je vais avoir environ 80 [classeur1 feuil1] par an.
[Classeur 2 feuil1] sera mon fichier "Bilan annuel". Ainsi en cliquant dans
mes fichiers [classeur1 feuil1] il faudrait pouvoir exporter mes "synthèses"
A3:A10 vers mon "Bilan annuel" [classeur 2 feuil1] Dans les colonnes A:H.
C'est pas tout à fait ce que j'exprimais la première fois. Désolé.
Je pensais à un bouton "EXPORT" dans les fichiers [classeur1 feuil1].
Si jamais vous avez d'autres manière de faire (peut être plus simple...)...
Sinon, j'ai essayé d'accéder à votre "dm-basedonnee.zip" mais je n'ai pas
réussi à le trouver sur excelabo.net ...

D'avance merci

PS: Si ce n'était pour une petite association sans budget, je passerai par
un service de developpement, mais, je doit me débrouiller. Pour
l'organisation des fichiers, les formules de calcul & co pas de soucis. Mais
ce fichu export... Seul, ça m'est impossible.

Yves

"michdenis" a écrit :

Je te propose plutôt ceci. Écrire dans un fichier c'est réalisable
mais c'est ce n'est pas si simple que ça. Tu dois passer par
ADO (activex data object). Si tu y tiens, tu peux aller sur le
Site internet de Misange http://www.excelabo.net tu vas
pouvoir télécharger quelques fichiers exemple dont celui-ci
que j'ai commis : dm-basedonnee.zip

'--------------------------------
Sub test()
Dim Chemin As String, Fichier As String
Dim wk As Workbook

'*******Variable à définir**************
Chemin = "C:UsersPowerUser"
Fichier = "AppelMacro1.xls"
'***************************************

Application.ScreenUpdating = False
Set wk = Workbooks.Open(Chemin & Fichier)
ThisWorkbook.Worksheets("Feuil1").Range("A3:A10").Copy
wk.Worksheets("Feuil1").Range("A3:H3").PasteSpecial xlPasteAll, , , True
Application.CutCopyMode = True
wk.Close True
End Sub
'--------------------------------



michdenis
Le #18643581
Je te suggère de prendre ton problème par l'autre bout de la lorgnette.
Au lieu d'exporter vers ton fichier Bilan Annuel, pourquoi
ne pas importer tes données à partir de ton fichier
bilan annuel... selon c'est beaucoup plus simple.

Si tu travailles avec un classeur modèle, où chaque classeur
est conçu de la même manière, les feuilles ont le même nom
que la plage à importer est la même, que tous tes classeurs
se retrouvent dans le même répertoire, Alors là, je peux te
proposer quelque chose. Pour faire cette macro, j'ai besoin :
a) adresse de la plage de cellules que tu veux importer
B ) nom de la feuille (en supposant qu'elle soit la même)
C ) Le chemin où se retrouve tes classeurs
(seuls les classeurs pertinents se retrouvent dans ce répertoire)
D ) Le lieux de leur destination, tu doit être plus précis
que "Dans les colonnes A:H." , Tu dis avoir
80 classeurs. De quelles façons doivent être réparties
dans 8 colonnes ?



"Yves"
je me suis rendu compte que ma question n'est pas correctement formulée...
En fait, dans [classeur1 feuil1], A3:A10 est une synthèse de cette feuil.
Je vais avoir environ 80 [classeur1 feuil1] par an.
[Classeur 2 feuil1] sera mon fichier "Bilan annuel". Ainsi en cliquant dans
mes fichiers [classeur1 feuil1] il faudrait pouvoir exporter mes "synthèses"
A3:A10 vers mon "Bilan annuel" [classeur 2 feuil1] Dans les colonnes A:H.
C'est pas tout à fait ce que j'exprimais la première fois. Désolé.
Je pensais à un bouton "EXPORT" dans les fichiers [classeur1 feuil1].
Si jamais vous avez d'autres manière de faire (peut être plus simple...)...
Sinon, j'ai essayé d'accéder à votre "dm-basedonnee.zip" mais je n'ai pas
réussi à le trouver sur excelabo.net ...

D'avance merci

PS: Si ce n'était pour une petite association sans budget, je passerai par
un service de developpement, mais, je doit me débrouiller. Pour
l'organisation des fichiers, les formules de calcul & co pas de soucis. Mais
ce fichu export... Seul, ça m'est impossible.

Yves

"michdenis" a écrit :

Je te propose plutôt ceci. Écrire dans un fichier c'est réalisable
mais c'est ce n'est pas si simple que ça. Tu dois passer par
ADO (activex data object). Si tu y tiens, tu peux aller sur le
Site internet de Misange http://www.excelabo.net tu vas
pouvoir télécharger quelques fichiers exemple dont celui-ci
que j'ai commis : dm-basedonnee.zip

'--------------------------------
Sub test()
Dim Chemin As String, Fichier As String
Dim wk As Workbook

'*******Variable à définir**************
Chemin = "C:UsersPowerUser"
Fichier = "AppelMacro1.xls"
'***************************************

Application.ScreenUpdating = False
Set wk = Workbooks.Open(Chemin & Fichier)
ThisWorkbook.Worksheets("Feuil1").Range("A3:A10").Copy
wk.Worksheets("Feuil1").Range("A3:H3").PasteSpecial xlPasteAll, , , True
Application.CutCopyMode = True
wk.Close True
End Sub
'--------------------------------



Yves
Le #18657981
Ok, j'ai êu quelques corrections à faire afin d'avoir un fichier modèle
définitif.
Si c'est plus simple, je suis partant...
Donc, nous avons effectivement un fichier modèle afin de toujours avoir tout
au même endroit. Pour le rangement des fichiers, l'idéal su été de pouvoir
les avoir en 2 dossiers du genre : dans le dossier FG il y aurait eu 1
dossier "FG en cours de traitement" et 1 autre "FG traitées"... Mais bon si
c'est pas possible, on s'arrangera, un tel fichier annuel nous soulagerait
tellement...

a) adresse de la plage de cellules que je veux importer :
Le fichier, sur la feuille qui s'appelle "Synthèse" je voudrais exporter les
cellules AJ10 à IU10. (soit 220 cellules, mais pour simplifier, j'ai ajouter
un tableau masqué sur la droite qui recherche se que nous avons à exporter.
Ainsi, les valeurs sont deja dans l'ordre...)

B ) nom de la feuille
Ces fichiers s'appellent "FG######" suivi de 6 chiffres variables (ex:
"FG010609")

C ) Le chemin où se retrouve tes classeurs
Ils seront donc tous dans "C:Documents and
SettingsyvescordonDesktopFG2009"

D ) Le lieux de leur destination
Dans notre futur Bilan annuel, sur la feuille "Base de Données" le lieu de
destination sera A10:HL10 pour l'export du premier fichier, A11:HL11 pour le
second ...
Mes données à exporter sont déjà classé. Ainsi, les données de la "première"
FG devrait migrer dans l'ordre. EX: AJ10 vers A10, AK10 vers B10 ... IU10
vers HL10. Pour la "seconde" FG, ex : AJ10 vers A11 (11 car la seconde ligne
du tableau bilan...) AK10 vers B11 ...
Etc.
Dans un soucis de sûreté, vu que le nombre de FG varié d'une année à
l'autre, J'ai mis pas mal de ligne (150 lignes) dans le tableau Bilan. La
zone d'arrivée de nos données est donc A10:HL159.

J'espère être suffisament explicite.
Merci encore.
Yves

"michdenis" a écrit :

Je te suggère de prendre ton problème par l'autre bout de la lorgnette.
Au lieu d'exporter vers ton fichier Bilan Annuel, pourquoi
ne pas importer tes données à partir de ton fichier
bilan annuel... selon c'est beaucoup plus simple.

Si tu travailles avec un classeur modèle, où chaque classeur
est conçu de la même manière, les feuilles ont le même nom
que la plage à importer est la même, que tous tes classeurs
se retrouvent dans le même répertoire, Alors là, je peux te
proposer quelque chose. Pour faire cette macro, j'ai besoin :
a) adresse de la plage de cellules que tu veux importer
B ) nom de la feuille (en supposant qu'elle soit la même)
C ) Le chemin où se retrouve tes classeurs
(seuls les classeurs pertinents se retrouvent dans ce répertoire)
D ) Le lieux de leur destination, tu doit être plus précis
que "Dans les colonnes A:H." , Tu dis avoir
80 classeurs. De quelles façons doivent être réparties
dans 8 colonnes ?



"Yves"
je me suis rendu compte que ma question n'est pas correctement formulée...
En fait, dans [classeur1 feuil1], A3:A10 est une synthèse de cette feuil.
Je vais avoir environ 80 [classeur1 feuil1] par an.
[Classeur 2 feuil1] sera mon fichier "Bilan annuel". Ainsi en cliquant dans
mes fichiers [classeur1 feuil1] il faudrait pouvoir exporter mes "synthèses"
A3:A10 vers mon "Bilan annuel" [classeur 2 feuil1] Dans les colonnes A:H.
C'est pas tout à fait ce que j'exprimais la première fois. Désolé.
Je pensais à un bouton "EXPORT" dans les fichiers [classeur1 feuil1].
Si jamais vous avez d'autres manière de faire (peut être plus simple...)...
Sinon, j'ai essayé d'accéder à votre "dm-basedonnee.zip" mais je n'ai pas
réussi à le trouver sur excelabo.net ...

D'avance merci

PS: Si ce n'était pour une petite association sans budget, je passerai par
un service de developpement, mais, je doit me débrouiller. Pour
l'organisation des fichiers, les formules de calcul & co pas de soucis. Mais
ce fichu export... Seul, ça m'est impossible.

Yves

"michdenis" a écrit :

> Je te propose plutôt ceci. Écrire dans un fichier c'est réalisable
> mais c'est ce n'est pas si simple que ça. Tu dois passer par
> ADO (activex data object). Si tu y tiens, tu peux aller sur le
> Site internet de Misange http://www.excelabo.net tu vas
> pouvoir télécharger quelques fichiers exemple dont celui-ci
> que j'ai commis : dm-basedonnee.zip
>
> '--------------------------------
> Sub test()
> Dim Chemin As String, Fichier As String
> Dim wk As Workbook
>
> '*******Variable à définir**************
> Chemin = "C:UsersPowerUser"
> Fichier = "AppelMacro1.xls"
> '***************************************
>
> Application.ScreenUpdating = False
> Set wk = Workbooks.Open(Chemin & Fichier)
> ThisWorkbook.Worksheets("Feuil1").Range("A3:A10").Copy
> wk.Worksheets("Feuil1").Range("A3:H3").PasteSpecial xlPasteAll, , , True
> Application.CutCopyMode = True
> wk.Close True
> End Sub
> '--------------------------------
>



michdenis
Le #18659631
Dans le fichier qui doit recevoir les résultats,
tu copies cette procédure dans un module standard.

Cette procédure a besoin de l'ajout d'une bibliothèque
Dans la fenêtre de l'éditeur de code / barre des menus /
outils / références / tu coches la bibliothèque suivante :
"Microsoft Activex Data Objects 2.x Librairy"

Attention, il se peut que le service de messagerie coupe
des lignes de code à des endroits inopportun...

'-------------------------------------------
Sub MaRequêteAvecADO()

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String, Rg As Range
Dim File As String, Ok As Integer
Dim Chemin As String, Plg As Range

NomFeuille = "Synthèse" 'A déterminer
Chemin = "C:Documents and SettingsyvescordonDesktopFG2009"
Set Plg = Range("AJ10:IU10") 'Plage à copier

'La requête qui sera exécutée ' `a déterminer
Requete = "SELECT * FROM [" & Feuille & "$" & Plg.Address(0, 0) & "]"

'établir la connection avec le fichier...
Set Conn = New ADODB.Connection

'Récupérer la liste des fichiers excel du répertoire.
File = Dir(Chemin & "*.xls")
Do While File <> ""
If ThisWorkbook.Name <> File Then
'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets("Base de Données")
If .Range("A10") = "" Then
Set Rg = .Range("A10")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
End If
End With
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;"""
'Exécution de la requête
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie le recordset vers la plage de destination
Rg.Resize(, Rst.Fields.Count).CopyFromRecordset Rst
'Fermeture du recordset
Rst.Close
'fermeture de la connextion avec le fichier
Conn.Close
End If
'Va au fichier suivant
File = Dir()
Loop
'Supprime de la mémoire vive, les objets créés.
Set Rst = Nothing: Set Conn = Nothing
Set Rg = Nothing: Set Plg = Nothing
End Sub
'---------------------------------------------




"Yves"
Ok, j'ai êu quelques corrections à faire afin d'avoir un fichier modèle
définitif.
Si c'est plus simple, je suis partant...
Donc, nous avons effectivement un fichier modèle afin de toujours avoir tout
au même endroit. Pour le rangement des fichiers, l'idéal su été de pouvoir
les avoir en 2 dossiers du genre : dans le dossier FG il y aurait eu 1
dossier "FG en cours de traitement" et 1 autre "FG traitées"... Mais bon si
c'est pas possible, on s'arrangera, un tel fichier annuel nous soulagerait
tellement...

a) adresse de la plage de cellules que je veux importer :
Le fichier, sur la feuille qui s'appelle "Synthèse" je voudrais exporter les
cellules AJ10 à IU10. (soit 220 cellules, mais pour simplifier, j'ai ajouter
un tableau masqué sur la droite qui recherche se que nous avons à exporter.
Ainsi, les valeurs sont deja dans l'ordre...)

B ) nom de la feuille
Ces fichiers s'appellent "FG######" suivi de 6 chiffres variables (ex:
"FG010609")

C ) Le chemin où se retrouve tes classeurs
Ils seront donc tous dans "C:Documents and
SettingsyvescordonDesktopFG2009"

D ) Le lieux de leur destination
Dans notre futur Bilan annuel, sur la feuille "Base de Données" le lieu de
destination sera A10:HL10 pour l'export du premier fichier, A11:HL11 pour le
second ...
Mes données à exporter sont déjà classé. Ainsi, les données de la "première"
FG devrait migrer dans l'ordre. EX: AJ10 vers A10, AK10 vers B10 ... IU10
vers HL10. Pour la "seconde" FG, ex : AJ10 vers A11 (11 car la seconde ligne
du tableau bilan...) AK10 vers B11 ...
Etc.
Dans un soucis de sûreté, vu que le nombre de FG varié d'une année à
l'autre, J'ai mis pas mal de ligne (150 lignes) dans le tableau Bilan. La
zone d'arrivée de nos données est donc A10:HL159.

J'espère être suffisament explicite.
Merci encore.
Yves

"michdenis" a écrit :

Je te suggère de prendre ton problème par l'autre bout de la lorgnette.
Au lieu d'exporter vers ton fichier Bilan Annuel, pourquoi
ne pas importer tes données à partir de ton fichier
bilan annuel... selon c'est beaucoup plus simple.

Si tu travailles avec un classeur modèle, où chaque classeur
est conçu de la même manière, les feuilles ont le même nom
que la plage à importer est la même, que tous tes classeurs
se retrouvent dans le même répertoire, Alors là, je peux te
proposer quelque chose. Pour faire cette macro, j'ai besoin :
a) adresse de la plage de cellules que tu veux importer
B ) nom de la feuille (en supposant qu'elle soit la même)
C ) Le chemin où se retrouve tes classeurs
(seuls les classeurs pertinents se retrouvent dans ce répertoire)
D ) Le lieux de leur destination, tu doit être plus précis
que "Dans les colonnes A:H." , Tu dis avoir
80 classeurs. De quelles façons doivent être réparties
dans 8 colonnes ?



"Yves" :

je me suis rendu compte que ma question n'est pas correctement formulée...
En fait, dans [classeur1 feuil1], A3:A10 est une synthèse de cette feuil.
Je vais avoir environ 80 [classeur1 feuil1] par an.
[Classeur 2 feuil1] sera mon fichier "Bilan annuel". Ainsi en cliquant dans
mes fichiers [classeur1 feuil1] il faudrait pouvoir exporter mes "synthèses"
A3:A10 vers mon "Bilan annuel" [classeur 2 feuil1] Dans les colonnes A:H.
C'est pas tout à fait ce que j'exprimais la première fois. Désolé.
Je pensais à un bouton "EXPORT" dans les fichiers [classeur1 feuil1].
Si jamais vous avez d'autres manière de faire (peut être plus simple...)...
Sinon, j'ai essayé d'accéder à votre "dm-basedonnee.zip" mais je n'ai pas
réussi à le trouver sur excelabo.net ...

D'avance merci

PS: Si ce n'était pour une petite association sans budget, je passerai par
un service de developpement, mais, je doit me débrouiller. Pour
l'organisation des fichiers, les formules de calcul & co pas de soucis. Mais
ce fichu export... Seul, ça m'est impossible.

Yves

"michdenis" a écrit :

> Je te propose plutôt ceci. Écrire dans un fichier c'est réalisable
> mais c'est ce n'est pas si simple que ça. Tu dois passer par
> ADO (activex data object). Si tu y tiens, tu peux aller sur le
> Site internet de Misange http://www.excelabo.net tu vas
> pouvoir télécharger quelques fichiers exemple dont celui-ci
> que j'ai commis : dm-basedonnee.zip
>
> '--------------------------------
> Sub test()
> Dim Chemin As String, Fichier As String
> Dim wk As Workbook
>
> '*******Variable à définir**************
> Chemin = "C:UsersPowerUser"
> Fichier = "AppelMacro1.xls"
> '***************************************
>
> Application.ScreenUpdating = False
> Set wk = Workbooks.Open(Chemin & Fichier)
> ThisWorkbook.Worksheets("Feuil1").Range("A3:A10").Copy
> wk.Worksheets("Feuil1").Range("A3:H3").PasteSpecial xlPasteAll, , , True
> Application.CutCopyMode = True
> wk.Close True
> End Sub
> '--------------------------------
>



Yves
Le #18662471
Excellent, merci.
J'avais un peu de temps, j'ai essayer sur une simulation depuis mon
portable, mais il est sous vista... Quelle merde ce truc. Je m'y ferrai
jamais...
J'essayerai donc début de semaine, dès que je croiserai mon PC de bureau,
heureusement que lui, est encore sous XP...
Je te tiens eu courant, mais merci déjà pour tous ça...
Yves
Le #18681961
Excellent,
Ca a marché du premier coup !!! J'avais peur de devoir bidouiller un peu non
à cause d'erreur éventuelle de ta part mais des miennes en effectuant le
truc... Excellent.
Par contre, comment je peux faire les mise à jour...
Je m'explique. J'ouvre mon bilan et execute ta super formule, j'importe
ainsi les 10 FG du dossier et mon fichier, en s'appuyant sur les import me
fait un Bilan annuel. Si 2 mois après, j'ai 5 FG de plus. J'ouvre mon Bilan
mais n'apparaissent que 10 FG. Or si je ré-excute la macro, ils me cherche 15
FG. J'ai donc un doublon des 10 premières FG...
Problème...
Si ca peux t'aider la premère valeur qu'on importe est toujours propre à la
FG auquelle elle appartient. Ainsi la valeur de AJ10 de la FG010101 est
unique et ne sera dans aucune autre FG.
michdenis
Le #18682581
la solution la plus simple, c'est d'effacer toute la plage de résultat
avant le début de chaque importation des données. L'importation se
fera à chaque fois sur l'ensemble des fichiers comme si c'était
la première fois. Ce cette manière, que des fichiers se soient ajoutés
ou que des modifications ont eu lieu sur des fichiers existants, tu es
toujours certain d'avoir une copie conforme de tes données au moment
de ton importation.

Dans la procédure soumise, j'ai encadré le code ajouté par des ******

'-------------------------------------------
Sub MaRequêteAvecADO()

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String, Rg As Range
Dim File As String, Ok As Integer
Dim Chemin As String, Plg As Range

NomFeuille = "Synthèse" 'A déterminer
Chemin = "C:Documents and SettingsyvescordonDesktopFG2009"
Set Plg = Range("AJ10:IU10") 'Plage à copier

'********Ajout - Suppression des données existantes****
With Worksheets("Base de Données")
.Range("A10:A" & Application.Max(10, _
.Range("A65356").End(xlUp)(2).Row)).Delete
End With
'*******************************************************

'La requête qui sera exécutée ' `a déterminer
Requete = "SELECT * FROM [" & Feuille & "$" & Plg.Address(0, 0) & "]"

'établir la connection avec le fichier...
Set Conn = New ADODB.Connection

'Récupérer la liste des fichiers excel du répertoire.
File = Dir(Chemin & "*.xls")
Do While File <> ""
If ThisWorkbook.Name <> File Then
'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets("Base de Données")
If .Range("A10") = "" Then
Set Rg = .Range("A10")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
End If
End With
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;"""
'Exécution de la requête
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie le recordset vers la plage de destination
Rg.Resize(, Rst.Fields.Count).CopyFromRecordset Rst
'Fermeture du recordset
Rst.Close
'fermeture de la connextion avec le fichier
Conn.Close
End If
'Va au fichier suivant
File = Dir()
Loop
'Supprime de la mémoire vive, les objets créés.
Set Rst = Nothing: Set Conn = Nothing
Set Rg = Nothing: Set Plg = Nothing
End Sub
'---------------------------------------------








"Yves"
Excellent,
Ca a marché du premier coup !!! J'avais peur de devoir bidouiller un peu non
à cause d'erreur éventuelle de ta part mais des miennes en effectuant le
truc... Excellent.
Par contre, comment je peux faire les mise à jour...
Je m'explique. J'ouvre mon bilan et execute ta super formule, j'importe
ainsi les 10 FG du dossier et mon fichier, en s'appuyant sur les import me
fait un Bilan annuel. Si 2 mois après, j'ai 5 FG de plus. J'ouvre mon Bilan
mais n'apparaissent que 10 FG. Or si je ré-excute la macro, ils me cherche 15
FG. J'ai donc un doublon des 10 premières FG...
Problème...
Si ca peux t'aider la premère valeur qu'on importe est toujours propre à la
FG auquelle elle appartient. Ainsi la valeur de AJ10 de la FG010101 est
unique et ne sera dans aucune autre FG.
Publicité
Poster une réponse
Anonyme