Bonjour à tous
Je suis en cours de développement d'une macro afin de faire un fichier de collecte
je m'explique, j'ai des données des puissances de 66 Turbines qui sont stockées individuellement dans une fichier .xls soit 66 fichiers.. La je dois donc collecter les données des la dernières lignes de chaque fichiers sur une range définies par exemple ("AI:AO").
Le problème c'est que j'arrive pas a aller chercher chacune de ses lignes sans avoir à rentrer manuellement
Bonjour Jey,
C'est assez simple à faire si :
- Tous les fichiers sont en xls
- Ils sont tous dans le même dossier
- Les données à récupérer sont toujours au même endroit
Si c'est le cas, postez quelques ex de fichiers, quoi récupérer et comment organisées les datas en sortie.
Bonjour Jey,
C'est assez simple à faire si :
- Tous les fichiers sont en xls
- Ils sont tous dans le même dossier
- Les données à récupérer sont toujours au même endroit
Si c'est le cas, postez quelques ex de fichiers, quoi récupérer et comment organisées les datas en sortie.
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 DernLign As Integer 'ligne où on écrit les données
Dim vFichiers As Variant 'noms des fichiers
Dim i As Integer, k As Integer
Dim rgRecap As Range 'plage où on copie les données
vFichiers = Selectionner_Fichiers("Sélectionner les fichiers à compiler") 'Appel de Fonction pour ouvrir fichiers
Set wbRecap = ThisWorkbook 'Fichier récapitulatif
Set wsRecap = ThisWorkbook.ActiveSheet 'on écrit dans la feuille 1 du fichier récapitulatif
' --- 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)
Set wbSource = Workbooks.Open(vFichiers(k)) 'on ouvre le fichier
Set wsSource = wbSource.Sheet("Template") 'On copie les données de la feuille 1
DernLign = wbRecap.Cells(Rows.Count, 36).End(x1up).Row + 1 'ligne pour écrire le log des fichiers compilés
' - On copie les données vers le fichier Recapitulatif; à adapter
Set rgRecap = wsRecap.Range("F65000").End(xlUp).Offset(1, 0)
rgRecap = Time
With wsSource
rgRecap.Offset(0, 1) = .Range("B7")
rgRecap.Offset(0, 2) = .Range("B8")
rgRecap.Offset(0, 3) = .Range("B10")
rgRecap.Offset(0, 4) = .Range("B13")
rgRecap.Offset(0, 5) = .Range("B14")
End With
wbSource.Close 'fermer fichier
Set wbSource = Nothing
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Next k
Function Selectionner_Fichiers(sTitre As String) As Variant
Dim sFiltre As String, bMultiSelect As Boolean
sFiltre = "Statistic_(.xls)(.xlsm), *.xls*"
bMultiSelect = True 'Permet de choisir plusieurs fichiers à la fois
Selectionner_Fichiers = Application.GetOpenFilename(Filefilter:=sFiltre, Title:=sTitre, MultiSelect:=bMultiSelect)
End Function
Bonjour,
J'ai des macros qui font ça, et je devrais pouvoir les adapter.
Pouvez vous m'envoyer un fichier exemple, et me dire quelles sont les données à collecter.
En gros,
il faut selectionner la dernière ligne du classeur 2 et copier coller la plages ("L33:M33" & " O33:Q33") sur la première ligne du classeur 4 sur la plages ("F1:J1").
Le truc c'est que réalité j'ai 66 (classeur 2) et je dois prendre chaque dernière ligne et la copier coller successivement dans le classeur 4
Si on colle toutes les données dans un fichier, comment sait on ensuite sur une ligne de quoi on parle ?
Doit on ajouter par ligne , une référence, un nom de fichier ... ?