Extraire des données depuis plusieurs fichiers sans les ouvrir

seb2

XLDnaute Nouveau
Bonjour à tous,

J'aurais besoin d'aide pour faire une macro.
Le but est d'extraire des données depuis plusieurs fichier xls regroupés dans un dossier puis coller ces donnes à la suite dans un nouveau fichier.

La macro doit aller chercher le ou les fichiers dans un dossier nommé "E:\Utiles donnée"dont le nom contient "Y09" ou "Z08" ou "X21" ensuite aller à l'onglet "données graphe" puis rechercher et copier toutes les lignes contenant "G3" ; "G2" ; "Y35"
Toutes ces lignes doivent être collées à la suite dans un nouveau fichier appelé "extraction"

Le chemin du dossier, le nom de l'onglet du fichier et les "Y093 ; "Z08" doivent être parametrable

Ci-joint un fichier d'exemple (il s'agit du fichier qui contient les données source "Z08") pour que ce soit plus claire.

Merci d’avance
 

Pièces jointes

  • données à extraire Z08.zip
    18.5 KB · Affichages: 208

Guiv

XLDnaute Occasionnel
Re : Extraire des données depuis plusieurs fichiers sans les ouvrir

Bonjour,
As-tu jeté un œil sur les 5 fils tout en bas de la page???
Sinon, c'est je crois la méthode "ADO"... ou boucler sur les classeurs pour les ouvrir puis les fermer...
Cordialement,
Guiv
 

seb2

XLDnaute Nouveau
Re : Extraire des données depuis plusieurs fichiers sans les ouvrir

Bonjour à tous,

Merci, je n'ai rien trouvé qui corresponde à mon besoin dans les discussions précédentes. Et vu que j'ai pas mal de fichier à analyser régulièrement, je me dis qu'une macro serait la bonne solution. Je ne connais pas l'ADO et pas assez bien le vba ....

Merci de votre aide
 

Staple1600

XLDnaute Barbatruc
Re : Extraire des données depuis plusieurs fichiers sans les ouvrir

Bonjour

Un moyen possible et répandu du grand John W.
Code:
Private Function GetValue(path, file, sheet, ref)
'   Retrieves a value from a closed workbook
    Dim arg As String
'   Make sure the file exists
    If Right(path, 1) <> "\" Then path = path & "\"
    If Dir(path & file) = "" Then
        GetValue = "File Not Found"
        Exit Function
    End If
'   Create the argument
    arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
      Range(ref).Range("A1").Address(, , xlR1C1)
'   Execute an XLM macro
    GetValue = ExecuteExcel4Macro(arg)
End Function
Code:
Sub TestGetValue2()
      p = "c:\XLFiles\Budget"
    f = "Budget.xls"
    s = "Sheet1"
    Application.ScreenUpdating = False
    For r = 1 To 100
        For c = 1 To 12
            a = Cells(r, c).Address
            Cells(r, c) = GetValue(p, f, s, a)
        Next c
    Next r
    Application.ScreenUpdating = True
End Sub

Voir également cette mine d'information
 
Dernière édition:

seb2

XLDnaute Nouveau
Re : Extraire des données depuis plusieurs fichiers sans les ouvrir

Bonjour à tous,

Merci pour les 2 programmes, mais comment j'indique le fichier excel et comment je définis les paramètres, je suis novice ...

Merci d'avance
 

Staple1600

XLDnaute Barbatruc
Re : Extraire des données depuis plusieurs fichiers sans les ouvrir

Re

En adapant à ta problématique , cela pourrait ressembler pour un début d'exemple
(attention , je n'ai pas testé pour le moment"

Code:
Sub TestGetValue2()
      p = "E:\Utiles donnée"
    f = "*YB*.xls"
    s = "données graphe"
Application.ScreenUpdating = False
  Cells(1, 2) = GetValue(p, f, s, "F1")
  Cells(2, 2) = GetValue(p, f, s, "F2")
Application.ScreenUpdating = True
End Sub
 

seb2

XLDnaute Nouveau
Re : Extraire des données depuis plusieurs fichiers sans les ouvrir

Bonjour tous,

Et merci pour vos conseils.
en cherchant sur le forum j'ai trouvé ce zip, serait-il possible de modifier la macro pour :
- aller chercher les données seulement dans les noms de fichiers contenant 1 ou 2 ou Z08 par exemple
- extraire toutes les lignes de la feuil " contenant " "G3" ; "G2" ; "Y35"
Ci-joint un petit exemple

Merci d'avance
Seb
 

Pièces jointes

  • ImporterDepuisPlusieursClasseursV2.zip
    33.7 KB · Affichages: 555

jodo

XLDnaute Nouveau
Re : Extraire des données depuis plusieurs fichiers sans les ouvrir

Bonjour à tous,

Je suis nouveau sur le forum.

Je suis novice et j'ai les mêmes besoin que Seb2.
Est-il possible de faire une macro qui va copier sur une feuille xls unique un ensemble d'onglet (l'onglet s'appelle par exemple "feuil1" ; les données vont jusqu'à la ligne 1000) à partir de plusieurs fichiers sans les ouvrir (les fichiers sont tous dans le même dossier.)
Voir le fichier zip de seb2

Merci

Jodo
 

seb2

XLDnaute Nouveau
Re : Extraire des données depuis plusieurs fichiers sans les ouvrir

Bonjour à tous,

Merci Staple1600

Serait-il possible de modifier la macro ci-dessous pour lister la plage A1: L100 sur tous les fichiers contenu dans le répertoire

D'avance merci

Private Function GetValue(path, file, sheet, ref)
' Retrieves a value from a closed workbook
Dim arg As String
' Make sure the file exists
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
' Execute an XLM macro
GetValue = ExecuteExcel4Macro(arg)
End Function

Sub TestGetValue2()
p = "E:\Utiles xls\Macro\test"
f = "aaa.xls"
s = "feuil1"
Application.ScreenUpdating = False
For r = 1 To 100
For c = 1 To 12
a = Cells(r, c).Address
Cells(r, c) = GetValue(p, f, s, a)
Next c
Next r
Application.ScreenUpdating = True
End Sub
 

Sheldor

XLDnaute Occasionnel
Supporter XLD
Re : Extraire des données depuis plusieurs fichiers sans les ouvrir

bonjour,
je ne sais pas si je peux continuer sur ce post ou s'il est préférable d'en créer, mes excuses par avance si j'ai pris la mauvaise option.

je cherche à récupérer des données dans des classeurs fermés (et sans les ouvrir!) mais protégés par un mot de passe. Je me demandais si la fonction géniale citée peut inclure le mot de passe:
Private Function GetValue(path, file, sheet, ref)
' Retrieves a value from a closed workbook
Dim arg As String
' Make sure the file exists
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
' Execute an XLM macro
GetValue = ExecuteExcel4Macro(arg)
End Function

grand grand merci
nico
 

Discussions similaires

Réponses
13
Affichages
508

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado