Concaténer plusieurs feuilles Excel d'un fichier dans un seul [Résolu/Fermé]

Signaler
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
-
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
-
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

Messages postés
15755
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 mai 2021
1 487
Bonjour,

Je veux éviter les opérations manuel Voulez-vous avoir une boite a dialogue pour le choix du repertoire ou ..... ????????
Messages postés
15755
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 mai 2021
1 487 >
Messages postés
15755
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 mai 2021

Bonjour,

J'ai commence et me viens de suite une question: comment connaissez-vous a l'avance les nom des feuilles, car dans votre prog, c'est ecrit en "dur" et dans le fichier piezo ce n'est pas les memes noms ???????????????????????????????????

Autre question: d'ou sort le 100 qui est dans NIVEAU_PIEZO presque tout du long ????????????
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
1 >
Messages postés
15755
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 mai 2021

Bonjour,

C'était seulement pour faire un test, je voulais voir si ça fonctionnait! Donc j'ai du mettre le nom des feuilles, mais en réalité elle change toujours d'un fichier à l'autre!

Pour votre deuxième question sur la valeur 100, c'est une valeur que nous avons mis par défaut, qui nous sert lors du transfert.

Merci!
Messages postés
15755
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 mai 2021
1 487 >
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021

Bonjour
Ok, je continue
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
1 >
Messages postés
15755
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 mai 2021

Re,

Merci beaucoup!
Messages postés
15755
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 mai 2021
1 487 >
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021

Bonjour,

Si plusieurs classeurs excel dans un repertoire region, import de tous les classeurs dans la meme table ?

Et si plusieurs classeurs dans un repertoire, choix ou non des classeurs a importer ?
Messages postés
15755
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 mai 2021
1 487
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
Messages postés
15755
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 mai 2021
1 487 >
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021

Bonjour,
Il me faudrait votre fichier
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
1 >
Messages postés
15755
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 mai 2021

Bonjour,

Voici mon fichier

http://www.cjoint.com/c/FBDrGfzH5Eo

Merci!
Messages postés
15755
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 mai 2021
1 487 >
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021

Bonjour,

Les modifs a faire etait bien ecrites le f894009 - 11 févr. 2016 à 21:05 et vous ne les abez pas faites !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

fichier modifie: https://www.cjoint.com/c/FCbhjy2yz3f
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
1 >
Messages postés
15755
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 mai 2021

Re,

Excusez-moi, je n'avais pas bien saisie ce que je devais modifier!

Désolé!

Ça fonctionne très bien! Comment dois-je procéder pour copier les valeurs de la première ligne de chacun des enregistrements des trois premières colonnes (NO_SITE, NO_SONDAGE et NO_PIEZO) jusqu'à la nouvelle ligne avec de la donnée (numéro).

Merci!
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
1 >
Messages postés
15755
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 mai 2021

Bonjour,

La programmation fonctionne très bien dans pratiquement tout les cas, en fait sur tout les fichiers traités sauf sur un fichier en particulier qui ne fonctionne pas.

Sur le fichier en question, il me pose la question si je veux vider la table, jusqu'ici tout va bien et c'est après avoir répondu oui que ça plante. J'ai une erreur d'exécution 2391: Le champ «T» n'existe pas dans la table destination «Migration Geotec_1- Basses-Terres du Saint-Laurent». Quand j'ouvre le débogage la ligne
DoCmd.TransferSpreadSheet acImport, acSpreadsheetTypeExcel12, strTable, strChemin, blnNoms, varFeuilles (N) & "!"
est jaune.

D'où provient cette erreur? Je sais que c'est mon avec mon fichier qu'il y a un problème, mais lequel, je ne trouve pas??

Voici mon fichier:

https://www.cjoint.com/c/FDppkhOQEAo

Merci!