Récupération de données dans fichiers fermes

Y compris Power BI, Power Query et toute autre question en lien avec Excel
p
pat0051
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 18 janvier 2014
Version d'Excel : 2010 FR

Message par pat0051 » 1 février 2014, 09:32

Bonjour à tous,
J'ai une centaine de fichiers Excel placée sous C:\TEST\ dont je souhaite récupérer dans chacune des feuilles nommée "Feuil1" la valeur des cases A1, A2, A3, A4 et A5 pour les mettre dans un fichier Excel, à partir de la ligne 5, colonne B.
Ces valeurs sont des noms fichiers, dates, références, commentaires....
J'ai essayé plusieurs macros en adaptant des exemples avec la fonction RefersToRange mais je n'arrive à rien.
Quelqu’un a déjà eu ce besoin ?
Avatar du membre
BrunoM45
Membre impliqué
Membre impliqué
Messages : 2'911
Appréciations reçues : 87
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 1 février 2014, 11:05

[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
p
pat0051
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 18 janvier 2014
Version d'Excel : 2010 FR

Message par pat0051 » 1 février 2014, 11:24

Non, je n'ai pas été voir ces liens, je viens de jeter un coup d’œil et je pense y trouver mon bonheur.
Merci :D
p
pat0051
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 18 janvier 2014
Version d'Excel : 2010 FR

Message par pat0051 » 1 février 2014, 14:03

Re

J'ai testé les macros proposées et j'en suis arrivé à cela :
Sub LoopThruFiles()

Dim place As String
Dim FilesArray() As String, FileCounter As Integer
Dim FName As String, LoopCounter As Integer
    
  FName = Dir("C:\TEST\*.xlsx")
  Do While Len(FName) > 0
    FileCounter = FileCounter + 1
    ReDim Preserve FilesArray(1 To FileCounter)
    FilesArray(FileCounter) = FName
    FName = Dir()
  Loop
  If FileCounter > 0 Then
    Application.ScreenUpdating = False
    For LoopCounter = 1 To FileCounter

    x = LoopCounter
    'calcul de la plage de destination
    place = Range(Cells((((x - 1) * 6) + 2), 2), Cells(((x * 6)), 6)).Address
    GetValues "C:\TEST\", FilesArray(LoopCounter), "Feuil1", "$A$1:$A$5", place
    Next
    Application.ScreenUpdating = True
  End If
End Sub

Sub GetValues(fPath As String, FName As String, sName, _
              cellRange As String, place As String)
'recopie une plage des valeurs externes dans une plage de
'la feuille active sous forme d'une formule matricielle
  With ActiveSheet.Range(place)
    .FormulaArray = "='" & fPath & "\[" & FName & "]" & sName & "'!" & cellRange
    .Value = .Value
  End With
End Sub
Je ne maitrise pas les codes utilisés et joints une image de se que je voudrai obtenir...
Je continue de tester
Recup.pdf
(18.07 Kio) Téléchargé 23 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message