Données excel

Fermé
papisgueye - 24 mars 2010 à 00:59
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 24 mars 2010 à 08:51
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

A voir également:

1 réponse

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
24 mars 2010 à 08:51
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 module
Public Sub MaMacro()

    OpenCnxXL("C:\MonDossier\ClasseurB.xls")
    RecupDonnee("Feuil1", "B5:B5")    'ou "B5:G50"
    AfficheDonnees
    CloseRst
    CloseCnxXL

End Sub


;o)
0