Récupération de données de plusieurs classeurs

  • Initiateur de la discussion Initiateur de la discussion Riri
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R

Riri

Guest
Bonsoir le Forum ,

la macro jointe permet de lister tous les classeurs d'un répertoire et récupère les données de la cellule A1(Feuil1) de chaque fichier sans l'ouvrir.

Macro de MichelXLD que je remercie au passage.

Ce que je n'arrive pas à faire , c'est récupérer plusieurs lignes sur chaques classeurs.De la première ligne à la dernière ligne non vide .

Exemple : Récupérer la ligne 5 , 6 , 7 , ect ..... . colonnes A , B , C , D , E de Chaques classeurs .

Merci pour votre Aide et bonne soirée à vous .

Eric . D

'Macro de MichelXLD
Sub chercheFichiersFermesV03()
Dim X As Integer, nbFichiers As Integer, Y As Integer
Dim Tableau() As String
Dim Direction As String

Application.ScreenUpdating = False
Direction = Dir('C:\\Documents and Settings\\michel\\dossier\\general\\excel\\*.xls') 'adapter chemin repertoire

Do While Len(Direction) > 0
nbFichiers = nbFichiers + 1
ReDim Preserve Tableau(1 To nbFichiers)
Tableau(nbFichiers) = Direction
Direction = Dir()
Loop

If nbFichiers > 0 Then
For X = 1 To nbFichiers
If Tableau(X) <> ThisWorkbook.Name Then
Y = Y + 1
With ActiveSheet.Cells(Y, 1)
.Formula = '='C:\\Documents and Settings\\michel\\dossier\\general\\excel\\[' & Tableau(X) & ']Feuil1' & ''!' & 'A1'
.Value = .Value
End With
End If
Next X
End If

Application.ScreenUpdating = True
End Sub
 
Salut Riri,

L'idéal c'est de faire une requête SQL via ADO sur le classeur. Ca revient en fait à utiliser les fichiers XL comme si c'était des bases de données genre Access. Dans ce cas pas besoin de les ouvrir.

Mes souvenirs ne sont plus très frais, mais en gros voilà ce qu'il faut faire:

1. ajouter dans les références Microsoft ActiveX Data Object 2.x Library' afin de pouvoir utiliser les objets ADO.

2. Ensuite le bout de code suivant
Code:
Sub GetDataFromWorkbooks(chemin_et_nomdufichier As String, MaFeuilleDestination As String)
Dim oRec As ADODB.Recordset
Dim lsDSN As String
lsDSN = 'Provider=Microsoft.Jet.OLEDB.4.0;' & _
        'Data Source=' & chemin_et_nomdufichier & ';' & _
        'Extended Properties=''Excel 8.0;HDR=Yes;IMEX=1'''
Set oRec = New ADODB.Recordset
With oRec
    .Open Source:='SELECT ...' & vbCr & _
                  'FROM ...' & vbCr & _
                  'WHERE ... & vbCr & _
                  'ORDER BY ...', ActiveConnection:=lsDSN
    worksheets(MaFeuilleDesination).Cells(x, y).CopyFromRecordset oRec
    .Close
End With
Set oRec = Nothing
End Sub

Ce bout de code à arranger à ta sauce:
- passer les paramètres de destination de la requête genre Nom de la feuille de destination, range de destination, etc...
- déterminer les éléments de la requête SQL (y des clauses WHERE et ORDER BY, mais elles sont facultatives)

Bon j'ai pas le temps d'aller plus loin aujourd'hui, mais _Thierry ou une autre star 😉 du forum pourra peut-être t'en dire un peu plus.

NB.: c'est pour moi la 'meilleure' solution, mais d'autre en ont peut-être de 'meilleure'.
 
Bonsoir le Forum et MrExcel ,

Je répond un peu tardivement car je ne suis pas allée sur le net depuis quelques jours.(Travail oblige)
Merci pour ta réponse MrExcel , mais la méthode ADO est trop complexe pour moi.
Ne pourrais t-on pas adapter une boucle pour récupérer les ligne de chaques fichiers dans la macro de MichelXLD.
Si quelqu'un pouvais m'aider ça serais sympa car moi j'ai essayé mais je ni arrive pas.

Encore merci pour vos réponses .

@ + Eric D et bonne soirée à vous.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
7
Affichages
163
Retour