Re : Report de données d'un fichier vers un autre
Bonjour, bonjour à tous !
Je reviens vers vous au sujet de mon problème d'importation de données de 4 fichiers excel vers 1 seul fichier.
Ci-joint les fichiers excel :
- le fichier zip est le tableau de récapitulation des données des 4 autres fichiers (
je suis désolé je n'ai pas pu insérer le 4ième car j'ai atteint le nombre maximum de fichiers mais je suis sûr que vous comprendrez la logique des 3 autres fichiers
)
Mon but est de récupérer les valeurs des cellules des colonnes H, P et Q qui se trouvent dans les fichiers retour expert comptable dans le fichier Tableau de suivi respectivement dans les colonnes B, C et D.
Après, de longues, longues heures de recherche sur ce forum
(que je tiens à préciser que c'est une mine d'or d'informations pratique sur excel), je pense avoir trouvé la macro dont j'ai besoin (voici le lien
https://www.excel-downloads.com/threads/macro-importer-plage-de-donnee-excel-vers-excel.121806/ ) proposé par Michel_M.
Donc j'ai essayé de l'adapter à mes fichiers, j'ai donné un nom à ma plage de données sur les 4 fichiers NomTISS =Feuil1!$H$5:$H$204;Feuil1!$P$5:$Q$204
Ensuite j'ai modifé dans le programme VB, le nom de la plage :
Const compil As String = "Tableau de suivi de la convention de partenariat avec les EC.xls" 'fichier de regroupement. nom à adapter
Const plage As String = "NomTISS" 'plage à copier dans cible
Public chemin As String
Sub chercher()
Dim fichier As String
Dim ligne As Long
'
chemin = ThisWorkbook.Path & "\"
ChDir chemin
Application.ScreenUpdating = False
ligne = 5
fichier = Dir("*.xls")
While fichier <> ""
If fichier <> compil Then
extraire fichier, ligne
ligne = Range("A65536").End(xlUp).Row + 1
End If
fichier = Dir
Wend
End Sub
Sub extraire(fich As String, lig As Long)
Dim source As Object
Dim requete As Object
Dim texte_SQL As String
test = plage
'connexion ADO au fichier
Set source = CreateObject("ADODB.Connection")
source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & chemin & fich & ";Extended Properties=""Excel 8.0;HDR=no;"";"
'exerce la requete ADO sur la donnée à recopier
texte_SQL = "SELECT * FROM [" & plage & "] "
Set requete = CreateObject("ADODB.Recordset")
Set requete = source.Execute(texte_SQL)
'recopie les données du fichier
Cells(lig, 5).CopyFromRecordset requete
'f'erme la connexion ADO
Set requete = Nothing
Set source = Nothing
End Sub
Lorsque j'exécute la macro afin de voir les effets du prog,
Set requete = source.Execute(texte_SQL) ==> Cette ligne me génère un message d'erreur VB : "Erreur d'exécution '-2147217865 (80040e37) Le moteur de base de données Microsoft Jet n'a pas pu trouver l'objet 'NomTISS'...." Et si je retourne sur les fichiers retour expert comptable dans Insertion / Nom / Définir 'NomTISS' est bien présent.
Pouvez-vous me dire où j'ai fais une erreur SVP et si le programme est bien adapté à mes besoin ?
D'avance merci à tous ceux qui auront lu mon message jusqu'au bout !!!!
Très bonne journée.