Récupération des données de plusieurs fichiers d'un même dossier

nainfa

XLDnaute Junior
Bonjour le forum,

Tout d’abord, un grand merci à ceux qui prendront la peine de me lire.

J’utilise Microsoft Office Professionnel Plus 2010. Ma version est la 14.0.4760.1000 (32 bits)

Dans mon exemple, j’ai 3 fichiers (ce nombre est susceptible d’augmenter ou de diminuer) appelés fichier1 ; fichier2 ; fichier3 (sans surprise, ces noms de ces fichiers ne sont que des exemples). On va dire qu’ils sont situés au chemin d’accès suivant : C:\Users\Utilisateur\Desktop\dossier test

Ces fichiers contiennent chacun des données dans les cellules suivantes :
- feuille 1 A1 C6 F5
- feuille 2 A4 E6 H6

Dans un nouveau fichier (que j’ai appelé « fichier à obtenir), je cherche à avoir une macro qui va aller dans chaque fichier excel du « dossier test » pour récupérer le nom de fichier et les données et me les copier sous la forme suivante :

Colonne A : nom du fichier
Colonne B : valeur de la cellule A1 de la feuille 1
Colonne C : valeur de la cellule C6 de la feuille 1
Colonne D : valeur de la cellule F5 de la feuille 1
Colonne E : valeur de la cellule A4 de la feuille 2
Colonne F : valeur de la cellule E6 de la feuille 2
Colonne G : valeur de la cellule H6 de la feuille 2

Je cherche à avoir une ligne par fichier, sachant que la ligne 1 doit rester inchangée (elle contiendra des titres).

J’espère que mes explications sont claires. Mais si ce n’est pas le cas, n’hésitez pas à me poser toutes les questions que vous avez. Je joins un exemple au topic.

Mes recherches de sujets similaires sont restées infructueuses mais si vous en avez, n'hésitez pas à me donner les liens.

Bonne journée à tous,

Guillaume / Nainfa
 

Pièces jointes

  • exemple compressé.zip
    25.8 KB · Affichages: 56

kjin

XLDnaute Barbatruc
Re : Récupération des données de plusieurs fichiers d'un même dossier

Bonjour,
Je ne lis pas le xlsx...
Une façon simple à partir des éléments fournis...
Code:
Sub transfert()
i = 2
Rep = "C:\Users\Utilisateur\Desktop\dossier test\"
f = Dir(Rep & "*.xlsx")
Do While f <> ""
    With ActiveSheet
        .Cells(i, 1) = f
        .Cells(i, 2).Formula = "='" & Rep & "[" & f & "]" & "Feuil1'!A1"
        .Cells(i, 3).Formula = "='" & Rep & "[" & f & "]" & "Feuil1'!C6"
        .Cells(i, 4).Formula = "='" & Rep & "[" & f & "]" & "Feuil1'!F5"
        .Cells(i, 5).Formula = "='" & Rep & "[" & f & "]" & "Feuil2'!A4"
        .Cells(i, 6).Formula = "='" & Rep & "[" & f & "]" & "Feuil2'!E6"
        .Cells(i, 7).Formula = "='" & Rep & "[" & f & "]" & "Feuil2'!H6"
        With .Rows(i).Cells
            .Value = .Value
        End With
        i = i + 1
    End With
    f = Dir()
Loop
End Sub
...sinon voir ADO
A+
kjin
 

Theze

XLDnaute Occasionnel
Re : Récupération des données de plusieurs fichiers d'un même dossier

Bonjour,

Teste ce qui suit en ayant d'abords adapter le chemin des classeurs.
La proc utilise en premier des formule pour récupérer les valeurs puis ensuite, ne conserve que ces valeurs :
Code:
Sub Recup()

    Dim Fichier As String
    Dim Chemin As String
    Dim I As Integer
    
    'adapter le chemin où se trouvent les classeurs
    Chemin = "D:\dossier test\"
    
    'récupère tous les classeurs Excel .xlsx (pas les autres, donc à adapter)
    Fichier = Dir(Chemin & "*.xlsx")
    
    'évite les entêtes
    I = 1
    
    'boucle sur tous les classeurs afin de récupérer les valeurs dans la feuille 1 ("feuille 1") et la feuille 2 ("Feuil2")
    'adapter le nom des feuille
    Do While Fichier <> ""
        
        I = I + 1
        'récupère les valeurs par formules
        
        Range("A" & I).Value = Fichier
        Range("A" & I).Offset(0, 1).Formula = "='" & Chemin & "[" & Fichier & "]feuille 1'!A1"
        Range("A" & I).Offset(0, 2).Formula = "='" & Chemin & "[" & Fichier & "]feuille 1'!C6"
        Range("A" & I).Offset(0, 3).Formula = "='" & Chemin & "[" & Fichier & "]feuille 1'!F4"
        
        Range("A" & I).Offset(0, 4).Formula = "='" & Chemin & "[" & Fichier & "]feuille 2'!A4"
        Range("A" & I).Offset(0, 5).Formula = "='" & Chemin & "[" & Fichier & "]feuille 2'!E6"
        Range("A" & I).Offset(0, 6).Formula = "='" & Chemin & "[" & Fichier & "]feuille 2'!H3"
        
        'et ne garde que les valeurs
        Range("A" & I).Offset(0, 1).Value = Range("A" & I).Offset(0, 1).Value
        Range("A" & I).Offset(0, 2).Value = Range("A" & I).Offset(0, 2).Value
        Range("A" & I).Offset(0, 3).Value = Range("A" & I).Offset(0, 3).Value
        
        Range("A" & I).Offset(0, 4).Value = Range("A" & I).Offset(0, 4).Value
        Range("A" & I).Offset(0, 5).Value = Range("A" & I).Offset(0, 5).Value
        Range("A" & I).Offset(0, 6).Value = Range("A" & I).Offset(0, 6).Value
        
        'fichier suivant
        Fichier = Dir
           
    Loop
    
