Bonjour à tous,
Je dispose d'un classeur Excel appelé "BDD.xls", ce classeur répertorie le nom des fichiers présents dans mon dossier "C:\blabla" sous forme de liste.
A partir des noms de fichier de cette liste je veux afficher dans la collone d'à coté le contenue des cellules A1, O13, E6 présents dans chacuns de ces fichiers. Et le tout sans ouvrir les fichiers bien sur . Voici la tête que ça devrait avoir :
Pour récupérer les données d'un classeur fermé j'utilise ce bout de code :
Mais ce code n'est pas vraiment très approprié pour ce que je veux faire :
- Le chemin du fichier doit être spécifié en entier alors que dans mon cas les noms du fichiers changeraient tout le temps (vu que des fichiers pourraient être ajoutés ou supprimés) donc je verrais plus un truc du genre "C:\blabla\" & [cellule] & ".xls" mais mes connaissances en Vb n'étant pas au top, ça bloque...
- Ce code m'affiche le résultat dans la colonne A2, or je voudrais plutôt que les 3 données s'affichent dans la colonne à coté (comme sur l'image) et en face du nom du fichier correspondant.
Ca parait compliqué à comprendre, donc si vous avez des questions j'y répondrais volontier
Merci de bien vouloir m'aider.
Je dispose d'un classeur Excel appelé "BDD.xls", ce classeur répertorie le nom des fichiers présents dans mon dossier "C:\blabla" sous forme de liste.
A partir des noms de fichier de cette liste je veux afficher dans la collone d'à coté le contenue des cellules A1, O13, E6 présents dans chacuns de ces fichiers. Et le tout sans ouvrir les fichiers bien sur . Voici la tête que ça devrait avoir :
Pour récupérer les données d'un classeur fermé j'utilise ce bout de code :
Code:
Sub extractionValeurCelluleClasseurFerme()
Dim Source As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim ADOCommand As ADODB.Command
Dim Fichier As String, Cellule As String, Feuille As String
'Adresse de la cellule contenant la donnée à récupérer
Cellule = "B3:B3"
Feuille = "Feuil1$"
Fichier = "C:\blabla\fichier.xls"
Set Source = New ADODB.Connection
Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";"
Set ADOCommand = New ADODB.Command
With ADOCommand
.ActiveConnection = Source
.CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"
End With
Set Rst = New ADODB.Recordset
Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
Set Rst = Source.Execute("[" & Feuille & Cellule & "]")
Range("A2").CopyFromRecordset Rst
Rst.Close
Source.Close
Set Source = Nothing
Set Rst = Nothing
Set ADOCommand = Nothing
End Sub
Mais ce code n'est pas vraiment très approprié pour ce que je veux faire :
- Le chemin du fichier doit être spécifié en entier alors que dans mon cas les noms du fichiers changeraient tout le temps (vu que des fichiers pourraient être ajoutés ou supprimés) donc je verrais plus un truc du genre "C:\blabla\" & [cellule] & ".xls" mais mes connaissances en Vb n'étant pas au top, ça bloque...
- Ce code m'affiche le résultat dans la colonne A2, or je voudrais plutôt que les 3 données s'affichent dans la colonne à coté (comme sur l'image) et en face du nom du fichier correspondant.
Ca parait compliqué à comprendre, donc si vous avez des questions j'y répondrais volontier
Merci de bien vouloir m'aider.
Dernière édition: