Macro excel vba et copier coller entre classeur
Résolu
tom_3031
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
regys1 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
regys1 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Vaut mieux un qui sait que 10 qui cherche...
Quelles sont les lignes de code que je dois mettre dans ma macro excel pour résoudre le problème suivant.
J'ai 52 classeurs excel (dans un même dossier) dans lesquels le contenu d'environ 10 cellules m'intéresse. Ces cellules sont dans une même feuille, à la meme ligne et meme colonne dans les 52 classeurs. Les cellules ne sont pas contiguës.
Je souhaiterai copier/coller tout ça dans un classeur final indépendant déjà créé. Avec 52 colonnes (1 pour chaque classeur) de 10 lignes (une pour chaque cellule).
=> Idée directrice de procédure contestable et à traduire VBA
0) Créer ma macro depuis mon classeur final avec comme étapes:
1) Lancer une boucle sur tous les classeurs du dossier (spécifier l'adresse du dossier)
Dans la boucle:
2) Ouvri le premier excel
3)copier coller les 10 cellules dans une même colonne (vierge) du classeur en question dans l'ordre voulu
4)copier coller cette colonne dans sa colonne de destination dans le classeur final
5)fermer l'excel
6)Passer au suivant
Autant l'étape 3 à l'intérieur d'un même fichier je vois comment faire mais la gestion des passages d'un classeur à l'autre, je n'ai pas le niveau...
Entre les Workbook, workbookS, Activate, Open, For each next, la fonction Enregistrer une macro et ne connaissant pas vraiment la syntaxe vba... je galère!
En vous remerciant,
Thomas
Vaut mieux un qui sait que 10 qui cherche...
Quelles sont les lignes de code que je dois mettre dans ma macro excel pour résoudre le problème suivant.
J'ai 52 classeurs excel (dans un même dossier) dans lesquels le contenu d'environ 10 cellules m'intéresse. Ces cellules sont dans une même feuille, à la meme ligne et meme colonne dans les 52 classeurs. Les cellules ne sont pas contiguës.
Je souhaiterai copier/coller tout ça dans un classeur final indépendant déjà créé. Avec 52 colonnes (1 pour chaque classeur) de 10 lignes (une pour chaque cellule).
=> Idée directrice de procédure contestable et à traduire VBA
0) Créer ma macro depuis mon classeur final avec comme étapes:
1) Lancer une boucle sur tous les classeurs du dossier (spécifier l'adresse du dossier)
Dans la boucle:
2) Ouvri le premier excel
3)copier coller les 10 cellules dans une même colonne (vierge) du classeur en question dans l'ordre voulu
4)copier coller cette colonne dans sa colonne de destination dans le classeur final
5)fermer l'excel
6)Passer au suivant
Autant l'étape 3 à l'intérieur d'un même fichier je vois comment faire mais la gestion des passages d'un classeur à l'autre, je n'ai pas le niveau...
Entre les Workbook, workbookS, Activate, Open, For each next, la fonction Enregistrer une macro et ne connaissant pas vraiment la syntaxe vba... je galère!
En vous remerciant,
Thomas
A voir également:
- Copier coller vba
- Dessin sms copier coller zizi ✓ - Forum Réseaux sociaux
- Arobase copier coller ✓ - Forum Bureautique
- Historique copier coller - Guide
- Comment faire une arobase - Forum Clavier
- Arobase - Forum Clavier
7 réponses
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.
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...