End Sub

Hervé.
 

job75

XLDnaute Barbatruc
Re : Récupération des données de plusieurs fichiers d'un même dossier

Bonjour à tous,

Ne pouvant ouvrir les fichiers .xlsx, kjin s'est fié à :

Ces fichiers contiennent chacun des données dans les cellules suivantes :
- feuille 1 A1 C6 F5
- feuille 2 A4 E6 H6

alors que dans ces fichiers il s'agit de :

- feuille 1 A1 C6 F4
- feuille 2 A4 E6 H3

Juste pour remettre les pendules à l'heure :cool:

A+
 

Theze

XLDnaute Occasionnel
Re : Récupération des données de plusieurs fichiers d'un même dossier

Re,

Comme kjin ne peut pas lire les .xlsx il ne pouvait tombé autrement puisque Nainfa nous dit :
Ces fichiers contiennent chacun des données dans les cellules suivantes :
- feuille 1 A1 C6 F5
- feuille 2 A4 E6 H6
et qu'en fait, l'adresse des cellules sont en partie fausse !
Il aurait put deviner que "feuille 1" était "feuille 1" et non "Feuil1" (je me demande comment :confused: puisque moi j'ai eu un plantage avec Feuil1 et Feuil2 :) pas fais gaffe:( ) avant de voir que les feuilles se nommaient "feuille 1" et "feuille 2"
Bon trêve de plaisanterie, nos proc sont quasiment identiques, il a donc plus de mérite que moi qui peut ouvrir les .xlsx

Bonne soirée à tout le monde.

Hervé
 

nainfa

XLDnaute Junior
Re : Récupération des données de plusieurs fichiers d'un même dossier

Bonjour à tous,

Merci pour vos codes, qui correspondent effectivement bien à mes besoins.

J'ai pris celui de theze en changeant la fin pour ne garder que les valeurs par ceci :

Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Voilà voilà !

Guillaume / Nainfa
 

nainfa

XLDnaute Junior
Re : Récupération des données de plusieurs fichiers d'un même dossier

Avec ma demande d'origine, aucune, mais c'est ce que Theze voulait avec ce code ci, non?

Range("A" & I).Offset(0, 1).Value = Range("A" & I).Offset(0, 1).Value
Range("A" & I).Offset(0, 2).Value = Range("A" & I).Offset(0, 2).Value
Range("A" & I).Offset(0, 3).Value = Range("A" & I).Offset(0, 3).Value

Range("A" & I).Offset(0, 4).Value = Range("A" & I).Offset(0, 4).Value
Range("A" & I).Offset(0, 5).Value = Range("A" & I).Offset(0, 5).Value
Range("A" & I).Offset(0, 6).Value = Range("A" & I).Offset(0, 6).Value
 

kjin

XLDnaute Barbatruc
Re : Récupération des données de plusieurs fichiers d'un même dossier

Re,
A quoi sert le copier-coller puisque tu remplaces les formules par leur valeurs ce qui est nettement plus rapide ?!
Et encore je passe sur le fait que tu sélectionnes l'ensemble des cellules de la feuille...:rolleyes:
A+
kjin
 

phil75016

XLDnaute Junior
Re : Récupération des données de plusieurs fichiers d'un même dossier

Bonjour

Je rebondis sur cette discussion. Je voudrais utiliser la macro proposée par Theze car elle correspond à ma recherche. Cependant j'ai un petit soucis sur cette instruction :
Range("A" & I).Offset(0, 3).Formula = "='" & Chemin & "[" & Fichier & "]feuille 1'!F4"
Mon soucis est comment remplacer F4 par une cellule flottante qui est toujours située 11 colonnes à droite d'une cellule nommée TOTAUXH. En général je mets Range("TOTAUXH").Offset(0, 11) mais dans cette macro je ne sais pas si c'est possible ou comment l'écrire?
Merci pour votre aide.
 

Theze

XLDnaute Occasionnel
Re : Récupération des données de plusieurs fichiers d'un même dossier

Bonjour,

Comme ceci peut être ?
Code:
Range("A" & I).Offset(0, 3).Formula = "='" & Chemin & "[" & Fichier & "]feuille 1'!" & Range("TOTAUXH").Offset(0, 11).Address(, 0)

Hervé.
 

phil75016

XLDnaute Junior
Re : Récupération des données de plusieurs fichiers d'un même dossier

Pas de réponse donc je présume que ma demande est irréalisable?
Je répète que TOTAUXH soit en cellule A10, B20 ou A30 la formule Range("A" & I).Offset(0, 3).Formula = "='" & Chemin & "[" & Fichier & "]feuille 1'!" & Range("TOTAUXH").Offset(0, 11).Address(0, 0) me retourne toujours sur la cellule $L$11.
 

Discussions similaires

Statistiques des forums

Discussions
312 108
Messages
2 085 377
Membres
102 876
dernier inscrit
BouteilleMan