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
- Liste déroulante excel - 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