Macro pour importer donnees de plusieurs classeurs
Fermé
TheYéti
Messages postés
3
Date d'inscription
mercredi 26 juin 2013
Statut
Membre
Dernière intervention
26 juin 2013
-
26 juin 2013 à 11:03
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 26 juin 2013 à 14:22
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 26 juin 2013 à 14:22
A voir également:
- Macro pour importer donnees de plusieurs classeurs
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Reinstaller windows sans perte de données - Guide
- Importer favoris chrome - Guide
- Effacer les données de navigation - Guide
5 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
26 juin 2013 à 11:39
26 juin 2013 à 11:39
Bonjour,
Tu peux aller lire cette fiche pratique. Si cela te convient reviens ici demander l'adaptation à ton cas.
Tu peux aller lire cette fiche pratique. Si cela te convient reviens ici demander l'adaptation à ton cas.
TheYéti
Messages postés
3
Date d'inscription
mercredi 26 juin 2013
Statut
Membre
Dernière intervention
26 juin 2013
26 juin 2013 à 13:37
26 juin 2013 à 13:37
Bonjour pijaku.
Ton code semble être le bon, mais est-ce qu'il peut marcher si dans chaque classeur il y a plusieurs feuilles contenant des données à importer ?
Ton code semble être le bon, mais est-ce qu'il peut marcher si dans chaque classeur il y a plusieurs feuilles contenant des données à importer ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
26 juin 2013 à 13:41
26 juin 2013 à 13:41
Oui, je penses.
Il suffit d'adapter le code...
Il suffit d'adapter le code...
TheYéti
Messages postés
3
Date d'inscription
mercredi 26 juin 2013
Statut
Membre
Dernière intervention
26 juin 2013
26 juin 2013 à 13:43
26 juin 2013 à 13:43
OK . Du coup tu pourrai me donner un exemple d'importation de 2 classeurs contenant 2 feuilles chacun ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
26 juin 2013 à 14:22
26 juin 2013 à 14:22
J'ai essayé d'adapter mon code à ton cas précis.
C'est pas simple simple sans pouvoir tester...
Bon, à toi donc de tester cette macro.
Adapte là d'abord, il y a pour cela plusieurs commentaires dans le code.
Pour tester :
1- Fais une copie du répertoire dans lequel tu as tous tes fichiers
2- renomme cette copie
3- travaille à partir de la copie de tes fichiers, pas sur les originaux
4- reviens ici me dire ce qui aura planté....
C'est pas simple simple sans pouvoir tester...
Bon, à toi donc de tester cette macro.
Adapte là d'abord, il y a pour cela plusieurs commentaires dans le code.
Pour tester :
1- Fais une copie du répertoire dans lequel tu as tous tes fichiers
2- renomme cette copie
3- travaille à partir de la copie de tes fichiers, pas sur les originaux
4- reviens ici me dire ce qui aura planté....
Option Explicit Sub Importer() Dim objShell As Object, objFolder As Object Dim Chemin As String, fichier As String Dim Ws As Worksheet, maPlageExp As String, Col As String Dim Erreur As Boolean, maPlageImp As String Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&) If objFolder Is Nothing Then MsgBox "Abandon opérateur", vbCritical, "Annulation" Else ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = "TravailEnCours" Sheets("FormulaireGC").Select 'ICI, peu importe le nom de la feuille, mets en un qui existe dans le classeur BDDBenoit2.xlsm 'il faut juste sélectionner une autre feuille que celle que l'on vient d'ajouter Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\" '************************************A ADAPTER : tes fichiers sont ils tous .xls??? fichier = Dir(Chemin & "*.xls") '************************************ Do While Len(fichier) > 0 If fichier <> ThisWorkbook.Name Then '****************************A ADAPTER : l'Array doit contenir le nom des feuilles à importer '!!!Précaution, assures toi que ces feuilles sont bien dans le classeur BDDBenoit2.xlsm For Each Ws In ThisWorkbook.Worksheets(Array("FormulaireGC", "FormulaireEsc", "FormulaireBV", "FormulairePortes", "FormulaireMC", "FormulairePC", "FormulairePB")) Erreur = False 'ici on attribue la bonne plage en fonction de la feuille importée '*********** A ADAPTER 'maPlageExp est la plage de cellules des fichiers à importer 'maPlageImp est la même plage de cellules, mais dans le fichier BDDBenoit2.xlsm Select Case Ws.Name Case "FormulaireGC" maPlageExp = "FormulaireGC'!$A$2:$M$4" maPlageImp = "A2:M4" Col = "A" Case "FormulaireEsc" maPlageExp = "FormulaireEsc'!$A$2:$L$4" maPlageImp = "A2:L4" Col = "A" Case "FormulaireBV" maPlageExp = "FormulaireBV'!$A$2:$J$4" maPlageImp = "A2:J4" Col = "A" Case "FormulairePortes" maPlageExp = "FormulairePortes'!$I$2:$Q$4" maPlageImp = "I2:Q4" Col = "I" Case "FormulaireMC" maPlageExp = "FormulaireMC'!$A$2:$K$4" maPlageImp = "A2:K4" Col = "A" Case "FormulairePC" maPlageExp = "FormulairePC'!$A$2:$L$4" maPlageImp = "A2:L4" Col = "A" Case "FormulairePB" maPlageExp = "FormulairePB'!$A$2:$N$4" maPlageImp = "A2:N4" Col = "A" Case Else MsgBox "Feuille inconnue" Erreur = True End Select If Erreur = False Then ThisWorkbook.Names.Add "Plage", RefersTo:="='" & Chemin & "[" & fichier & "]" & maPlageExp With Sheets("TravailEnCours") .Range(maPlageImp) = "=Plage" .Range(maPlageImp).Copy ThisWorkbook.Sheets(Ws.Name).Range(Col & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues .Cells.Clear End With End If Next Ws End If fichier = Dir() Loop Application.DisplayAlerts = False Sheets("TravailEnCours").Delete Application.DisplayAlerts = True End If End Sub