Fusionner une seule feuille issue de 143 fichiers excel sur un fichier

  • Initiateur de la discussion Initiateur de la discussion HEG
  • 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 !

H

HEG

Guest
Bonjour à tous,

Pour analyser des données, je dois concatener une feuille de "résultats" de calcul qui provient de 143 fichiers différents. 😕
La complexité est que les fichiers sont assez lourds et je ne sais pas s'il est possible de récupérer les feuilles sans ouvrir les fichiers.

Merci beaucoup pour votre aide
 
Re : Fusionner une seule feuille issue de 143 fichiers excel sur un fichier

Merci kiki,
Le probleme est qu'aucune macro ne fonctionne avec mes fichiers, car je ne veux prendre qu'une des 4 feuilles des fichiers. Et les macros proposées sur le site fusionnent l'intégralité des fichiers.
 
Re : Fusionner une seule feuille issue de 143 fichiers excel sur un fichier

Bonjour HEG et bienvenue sur le forum
Salut Kiki29 😉

Tu peux essayer ce code
VB:
Sub ImportDonnées()
  Dim FSO 'As Scripting.FileSystemObject
  Dim SourceFolder 'As Scripting.Folder
  Dim FileItem  'As Scripting.File
  Dim SPath As String
  ' Définir le répertoire source
  SPath = "D:\Excel-Downloads"
  ' Créer l'instance FSO
  Set FSO = CreateObject("Scripting.FileSystemObject")
  ' Définir le dossier source de l'instance
  Set SourceFolder = FSO.GetFolder(SPath)
  ' Pour chaque fichier contenu dans ce dossier
  For Each FileItem In SourceFolder.Files
    ' On consolide les données
    ConsoDatas FileItem.Path, "NomFeuilleSource", "NomFeuilleCible"
  Next FileItem
End Sub
Public Sub ConsoDatas(NomFichier$, FeuilleSource$, FeuilleCible$)
' Va chercher dans le classeur NomFichier (sans l'ouvrir) les données
' de la feuille FeuilleSource et les copie dans la feuille FeuilleCible
' du classeur actif, à la suite des données (éventuellement) déjà présentes.
' (La ligne d'entêtes de FeuilleSource n'est pas importée)
' inspiré de Rob Bovey, mpep
' nécessite une référence à la librairie : Microsoft ActiveX Data Object 2.x Library
  Dim rsData As ADODB.Recordset
  Dim szConnect As String
  Dim szSQL As String
  Dim Li&, FeuilleDest
  ''' Crée la chaîne de connexion
  szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
              "Data Source=" & NomFichier & ";" & _
              "Extended Properties=Excel 8.0;"
  ' La requête est basée sur le nom de la feuille. Ce nom
  ' doit se terminer par un $ et doit être entouré de crochets droits.
  szSQL = "SELECT * FROM [" & FeuilleSource & "$];"
  Set rsData = New ADODB.Recordset
  rsData.Open szSQL, szConnect, adOpenForwardOnly, _
              adLockReadOnly, adCmdText
  'où envoyer les données :
  Set FeuilleDest = ActiveWorkbook.Sheets(FeuilleCible)
  Li = FeuilleDest.Range("A" & Rows.Count).End(xlUp).Row + 1
  'envoi sur la première ligne vide
  If Not rsData.EOF Then
    FeuilleDest.Range("A" & Li).CopyFromRecordset rsData
  Else
    'si la source était vide...
    MsgBox "Aucun enregistrement renvoyé.", vbCritical
  End If
  ''' On nettoie pour finir...
  rsData.Close
  Set rsData = Nothing
End Sub

A+
 
- 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

Retour