Récuperation de données sur un fichier journalier
Voici un nouveau problème que je vous soumets :p
je n' ai pas d'exemple de fichier mais la question est simple .
j'ai 1 fichier "formulaire" comportant un tableau que je rempli manuellement. j'utilise en moyenne 1 nouveau "formulaire" par jour. je les enregistre sous un numéro, j'en suis actuellement au 0101.
j' ai 1 fichier central "Stats"comportant le regroupement de tous les totaux des "formulaires"
Pour le moment, à chaque nouveau "formulaire", je cree une ligne dans "stats" pour receuillir les informations car j' ai un soucis avec cette formule :
=+'c:\Drilling\[0101.xls]Drilling'!$M$7
je voudrai qu'il utilise le contenu d'une case ou meme le numero d'une ligne comme nom de fichier genre :
=+'c:\Drilling\[numero de ligne.xls]Drilling'!$M$7
ou
=+'c:\Drilling\[$a101.xls]Drilling'!$M$7
cela automatiserai la recherche de données et me ferai gagner un grand moment ..
j' ai essayé plusieurs trucs mais cela ne fonctionne pas ...
existe t il une fonction permettant cela?
merci pour vos reponses :p
bonsoir
la fonction personnalisée suivante permet d'effectuer cette lecture dans les classeurs fermés :
A placer dans ton classeur de synthèse
Function LireCellule_ClasseurFerme( _
Chemin As String, _
Fichier As String, _
Feuille As String, _
Cellule As Variant) As Variant
Application.Volatile
Dim Source As Object, Rst As Object, ADOCommand As Object
Dim Cible As String
Feuille = Feuille & "$"
Cible = Cellule.Address(0, 0, xlA1, 0) & ":" & _
Cellule.Address(0, 0, xlA1, 0)
Set Source = CreateObject("ADODB.Connection")
Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & "\" & Fichier & _
";Extended Properties=""Excel 8.0;HDR=No;"";"
Set ADOCommand = CreateObject("ADODB.Command")
With ADOCommand
.ActiveConnection = Source
.CommandText = "SELECT * FROM [" & Feuille & Cible & "]"
End With
Set Rst = CreateObject("ADODB.Recordset")
'1 = adOpenKeyset, 3 = adLockOptimistic
Rst.Open ADOCommand, , 1, 3
Set Rst = Source.Execute("[" & Feuille & Cible & "]")
LireCellule_ClasseurFerme = Rst(0).Value
Rst.Close
Source.Close
Set Source = Nothing
Set Rst = Nothing
Set ADOCommand = Nothing
End FunctionTu peux ensuite insérer ce type de formule dans une cellule :
=LireCellule_ClasseurFerme("C:\Drilling";LIGNE()&".xls";"Drilling";$M$7) LIGNE()&".xls" est supposé renvoyer le nom du classeur
bonne soirée
michel