Bonjour
ma question a déjà du être posée mais j'arrive pas à retrouver dasn le forum
Voila ce que je souhaite faire:
Dasn une feuille. je souhaite récupérer des données d'un classeur fermé (
d'ou la connexion ADO)
Pour cela je voudrai écrire dasn une première cellule le chemin d'accès au
fichier xls; dans une seconde le nom de la feuille et enfin la plage que je
veux récupérer.
J'ai bien trouvé des exemple sur l'excellent Excelabo mais ca ne fonctionne
pas. etant totalement néophyte en ADO, est ce que quelqu'un pourrai m'aider
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FFO
Salut à toi Soit dans ton fichier de destination Feuil1 les différents paramètres pour la récupération des données : A1 = Adresse du document source (C:Chemin) B1 = Nom du document source sans le .xls C1 = Adresse de la 1° cellule à recopier (A1 par exemple) D1 = Adresse de la 2° cellule à recopier (B10 par exemple) Feuil2 la recopie des données Soit dans ton fichier source Feuil1 l'onglet portant les données à récupérer Le code :
For i = Range(Sheets("Feuil1").Range("C1")).Row To Range(Sheets("Feuil1").Range("D1")).Row For J = Range(Sheets("Feuil1").Range("C1")).Column To Range(Sheets("Feuil1").Range("D1")).Column Sheets("Feuil2").Cells(i, J) = ExecuteExcel4Macro("'" & Sheets("Feuil1").Range("A1") & "[" & Sheets("Feuil1").Range("B1") & ".xls]Feuil1'!" & Cells(i, J).Address(ReferenceStyle:=xlR1C1) & "") Next Next
Toutes les Feuil1 représentent l'Onglet qui portent les paramétres de récupération sauf pour la partie de d'instruction : ]Feuil1'!" qui représente la feuille source des données à récupérer
A actualiser donc les 2 Feuil1 et Feuil2 en fonction des noms d'onglets concernés
Celà devrait te convenir
Dis moi !!!
Salut à toi
Soit dans ton fichier de destination
Feuil1 les différents paramètres pour la récupération des données :
A1 = Adresse du document source (C:Chemin)
B1 = Nom du document source sans le .xls
C1 = Adresse de la 1° cellule à recopier (A1 par exemple)
D1 = Adresse de la 2° cellule à recopier (B10 par exemple)
Feuil2 la recopie des données
Soit dans ton fichier source
Feuil1 l'onglet portant les données à récupérer
Le code :
For i = Range(Sheets("Feuil1").Range("C1")).Row To
Range(Sheets("Feuil1").Range("D1")).Row
For J = Range(Sheets("Feuil1").Range("C1")).Column To
Range(Sheets("Feuil1").Range("D1")).Column
Sheets("Feuil2").Cells(i, J) = ExecuteExcel4Macro("'" &
Sheets("Feuil1").Range("A1") & "[" & Sheets("Feuil1").Range("B1") &
".xls]Feuil1'!" & Cells(i, J).Address(ReferenceStyle:=xlR1C1) & "")
Next
Next
Toutes les Feuil1 représentent l'Onglet qui portent les paramétres de
récupération sauf pour la partie de d'instruction : ]Feuil1'!" qui
représente la feuille source des données à récupérer
A actualiser donc les 2 Feuil1 et Feuil2 en fonction des noms d'onglets
concernés
Salut à toi Soit dans ton fichier de destination Feuil1 les différents paramètres pour la récupération des données : A1 = Adresse du document source (C:Chemin) B1 = Nom du document source sans le .xls C1 = Adresse de la 1° cellule à recopier (A1 par exemple) D1 = Adresse de la 2° cellule à recopier (B10 par exemple) Feuil2 la recopie des données Soit dans ton fichier source Feuil1 l'onglet portant les données à récupérer Le code :
For i = Range(Sheets("Feuil1").Range("C1")).Row To Range(Sheets("Feuil1").Range("D1")).Row For J = Range(Sheets("Feuil1").Range("C1")).Column To Range(Sheets("Feuil1").Range("D1")).Column Sheets("Feuil2").Cells(i, J) = ExecuteExcel4Macro("'" & Sheets("Feuil1").Range("A1") & "[" & Sheets("Feuil1").Range("B1") & ".xls]Feuil1'!" & Cells(i, J).Address(ReferenceStyle:=xlR1C1) & "") Next Next
Toutes les Feuil1 représentent l'Onglet qui portent les paramétres de récupération sauf pour la partie de d'instruction : ]Feuil1'!" qui représente la feuille source des données à récupérer
A actualiser donc les 2 Feuil1 et Feuil2 en fonction des noms d'onglets concernés
Celà devrait te convenir
Dis moi !!!
francois63000
Merci pour ta réponse.
Ca ne fonctionne pas très bien. parce que le fichier source est une fichier volumineux ( 30Mo)ca mouline donc pas mal. c'est pour ca que je voulais utiliser ADO. En plus comme je dois récupérer pas mal de données ( de quelques données à 4 colonnes complètes) il faudrait un truc très rapide.
hors il me semble que ta solution ouvre quand meme le fichier pour récupérer les données.
Merci quand meme d'avoir passer du temps sur mon problème
Merci pour ta réponse.
Ca ne fonctionne pas très bien. parce que le fichier source est une fichier
volumineux ( 30Mo)ca mouline donc pas mal. c'est pour ca que je voulais
utiliser ADO. En plus comme je dois récupérer pas mal de données ( de
quelques données à 4 colonnes complètes) il faudrait un truc très rapide.
hors il me semble que ta solution ouvre quand meme le fichier pour récupérer
les données.
Merci quand meme d'avoir passer du temps sur mon problème
Ca ne fonctionne pas très bien. parce que le fichier source est une fichier volumineux ( 30Mo)ca mouline donc pas mal. c'est pour ca que je voulais utiliser ADO. En plus comme je dois récupérer pas mal de données ( de quelques données à 4 colonnes complètes) il faudrait un truc très rapide.
hors il me semble que ta solution ouvre quand meme le fichier pour récupérer les données.
Merci quand meme d'avoir passer du temps sur mon problème
FFO
Rebonjours à toi Le temps de traitement est lié à l'importance de la plage et non à celui du fichier Le code utilise 2 boucles pour récupérer donnée par donnée car justement le fichier source reste fermé contrairement à ce que tu penses Si on pouvais l'ouvrir des solutions plus rapide peuvent être utilisées comme celle-ci :
sont à mettre en une seule ligne dans l'éditeur VBA
N'est ce pas mieux ainsi Dis moi !!!!
Rebonjours à toi
Le temps de traitement est lié à l'importance de la plage et non à celui du
fichier
Le code utilise 2 boucles pour récupérer donnée par donnée car justement le
fichier source reste fermé contrairement à ce que tu penses
Si on pouvais l'ouvrir des solutions plus rapide peuvent être utilisées
comme celle-ci :
Rebonjours à toi Le temps de traitement est lié à l'importance de la plage et non à celui du fichier Le code utilise 2 boucles pour récupérer donnée par donnée car justement le fichier source reste fermé contrairement à ce que tu penses Si on pouvais l'ouvrir des solutions plus rapide peuvent être utilisées comme celle-ci :
sont à mettre en une seule ligne dans l'éditeur VBA
N'est ce pas mieux ainsi Dis moi !!!!
lSteph
Bonjour,
sans macro, sans ADO, une simple formule dans une feuille vide suffit de sélectionner une zone conforme à ce que tu veux piquer exemple 4 colonnes sur 28450 lignes:
Ca ne fonctionne pas très bien. parce que le fichier source est une fic hier volumineux ( 30Mo)ca mouline donc pas mal. c'est pour ca que je voulais utiliser ADO. En plus comme je dois récupérer pas mal de données ( de quelques données à 4 colonnes complètes) il faudrait un truc très rapide.
hors il me semble que ta solution ouvre quand meme le fichier pour récu pérer les données.
Merci quand meme d'avoir passer du temps sur mon problème
Bonjour,
sans macro, sans ADO, une simple formule dans une feuille vide
suffit de sélectionner une zone conforme à ce que tu veux piquer
exemple 4 colonnes sur 28450 lignes:
On 19 nov, 13:33, francois63000
<francois63...@discussions.microsoft.com> wrote:
Merci pour ta réponse.
Ca ne fonctionne pas très bien. parce que le fichier source est une fic hier
volumineux ( 30Mo)ca mouline donc pas mal. c'est pour ca que je voulais
utiliser ADO. En plus comme je dois récupérer pas mal de données ( de
quelques données à 4 colonnes complètes) il faudrait un truc très rapide.
hors il me semble que ta solution ouvre quand meme le fichier pour récu pérer
les données.
Merci quand meme d'avoir passer du temps sur mon problème
sans macro, sans ADO, une simple formule dans une feuille vide suffit de sélectionner une zone conforme à ce que tu veux piquer exemple 4 colonnes sur 28450 lignes:
Ca ne fonctionne pas très bien. parce que le fichier source est une fic hier volumineux ( 30Mo)ca mouline donc pas mal. c'est pour ca que je voulais utiliser ADO. En plus comme je dois récupérer pas mal de données ( de quelques données à 4 colonnes complètes) il faudrait un truc très rapide.
hors il me semble que ta solution ouvre quand meme le fichier pour récu pérer les données.
Merci quand meme d'avoir passer du temps sur mon problème