Bonjour à tous !
Cela faisait un moment que je n'avais pas touché excel, mais là me revoilà et j'avoue je bug un peu !!!
J'ai une macro pour récupérer des données dans différents fichiers excel sur un répertoire se trouvant sur mon réseau au boulot. Chaque fichier excel porte le même nom de feuille ex : Janvier dans un fichier a.xlsx ; Janvier dans un fichier b.xlsx, ...
J'aimerais une macro qui me permette de récupérer sur mon fichier synthese.xlsm, toutes les données se trouvant dans ces fichiers, mais là où cela se complique pour moi, je dis bien pour moi, c'est que dans mon fichier synthèse, j'ai une feuille paramètre où dedans se trouve en A2 une valeur qui correspond à mon adresse de répertoire ex : C:\Users\Benji\Desktop\Nouveau dossier (3) et en A5 une valeur correspondant à la feuille source des données à récupérer, ex Janvier.
Pourquoi ça tout simplement parce que c'est un fichier que je vais adapter suivant le répertoire et le nom de la feuille source et que je préfère changer la valeur d'une cellule que de devoir rentrer à chaque fois dans mes macros.
Voici mon code :
Sub CreationSynthese()
Dim repertoire As String
Dim page As String
Application.ScreenUpdating = False
Cells.Delete
Range("A1") = "Mois"
Range("B1") = "Catégorie"
Range("C1") = "Formation"
Repertoire = Sheets("parametre").Range("A2").Value '=C:\Users\Benji\Desktop\Nouveau dossier (3)
page = Sheets("parametre").Range("A5").Value '=Janvier
ChDir Repertoire
ClasseurRegional = Dir("*.xlsx")
While Len(ClasseurRegional) > 0
Workbooks.Open ClasseurRegional
Sheets(page).Select
AvantDerniereLigne = ActiveSheet.UsedRange.Rows.Count
Range("A2:F" & AvantDerniereLigne).Copy
Workbooks("synthese.xlsm").Activate
DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
Range("B" & ActiveSheet.UsedRange.Rows.Count + 1).Select
ActiveSheet.Paste
Range("A" & DebutNomFichier & ":A" & ActiveSheet.UsedRange.Rows.Count) = ClasseurRegional
Workbooks(ClasseurRegional).Close
ClasseurRegional = Dir
Wend
Columns("A:A").Replace ".xlsx", ""
Cells.EntireColumn.AutoFit
Range("A1").Select
Application.ScreenUpdating = True
End Sub
Si quelqu'un peut m'aider et éventuelle améliorer le code je suis preneur.
En vous remerciant énormément par avance
Benji
Cela faisait un moment que je n'avais pas touché excel, mais là me revoilà et j'avoue je bug un peu !!!
J'ai une macro pour récupérer des données dans différents fichiers excel sur un répertoire se trouvant sur mon réseau au boulot. Chaque fichier excel porte le même nom de feuille ex : Janvier dans un fichier a.xlsx ; Janvier dans un fichier b.xlsx, ...
J'aimerais une macro qui me permette de récupérer sur mon fichier synthese.xlsm, toutes les données se trouvant dans ces fichiers, mais là où cela se complique pour moi, je dis bien pour moi, c'est que dans mon fichier synthèse, j'ai une feuille paramètre où dedans se trouve en A2 une valeur qui correspond à mon adresse de répertoire ex : C:\Users\Benji\Desktop\Nouveau dossier (3) et en A5 une valeur correspondant à la feuille source des données à récupérer, ex Janvier.
Pourquoi ça tout simplement parce que c'est un fichier que je vais adapter suivant le répertoire et le nom de la feuille source et que je préfère changer la valeur d'une cellule que de devoir rentrer à chaque fois dans mes macros.
Voici mon code :
Sub CreationSynthese()
Dim repertoire As String
Dim page As String
Application.ScreenUpdating = False
Cells.Delete
Range("A1") = "Mois"
Range("B1") = "Catégorie"
Range("C1") = "Formation"
Repertoire = Sheets("parametre").Range("A2").Value '=C:\Users\Benji\Desktop\Nouveau dossier (3)
page = Sheets("parametre").Range("A5").Value '=Janvier
ChDir Repertoire
ClasseurRegional = Dir("*.xlsx")
While Len(ClasseurRegional) > 0
Workbooks.Open ClasseurRegional
Sheets(page).Select
AvantDerniereLigne = ActiveSheet.UsedRange.Rows.Count
Range("A2:F" & AvantDerniereLigne).Copy
Workbooks("synthese.xlsm").Activate
DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
Range("B" & ActiveSheet.UsedRange.Rows.Count + 1).Select
ActiveSheet.Paste
Range("A" & DebutNomFichier & ":A" & ActiveSheet.UsedRange.Rows.Count) = ClasseurRegional
Workbooks(ClasseurRegional).Close
ClasseurRegional = Dir
Wend
Columns("A:A").Replace ".xlsx", ""
Cells.EntireColumn.AutoFit
Range("A1").Select
Application.ScreenUpdating = True
End Sub
Si quelqu'un peut m'aider et éventuelle améliorer le code je suis preneur.
En vous remerciant énormément par avance
Benji