retrouver le contenu d'une cellule dans un fichier fermé
1 réponse
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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