VBA EXCEL lire fichier sans l'ouvrir

Fermé
Kree - 1 mai 2008 à 09:16
 Kree - 1 mai 2008 à 12:51
Bonjour,

Je recherche de l'aide pour lire les données d'un fichier sans l'ouvrir et importer ces données sous Excel. Monfichier Excel (Appelons XL) contient indirectement le nom du fichier où se trouvent mes données (Appelons le DN) via différentes colonne (disons que DN= Range ("A1") & "_a_" & Range("A2") ,avec un chemin toujours identique type v:\..\DN).

Le problème est que DN n'est pas un .xls. En demandant l'ouverture par Excel, je récupère les données que je souhaite travailler toujours dans la même colonne. Je voudrais donc savoir si il est possible d'effectuer une macro qui me permette de lire DN comme un document Excel mais sans l'ouvrir.
NB: DN est un .dbf

Cela me permettrait d'inclure une formule de type ="sumprod(subsitute('v:\..\[DN]feuil1'!$B2:$B1065,""."","","")*1)" et d'obtenir instantanément la somme dans XL sans avoir à ouvrir/fermer DN dans un nouveau doc Excel.

Novice en VBA, je demande votre aide, au moins savoir si c'est possible. Je me demandais également s'il était possible de récupérer directement l'emplacement des données sous dbf et transposer les "." en "," pour obtenir des nombres utilisables sous Excel (j'ai tenté de changer mon séparateur de décimale sous Excel, mais ça ne résout pas ce problème), si possible en ayant directement la somme de ces données de type "123.456".

J'espère avoir été assez clair et obtenir au moins quelques pistes. Désolé de vous faire travailler en ce 1er mai...
Merci
A voir également:

5 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
1 mai 2008 à 09:40
Bonjour,

un exemple qui insère dans ton classeur les données d'un champ d'une base DBF en utilisant la technologie ADO
en gras éléments à personnaliser

Sub importer_champDBF()
'necessite d'activer la reference Microsoft ActiveX Data Objects x.x Library (dans VBE outils-référence)
Dim source As ADODB.Connection
Dim Requete As ADODB.Recordset
Dim Chemin As String, fichier As String, texte_SQL As String

Chemin = "F:\emplacement de tabase"
'Chemin = ThisWorkbook.Path si ta base est dans le m^répertoire
fichier = "tabase.dbf"

Set source = New ADODB.Connection
source.Open _
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & _
Chemin & ";"

texte_SQL = "SELECT tonchamp FROM " & fichier & ";" 'si tu importe tout met * au lieu de tonchamp

Set Requete = New Recordset
Requete.Open texte_SQL, source, adOpenKeyset, adLockOptimistic

If Requete.EOF Then
MsgBox "Table vide..."
Exit Sub
End If

Application.ScreenUpdating = False
Range("B2").CopyFromRecordset Requete

Requete.Close
source.Close

End Sub


d'après MichelXLD sur www.excel-downloads.com

Michel
0