Bonjour j'ai un fichier qui pour l'exemple se nomme test.xlsm dans lequel j'ai une macro qui fait ouvrir les fichiers choisi d'un répertoire et qui copie bout à bout les données d'une page choisi dans la sheet1 du fichier test...
Tous les fichiers que j'ouvre on la même structure et les mêmes noms de feuilles.
Dans l'exemple plus bas, j'ouvre en boucle tous les fichiers et je copie une sélection de la page P1...
Mes fichiers on des noms page comme P1, P2,P3,P4 etc
J'aimerais donc dans mon fichier test dans la cellule H1 choisir P1, P2 ou autre et que ça soit utilisé pour choisir la bonne feuille de mes fichiers...
En d'autre mot pouvoir sélectionner le nom de la page ou les données doivent être sélectionné
' Macro qui permet de compiler les informations contenues dans
' différents fichier pour les regrouper dans un fichier récapitulatif
' GCXL
'-------------------------------------------------------------------------------
Sub Creer_Recapitulatif()
Dim wbRecap As Workbook 'fichier recap
Dim wsRecap As Worksheet 'feuille où on écrit les données
Dim wbSource As Workbook 'fichier à ouvrir
Dim wsSource As Worksheet 'feuille où on cherche les données
Dim vFichiers As Variant 'noms des fichiers
Dim strName As String
Dim i As Integer, k As Integer
' --- Ouvrir boite de dialogue pour sélectionner les fichiers à ouvrir
vFichiers = Selectionner_Fichiers("Sélectionner les fichiers à compiler") 'Appel de Fonction pour ouvrir fichiers
' --- Vérifier qu'au moins un fichier à été sélectionné
If Not IsArray(vFichiers) Then
Debug.Print "Aucun fichier sélectionné."
MsgBox "Erreur! Aucun/Mauvais fichier sélectionné."
Exit Sub
End If
On Error Resume Next
Application.ScreenUpdating = False
' --- Boucle à travers les fichiers
For k = 1 To UBound(vFichiers)
Application.StatusBar = ">> Lecture du fichier #" & k & "/" & UBound(vFichiers)
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' C'est ici qu'on écrit les instructions
Set wbSource = Workbooks.Open(vFichiers(k)) 'on ouvre le fichier
With wsSource
Sheets("P1").Select
Range("a2:q2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("test.xlsm").Activate 'sélectionne la feuille du transfert
Sheets("Sheet1").Select
Range("c65000").End(xlUp).Offset(1).Select 'recherche la première cellule vide
ActiveSheet.Paste
Application.CutCopyMode = False
wbSource.Close
End With
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Next k
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub
Function Selectionner_Fichiers(sTitre As String) As Variant
Dim sFiltre As String, bMultiSelect As Boolean
sFiltre = "Fichiers XYZ (.xls)(.xlsm), *.xls*"
bMultiSelect = True 'Permet de choisir plusieurs fichiers à la fois
ChDrive "C"
ChDir "C:\temp"
Selectionner_Fichiers = Application.GetOpenFilename(Filefilter:=sFiltre, Title:=sTitre, MultiSelect:=bMultiSelect)
End Function
Tous les fichiers que j'ouvre on la même structure et les mêmes noms de feuilles.
Dans l'exemple plus bas, j'ouvre en boucle tous les fichiers et je copie une sélection de la page P1...
Mes fichiers on des noms page comme P1, P2,P3,P4 etc
J'aimerais donc dans mon fichier test dans la cellule H1 choisir P1, P2 ou autre et que ça soit utilisé pour choisir la bonne feuille de mes fichiers...
En d'autre mot pouvoir sélectionner le nom de la page ou les données doivent être sélectionné
' Macro qui permet de compiler les informations contenues dans
' différents fichier pour les regrouper dans un fichier récapitulatif
' GCXL
'-------------------------------------------------------------------------------
Sub Creer_Recapitulatif()
Dim wbRecap As Workbook 'fichier recap
Dim wsRecap As Worksheet 'feuille où on écrit les données
Dim wbSource As Workbook 'fichier à ouvrir
Dim wsSource As Worksheet 'feuille où on cherche les données
Dim vFichiers As Variant 'noms des fichiers
Dim strName As String
Dim i As Integer, k As Integer
' --- Ouvrir boite de dialogue pour sélectionner les fichiers à ouvrir
vFichiers = Selectionner_Fichiers("Sélectionner les fichiers à compiler") 'Appel de Fonction pour ouvrir fichiers
' --- Vérifier qu'au moins un fichier à été sélectionné
If Not IsArray(vFichiers) Then
Debug.Print "Aucun fichier sélectionné."
MsgBox "Erreur! Aucun/Mauvais fichier sélectionné."
Exit Sub
End If
On Error Resume Next
Application.ScreenUpdating = False
' --- Boucle à travers les fichiers
For k = 1 To UBound(vFichiers)
Application.StatusBar = ">> Lecture du fichier #" & k & "/" & UBound(vFichiers)
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' C'est ici qu'on écrit les instructions
Set wbSource = Workbooks.Open(vFichiers(k)) 'on ouvre le fichier
With wsSource
Sheets("P1").Select
Range("a2:q2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("test.xlsm").Activate 'sélectionne la feuille du transfert
Sheets("Sheet1").Select
Range("c65000").End(xlUp).Offset(1).Select 'recherche la première cellule vide
ActiveSheet.Paste
Application.CutCopyMode = False
wbSource.Close
End With
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Next k
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub
Function Selectionner_Fichiers(sTitre As String) As Variant
Dim sFiltre As String, bMultiSelect As Boolean
sFiltre = "Fichiers XYZ (.xls)(.xlsm), *.xls*"
bMultiSelect = True 'Permet de choisir plusieurs fichiers à la fois
ChDrive "C"
ChDir "C:\temp"
Selectionner_Fichiers = Application.GetOpenFilename(Filefilter:=sFiltre, Title:=sTitre, MultiSelect:=bMultiSelect)
End Function