Concaténer plusieurs feuilles Excel d'un fichier dans un seul

Résolu/Fermé
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 14 janv. 2016 à 16:05
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 15 avril 2016 à 17:12
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:
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:

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
15 janv. 2016 à 07:29
Bonjour,

Je veux éviter les opérations manuel Voulez-vous avoir une boite a dialogue pour le choix du repertoire ou ..... ????????
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
15 janv. 2016 à 14:55
Bonjour f894009,

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!
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023
15 janv. 2016 à 15:25
Bonjour,

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
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
15 janv. 2016 à 15:40
Bonjour merci beaucoup pour la réponse rapide!

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!
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023
15 janv. 2016 à 15:58
Re,

Qu' est ce qu'il y a d'ecrit , apres le bonjour, a la premiere ligne de mon message precedent ?????????
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
15 janv. 2016 à 19:51
Désolé, effectivement je n'avais pas changé le chemin pour mon répertoire. Je l'ai changé et j'ai toujours le même message! C'est bien à la ligne fd.InitialFileName =...?

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
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 31/01/2016 à 10:43
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
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
3 févr. 2016 à 20:09
Bonjour,

Merci beaucoup pour la fichier!

J'ai essayer le fichier Access, mais je ne suis pas certain de bien comprendre! Quand je sélectionne une région (R1), il me dit que le répertoire est vide?? Mais quand je vais dans votre répertoire R1, il y a un fichier xlsx.

Merci!
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023
4 févr. 2016 à 07:02
Bonjour,
Validation avant import dans tout les cas
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
4 févr. 2016 à 09:50
Re,

Apres verif, validation seulement si vous changez de selection(s), pour ecrire dans la table Parametre qui est lue a l'ouverture du formulaire et pour importation. A la reflextion, il faudrait surement ajouter le code de memo table et tableau dans le bouton Import, faut voir ....
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
5 févr. 2016 à 16:16
Bonjour,

Quelle serait l'utilité d'ajouter le code memo table et tableau dans le bouton import?? Je suis un peu perdue!

Pouvez-vous m'expliquer?

Merci beaucoup!
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023
5 févr. 2016 à 16:28
Bonjour,

Relisez ce que vous avez ecrit ici:

bassmart - 18 janv. 2016 à 17:55
0