OVH Cloud OVH Cloud

retrouver le contenu d'une cellule dans un fichier fermé

1 réponse
Avatar
sacha83
Bonjour,
je dois regrouper des données sur un tableau recap provenant de plusieurs fichiers excel mis à jour quotidiennement.
tous les jours, j'ai des rapports sous la forme :
200-01012019.xls.
200-02012019.xls...
Je souhaite pouvoir aller chercher le contenu de la cellule (par exemple A2) de chaque fichier sur un tableau recap automatiquement.
1er probleme :Dans un premier temps il faut donc que ma formule concatene le nom de fichier et la date automatiquement. Mais ma formule CONCATENER m'affiche le chemin complet et non uniquement le nom du fichier...
2eme probleme : j'ai essayé de passer par la fonction INDIRECT, mais il me renvoit une réponse : REF..
Quelqu'un aurait une idée sur la méthode à suivre?
merci.
Magali.

1 réponse

Avatar
MichD
Bonjour,
On peut faire ce que tu désires en utilisant VBA.
Cependant,tous les fichiers à traiter doivent être dans le même
répertoire et la cellule A2 par exemple doit avoir le même nom d'onglet
de la feuille.
Tu copies le code suivant dans un MODULE STANDARD.
Dans la procédure, test, du dois définir 3 variables selon ton
environnement.
'----------------------------------------------------
Sub Test()
Dim NomFeuille As String
Dim Chemin As String
Dim Fichier As String
Dim Rg As Range
Dim Cellule As String
'-----Variables à déterminer--------------
Chemin = "F:Documents"
NomFeuille = "Feuil1" 'A déterminer
Cellule = "A2"
'--------------------------------
'où les résultats vont être copiés
Set Rg = Worksheets("Feuil2").Range("A2")
'le premier fichier traité.
Fichier = Dir(Chemin & "*.xl*")
'Boucle sur tous les fichiers du répertoire
Do While Fichier <> ""
If Fichier <> ThisWorkbook.Name Then
Rg.Value = GetValue(Chemin, Fichier, NomFeuille, Cellule)
'où sera copiée la prochaine donnée
'Pointe la cellule du dessous
Set Rg = Rg.Offset(1)
End If
Fichier = Dir()
Loop
End Sub
'----------------------------------------------------
Public Function GetValue(ByVal path, ByVal file, _
ByVal sheet, ByVal ref) As Variant
' Macro XL4 Merci à John Walkenbach
' ============================= ' Retrieves a value from a closed workbook
Dim Arg As String
' Make sure the file exists
If Right(path, 1) <> "" Then path = path & ""
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
Arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Address(, , xlR1C1)
' MsgBox Arg
' Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents
End Function
'----------------------------------------------------
MichD