Concaténer plusieurs feuilles Excel d'un fichier dans un seul
Résolu
bassmart
Messages postés
281
Date d'inscription
Statut
Membre
Dernière intervention
-
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai une question à savoir si je doit utiliser Excel ou bien Access pour concaténer plusieurs feuilles d'un fichier Excel dans un autre fichier de compilation.
Je soit répéter cette opération avec plusieurs fichiers Excel afin d'obtenir un seul fichier de compilation. La structure de mes colonnes de chacune des feuilles est identique mais le nombre de ligne et de feuilles varie selon le fichier. Par la suite, je dois supprimer les lignes vides d'un fichier de destinations final.
Au final, je vais prendre ce tableau de compilation pour l'intégrer dans une base de données SQL.
J'ai réussi à importer les données d'un fichier Excel dans une Base Access avec l'aide d'un code trouvé sur le net, mais en spécifiant le chemin de mon fichier dans la macro. Tout est correct, il prend les données de chacune des feuilles et me les placent dans une seule. Voici le code en question:
Je veux éviter les opérations manuel, vue que nous avons au dessus de 30 fichiers à traiter avec en moyenne 5 feuilles chacun.
J'ai un peu d'expérience avec les macro d'Excel mais pas avec la programmation Acces.
Merci de votre aide!!
J'ai une question à savoir si je doit utiliser Excel ou bien Access pour concaténer plusieurs feuilles d'un fichier Excel dans un autre fichier de compilation.
Je soit répéter cette opération avec plusieurs fichiers Excel afin d'obtenir un seul fichier de compilation. La structure de mes colonnes de chacune des feuilles est identique mais le nombre de ligne et de feuilles varie selon le fichier. Par la suite, je dois supprimer les lignes vides d'un fichier de destinations final.
Au final, je vais prendre ce tableau de compilation pour l'intégrer dans une base de données SQL.
J'ai réussi à importer les données d'un fichier Excel dans une Base Access avec l'aide d'un code trouvé sur le net, mais en spécifiant le chemin de mon fichier dans la macro. Tout est correct, il prend les données de chacune des feuilles et me les placent dans une seule. Voici le code en question:
Option Compare Database Option Explicit ' --- ' IMPORTATION DE PLUSIEURS FEUILLES EXCEL ' --- Sub ImportExcel( _ ByVal strChemin As String, _ ByVal varFeuilles As Variant, _ ByVal blnNoms As Boolean, _ ByVal strTable As String _ ) ' Déclaration des variables Dim strFeuille As Variant Dim chaineSQL As String ' Est-ce que le classeur Excel existe ? If Dir(strChemin) = "" Then MsgBox "Le classeur ['" & strChemin & "] est introuvable.", vbExclamation Exit Sub End If ' Vidage de la table si nécessaire On Error GoTo ImportExcelErr If MsgBox("Souhaitez-vous vider la table [" & strTable & "] avant l'importation ?", _ vbQuestion + vbYesNo) = vbYes Then CurrentDb.Execute "DELETE * FROM [" & strTable & "];" End If ' Procédure d'importation For Each strFeuille In varFeuilles DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, _ strTable, strChemin, blnNoms, strFeuille & "!" Next ' Un p'tit message pour terminer :-) MsgBox "Opération terminée !", vbInformation Exit Sub ImportExcelErr: MsgBox "Erreur d'importation : " & Err.Description, vbExclamation Exit Sub chaineSQL = "Delete from Migration Geotec - Import where [NO-SITE]is null" DoCmd.RunSQL chaineSQL End Sub Public Sub TestImportExcel() Dim varFeuilles As Variant ' Liste des feuilles Excel à importer varFeuilles = Array("Z12037", "Z12038", _ "Z12041", "Z12045", "Z12051") ' Importation proprement dite ImportExcel "M:\Entrepot\BDFS\1_Piézomètres\1-Saguenay_Lac St-Jean_Charlevoix\Donnée recueillit en 2015\Jonquière_nouveau2.xlsx", varFeuilles, True, "Migration Geotec - Import" End Sub
Je veux éviter les opérations manuel, vue que nous avons au dessus de 30 fichiers à traiter avec en moyenne 5 feuilles chacun.
J'ai un peu d'expérience avec les macro d'Excel mais pas avec la programmation Acces.
Merci de votre aide!!
A voir également:
- Concatener plusieurs fichier excel
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
2 réponses
Bonjour,
Je veux éviter les opérations manuel Voulez-vous avoir une boite a dialogue pour le choix du repertoire ou ..... ????????
Je veux éviter les opérations manuel Voulez-vous avoir une boite a dialogue pour le choix du repertoire ou ..... ????????
Bonjour,
Un exemple avec table selection region pour memorisation,
https://www.cjoint.com/c/FAFjOo6nCIf
Il y a des tables d'erreurs car, dans le fichier xlsx, vous avez des cellules avec du texte au lieu de nombre dans une feuille
Un exemple avec table selection region pour memorisation,
https://www.cjoint.com/c/FAFjOo6nCIf
Il y a des tables d'erreurs car, dans le fichier xlsx, vous avez des cellules avec du texte au lieu de nombre dans une feuille
Oui effectivement, l'idéal c'est d'avoir une boîte de dialogue pour pouvoir choisir le répertoire et le ou les fichiers!
avec ce code ca devrait le faire, vous pouvez parametrer le chemin de repertoire. A vous de jouer
'reference a cocher: Microsoft Office xx.x object library
'selection de x fichiers xlsx
Option Compare Database
Option Explicit
Private Sub Commande0_Click()
Dim fd As Office.FileDialog
' Créer un objet FileDialog
Set fd = Application.FileDialog(msoFileDialogOpen)
' Titre de la boîte de dialogue
fd.Title = "Sélectionnez x fichiers ..."
'autoriser la sélection multiple
' (donc x fichiers sélectionnable à la fois)
fd.AllowMultiSelect = True 'False pour un seul
' Sélection d'un dossier de base :
fd.InitialFileName = "F:\Docs"
' Définir les types de fichiers autorisés
fd.Filters.Clear
fd.Filters.Add "Fichier XLSX", "*.XLSX"
' Afficher la boîte de dialogue
If fd.Show() Then
MsgBox "Vous avez sélectionné " & fd.SelectedItems.Count & " fichier(s) : " _
& vbCrLf & fd.SelectedItems(1) & vbCrLf & fd.SelectedItems(2), vbInformation
End If
Set fd = Nothing
End Sub
J'ai un problème, j'ai placé le code dans ma base Access dans un module et j'ai une erreur de compilation: Type défini par l'utilisateur non défini sur la ligne Dim fd as Office.FileDialog.
Est-ce que le code doit aller dans Access ou Excel?
Merci!
Qu' est ce qu'il y a d'ecrit , apres le bonjour, a la premiere ligne de mon message precedent ?????????
Mon chemin pour le dossier est assez long, est-ce un problème?
ex: c:\Base\FGC\1_Piézomètres\....
Après il faut encore choisir un répertoire qui représente une région et ensuite choisir un fichier