Macro excel vba et copier coller entre classeur
Résolu/Fermé
tom_3031
Messages postés
7
Date d'inscription
mercredi 10 avril 2013
Statut
Membre
Dernière intervention
16 avril 2013
-
10 avril 2013 à 17:50
regys1 Messages postés 4 Date d'inscription mercredi 9 octobre 2013 Statut Membre Dernière intervention 20 octobre 2013 - 9 oct. 2013 à 23:32
regys1 Messages postés 4 Date d'inscription mercredi 9 octobre 2013 Statut Membre Dernière intervention 20 octobre 2013 - 9 oct. 2013 à 23:32
A voir également:
- Copier coller vba
- Copier coller pdf - Guide
- Croix chretienne copier coller ✓ - Forum Bureautique
- Dessin sms copier coller zizi ✓ - Forum Réseaux sociaux
- Copier-coller - Accueil - Windows
- Historique copier-coller android - Guide
7 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
15 avril 2013 à 10:08
15 avril 2013 à 10:08
Alors,
- Créées toi un nouveau classeur Excel
- places y, dans un module, la macro ci-dessous,
- Enregistres ton classeur sous Recap.xslm (classeur excel prenant en charge les macros)
- Assures toi bien que ton classeur Recap.xslm contient bien deux feuilles (minimum) appelées Feuil1 et Feuil2
- testes...
Code :
Il existe d'autres manières de procéder qui pourraient, notamment, accélérer le processus.
Revient donc nous dire si ceci te convient.
- Créées toi un nouveau classeur Excel
- places y, dans un module, la macro ci-dessous,
- Enregistres ton classeur sous Recap.xslm (classeur excel prenant en charge les macros)
- Assures toi bien que ton classeur Recap.xslm contient bien deux feuilles (minimum) appelées Feuil1 et Feuil2
- testes...
Code :
Option Explicit Sub Import() Dim objShell As Object, objFolder As Object Dim Chemin As String, fichier As String Dim Colonne As Byte 'ouverture de la fenêtre de choix du répertoire Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&) 'Si l'utilisateur annule sans choisir If objFolder Is Nothing Then 'message MsgBox "Abandon opérateur", vbCritical, "Annulation" Else 'sinon 'Chemin = répertoire choisi Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\" 'Choix du 1er fichier fichier = Dir(Chemin & "*.xls*") 'Colonne = n° de colonne ou on va coller les données 'pour commencer colonne A, laisser à 0, pour commencer colonne B remplacer 0 par 1 etc... Colonne = 0 'on boucle sur tous les fichiers excel du répertoire choisi Do While Len(fichier) > 0 Colonne = Colonne + 1 If fichier <> ThisWorkbook.Name Then 'attribue un nom dans le classeur, se référant à la plage à importer : B2:I18 ThisWorkbook.Names.Add "Plage", RefersTo:="='" & Chemin & "[" & fichier & "]fiche site'!$B$2:$I$18" With Sheets("Feuil2") ' "Importe les données" grâce au nom donné ci-dessus .[B2:I18] = "=Plage" .[B3:B10].Copy 'Copie B3:B10 End With With Sheets("Feuil1") .Cells(1, Colonne).PasteSpecial xlPasteValues 'Colle B3:B10 End With With Sheets("Feuil2") .[B16].Copy 'Copie B16 End With With Sheets("Feuil1") .Cells(9, Colonne).PasteSpecial xlPasteValues 'Colle B16 End With With Sheets("Feuil2") .[B18].Copy 'copie B18 End With With Sheets("Feuil1") .Cells(10, Colonne).PasteSpecial xlPasteValues 'Colle B18 End With With Sheets("Feuil2") .[G2].Copy 'Copie G2 End With With Sheets("Feuil1") .Cells(11, Colonne).PasteSpecial xlPasteValues 'Colle G2 End With With Sheets("Feuil2") .[I2].Copy 'Copie I2 End With With Sheets("Feuil1") .Cells(12, Colonne).PasteSpecial xlPasteValues 'Colle I2 End With With Sheets("Feuil2") .[G3].Copy 'Copie G3 End With With Sheets("Feuil1") .Cells(13, Colonne).PasteSpecial xlPasteValues 'Colle G3 End With With Sheets("Feuil2") .[I3].Copy 'Copie I3 End With With Sheets("Feuil1") .Cells(14, Colonne).PasteSpecial xlPasteValues 'Colle I3 End With End If fichier = Dir() Loop End If End Sub
Il existe d'autres manières de procéder qui pourraient, notamment, accélérer le processus.
Revient donc nous dire si ceci te convient.
17 juin 2013 à 11:01
18 juin 2013 à 14:53
Chaque fichier excel étant unique, je vous recommande de créer votre propre sujet et d'y exposer clairement votre problème. Quitte à copier-coller mon code...