XL 2010 LIRE DANS FICHIERS FERMES

micheldu52

XLDnaute Occasionnel
Bonjour,

Si quelqu'un peut me mettre sur la piste (VBA ou pas)... ce serait parfait!

La question est la suivante :

Soit un Fichier, disons, maitre.xlsx, et des fichiers esclave1.xlsx, esclave2.xlsxl.... esclave100.xlsx

Chacun à des onglets du même nom, disons que les onglets s'appellent "infos"
Chaque fichier esclave1.... esclave 100 dans son onglet infos à une information spécifique qui figure dans chaque fichier en cellule B2

Comment, dans le fichier maitre puis je lire SANS LES OUVRIR:
1) les informations figurant en B2 de l'onglet infos dans, sur choix proposé, le fichier esclave5.xlsx (par exemple, si le choix s'est porté sur 5)
2) lire toutes les infos de B2 de chaque onglet infos de chaque esclave1... 100 et les reporter dans le fichier maitre dans un onglet "retour" avec le B2 de esclave 1 en C1, le B2 de esclave 2 en C2, le B2 de esclave xy en Cxy

Je galère un peu... (j'arrive à lire telle info dans tel fichier, mais la généralisation me résiste...)

Si je ne suis pas clair je peux déposer des fichiers maitre et 2 esclaves si ca peut aider.

Si vous me donnez le déblocage de cela, je saurai l'adapter à un cas de figure en réalité nettement plus complexe, mais c'est ce point làqui me coince acrtuellement...

Grand merci de m'avoir lu et de votre aide...
Bien cordialement,

Michel
 
Solution
Fichier (2) pour répondre au nouveau problème du post #3 avec cette macro :
VB:
Sub Import()
Dim chemin$, fichier$, feuille$, P As Range, ncol%, resu$(), n&, form$, col%
chemin = ThisWorkbook.Path & "\" 'dossier à adapter
fichier = Dir(chemin & "F*.xlsx") '1er fichier du dossier
feuille = "Infos" 'nom des feuilles sources, à adapter
Set P = [B2:AZ2] 'plage à copier
ncol = P.Count
With Feuil1 'CodeName, à adapter
    ReDim resu(1 To .Rows.Count, 1 To ncol) 'tableau VBA, plus rapide
    While fichier <> ""
        If UCase(fichier) Like "F###*" Then
            n = n + 1
            form = "='" & chemin & "[" & fichier & "]" & feuille & "'!"
            For col = 1 To ncol
                resu(n, col) = form & P(col).Address 'formule de...

patricktoulon

XLDnaute Barbatruc
re
bonjour a tous
@job75 bien vu
puisque par variable tableau j'ai pensé qu'avoir directement le résultat était plus rapide mais non
c'est quasiment pareil
mon test
VB:
Sub Import2()
    Dim Chemin$, fichier$, feuille$, P As Range, ncol%, resu$(), n&, form$, col%
    Chemin = ThisWorkbook.Path & "\"    'dossier à adapter
    fichier = Dir(Chemin & "F*.xlsx")    '1er fichier du dossier
    feuille = "Infos"    'nom des feuilles sources, à adapter
    Set P = [B2:AZ2]    'plage à copier
    ncol = P.Count
    ReDim resu(1 To Rows.Count, 1 To ncol)    'tableau VBA, plus rapide

    While fichier <> ""
        If UCase(fichier) Like "F###*" Then
            n = n + 1
            form = "'" & Chemin & "[" & fichier & "]" & feuille & "'!"
            For col = 1 To ncol
               ' Debug.Print form & P(col).Address(, , xlR1C1)    'formule de liaison
                resu(n, col) = ExecuteExcel4Macro(form & P(col).Address(, , xlR1C1))    'formule de liaison
            Next
        End If
        fichier = Dir    'fichier suivant
    Wend
    Application.ScreenUpdating = False
    If n Then
        With Feuil1.[c1].Resize(n, ncol)
            .Resize(.Parent.UsedRange.Rows.Count).Clear
            .Value = resu
            .Interior.Color = vbYellow
            .Borders.Weight = xlHairline    'bordures
            .EntireColumn.AutoFit
        End With
    End If
End Sub
 

Discussions similaires

Haut Bas