Juxtaposer vertic. tables variables dans fichiers & sheets différents

Bonjour,

J'aurais besoin de votre support pour voir quelles seraient les options possibles pour résoudre le problème suivant ,

  • J'aimerais "consolider", ou plutôt concatener / juxtaposer verticalement plusieurs tableaux Excels.
  • Ces tableaux ont tous la même structure et le même nombre de colonnes, mais... le nombre de lignes est variable
  • Autre difficulté, ces tableaux sont tous dans des fichiers Excels différents, et au sein de chaque Excel dans des sheets différentes
  • Le nombre de "sheets" contenant ces tableaux est déterminé et ne changera plus, ainsi que le nom des sheets

Je précise que ne sais pas programmer en VBA mais j'ai déjà programmé, et je me demandais avant de me lancer dans tout codage si le problème ci-dessous ne pouvait être solutionné que par du coding, ou si d'autres solutions comme des macros ou autre pourraient convenir.

Si la solution passe par du VBA, je ne demande pas la solution mais peut être un peu de guidage pour pouvoir ensuite me renseigner par moi même. Par exemple les quelques fonctions qui pourraient m'aider, ou comment vous procéderiez .

Je ne suis pas expert donc je viens consulter vos lumières

Un grand merci d'avance pour votre aide !

Michel

'Bonjour,

Voici un exemple,

Avant d 'exécuter la macro, n'oublie pas de modifier les lignes qui ont un commentaire " à adapter "

et d'activer la référence: Microsoft ActiveX Data Objects xx Library -->au menu vba, Outils, Référence

Sub Read_File_xlsx()
Dim Repertoire As String, Fichier As String, Feuille As String, AddrLire As String
Dim Ligne As Long, oFile As Object

Sheets.Add After:=Sheets(Sheets.Count)  'à adapter

Repertoire = "C:\Users\isabelle\Documents\Test1"  'à adapter

Set fso = CreateObject("Scripting.FileSystemObject")
Set sfofolder = fso.GetFolder(Repertoire)
NomFeuille = Array("Feuil1", "Feuil2") 'à adapter

 For Each oFile In sfofolder.Files
    If Right(oFile, 5) = ".xlsx" Then  'à adapter

        Set Cnn = New ADODB.Connection

        '--- Connexion ---
        With Cnn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
        & oFile & ";Extended Properties=""Excel 12.0;HDR=NO;"""
        .Open
        End With

        '--- récupérer les données --
        For i = LBound(NomFeuille) To UBound(NomFeuille)
            Set rs = Cnn.Execute("SELECT * FROM [" & NomFeuille(i) & "$" & "]")
            If i = 0 Then
                For iCols = 0 To rs.Fields.Count - 1
                    Cells(1, iCols + 1).Value = rs.Fields(iCols).Name
                Next iCols
            End If

            Cells(Ligne, "A").CopyFromRecordset rs
            rs.Close
            Ligne = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
        Next i
    End If
 Next oFile
Cnn.Close
Set rs = Nothing
Set Cnn = Nothing
End Sub

Hello,

Merci beaucoup ! c'est bien plus que de simples conseils !

Sorry pour le timing de ma réponse.. pas vu direct la réponse, un peu distrait ...

Je teste ça et encore merci !

Rechercher des sujets similaires à "juxtaposer vertic tables variables fichiers sheets differents"