Données excel
papisgueye
-
Polux31 Messages postés 7219 Statut Membre -
Polux31 Messages postés 7219 Statut Membre -
j'ai un fichier excel qui doit être renseigné à partir d'autres fichiers excel exportés à partir d'un programme access, j'aimerais pouvoir charger ce fichier, une fois le mappage effectué sans pour autant ouvrir les fichiers source.
Exple : Soit A.xls la destination, B.xls et C.xls les sources. mettre à jour les données de A.xls une fois ouvert sant ouvrir B et C.
ou bien, une macro qui ouvre automatiquement B et C, et les referme une fois A mis à jour
je vous remercie à l'avance
Exple : Soit A.xls la destination, B.xls et C.xls les sources. mettre à jour les données de A.xls une fois ouvert sant ouvrir B et C.
ou bien, une macro qui ouvre automatiquement B et C, et les referme une fois A mis à jour
je vous remercie à l'avance
1 réponse
-
Bonjour,
On peut lire un fichier fermé en utilisant une connexion ADO.
On se connecte au fichier et on récupère les données via un recordset.
Pour cela il faut activer la référence Microsoft ActiveX Data Objects x.x Library dans le classeur qui exécute la macro (Editeur VB -> Outils -> Références ...)
Voilà un exemple pour créer une connexion ADO, chercher les données, affichier le résultat et fermer la connexion:
'//////////////////////////////////////
'Code à copier dans un module:
'//////////////////////////////////////Option Explicit Public CnxXL As ADODB.Connection Public Rst As ADODB.Recordset 'Connexion au fichier passé en paramètre Public Sub OpenCnxXL(ByVal FullPathFileXL As String) Set CnxXL = New ADODB.Connection '--- Connection --- With CnxXL .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & FullPathFileXL & _ ";Extended Properties=Excel 8.0;" .Open End With End Sub 'Fermeture de la connexion Public Sub CloseCnxXL() CnxXL.Close Set CnxXL = Nothing End Sub 'Fermeture du recordset Public Sub CloseRst() Rst.Close Set Rst = Nothing End Sub 'Récupération des données Public Sub RecupDonneesXL(ByVal feuille As String, ByVal cellule As String) Dim QuerySql As String Set Rst = New ADODB.Recordset QuerySql = "SELECT * FROM [" & feuille & "$" & cellule & "]" Set Rst = CnxXL.Execute(QuerySql) End Sub 'Affichage du résultat Public Sub AfficheDonnees() ThisWorkbook.Worksheets(1).Range("A2").CopyFromRecordset Rst End Sub
Voilà comment utiliser le modulePublic Sub MaMacro() OpenCnxXL("C:\MonDossier\ClasseurB.xls") RecupDonnee("Feuil1", "B5:B5") 'ou "B5:G50" AfficheDonnees CloseRst CloseCnxXL End Sub
;o)