Macro excel vba et copier coller entre classeur
Résolu
tom_3031
Messages postés
8
Statut
Membre
-
regys1 Messages postés 4 Statut Membre -
regys1 Messages postés 4 Statut Membre -
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
- Copier-coller - Accueil - Informatique
- 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...