Tout d'abord merci pour l'aide que vous m'apporterez. Je débute en VBA et a vrai dire je suis un peu perdu.
Je cherche a créer une macro qui dans un premier pourra lire différent fichiers excel (nombre variable) et venir copier les différentes données les une en dessous des autres dans un autre fichier.
Je ne sais vraiment pas par ou commencer. J'ai d'abord essayer avec un seul fichier mais je me perd trés vite avec la gestion des workbook (activateworkbook...)
j'ai commencer par déclarer mes variables mais ensuite je me retrouve complétement bloqués ne comprenant pas le principe
Sub Recup_fichier() 'Macro pour récupération des différents fichiers reçus'
'Déclaration fichier et variable
'fichier dans lequel récupérer les données'
Dim File_source As Workbook
Dim Onglet_source As Worksheet
'fichier dans lequel copier les données'
Dim Onglet_recup As Worksheet
Dim Final_file As Workbook
Dim chemin_fichier As String
chemin_fichier = "C:\Users\E505144\Desktop\Chantier IQP4"
End Sub
Pourriez vous m'aider à avancer et aussi a comprendre le processus a suivre?
quand tu ouvres un fichier excel, tu peux récupérer directement une référence vers le classeur ouvert
Sub Recup_fichier() 'Macro pour récupération des différents fichiers reçus'
'Déclaration fichier et variable
'fichier dans lequel récupérer les données'
Dim File_source As Workbook
Dim Onglet_source As Worksheet
'fichier dans lequel copier les données'
Dim Onglet_recup As Worksheet
Dim Final_file As Workbook
Dim chemin_fichier As String
chemin_fichier = "C:\Users\E505144\Desktop\Chantier IQP4"
Set File_source = Workbook.Open(chemin_fichier,ReadOnly:=true)
'File_source sera le classeur ouvert ci-dessus
'File_source.Sheets(1) sera la feuille 1 de du classeur ouvert; si tu veux utiliser le nom de l'onglet, tu peux indiquer son nom (attention aux espaces)
Set Onglet_source= file_source.Sheets('mon onglet")
Dim derniere_ligne as long
'une méthode pour obtenir la dernière ligne non vide (on part de la cellule A65535 et on remonte jusqu'à la 1ère cellule non vide)
derniere_ligne=Onglet_source.Range("A65535").end(xlup)
Dim r as Range
'donne en principe la plage des cellules utilisées sur la feuille
Set r = Onglet_source.UsedRange
'ThisWorkbook c'est le classeur dans lequel il y a la macro, donc a priori équivalent à ton Final_file
End Sub
- Edité par umfred 24 janvier 2022 à 17:54:38
VBA : Copier plusieurs fichiers dans un autre fich
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.