XL 2016 Copie de fichiers fermés et historisation

vonmax

XLDnaute Nouveau
Bonjour à tous,

Je suis bloqué dans le développement d'un fichier d'analyse des exécutions de tâches journalières. Le fichier doit aller récupérer des données (toujours sous la même forme) dans 3 autres fichiers (qui sont envoyés quotidiennement avec les tâches réalisées de la journée). Ce pose dès lors la question de l'historisation au fur et à mesure afin d'analyser et suivre ce qui est fait chaque jour.

Je suis bloqué dans ces 2 fonctions :
  • Pour la copie des données, mon code VBA ne fonctionne que lorsque les fichiers de données sont ouverts. Comment l'adapter pour que la copie se fasse alors que les 3 autres fichiers sont fermés ?
VB:
Sub rangecopy()

Workbooks("Plateau_REIMS.xlsx").Sheets("Feuil1").Range("A:G").Copy Workbooks("Suivi_traitements_aff.xlsm").Worksheets("DonneesREIMS").Range("A1")

Workbooks("Plateau_PAU.xlsx").Sheets("Feuil1").Range("A:H").Copy Workbooks("Suivi_traitements_aff.xlsm").Worksheets("DonneesPAU").Range("A1")

End Sub

  • Pour l'historisation que je complètement bloqué malgré mes nombreuses recherches.

J'ai besoin de vos lumières 🧐
 

Pièces jointes

  • analyse_taches_quotidiennes.xlsm
    35 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Pour l'actualisation des données, je vous recommande de le faire par Power Query puisque votre version excel le permet.
Pour l'historisation, une fois la mise à jour effectuée par power query on peut tout à fait copier/coller les données les unes à la suite des autres par vba en un rien de lignes.

Il faudrait des fichiers plus représentatifs de la réalité pour vous faire une démonstration.
Et des fichiers sans liaisons si possible !

Cordialement
 
Dernière édition:

vonmax

XLDnaute Nouveau
Merci beaucoup pour l'astuce de power query, cela ne m'était pas venu à l'idée.

Ma difficulté est qu'à chaque mise à jour des données, les feuilles "data" vont être écrasées avec les nouvelles données de la journée (et uniquement celles de la journée). Et je souhaite sur une autre feuille historiser les données de tous les jours
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
re,

Pas de pièce jointe ailleurs qu'ici, en voir les raisons dans la charte du forum.
De plus je trouve que ce n'est pas dans l'esprit de partage que de mettre sur un autre serveur dont on ne sait ce qu'il fera de votre fichier dans x temps. Il ne sera plus alors disponible pour ceux qui ultérieurement voudraient le voir pour apporter leur contribution.

cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

J'ai bien compris. Pouvez-vous répondre à deux trois questions avant de me lancer :

1 - y-a-t-il d'autres fichiers plateaux que PAU et REIMS ? Si oui, on parle de combien de fichiers et lignes par fichier ?
2 - avez-vous besoin d'autant de requêtes que de fichiers ? Une seule ne serait elle pas suffisante ?
3 - idem pour les feuilles ?

Cordialement
 

vonmax

XLDnaute Nouveau
Voici mes réponses :
  1. Il y aura un troisième plateau dans l'année, mais pour le moment non
  2. Une seule requête serait plus simple oui aucune nécessité de dissocier
  3. Je préfère séparer les feuilles d'historique, je souhaite ensuite faire des analyses/reporting (et du coup des TCD). J'imagine que c'est plus simple si les données sont séparées

Merci
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Voici une proposition. Vos liaisons vers vos fichier et réseaux m'ont bien embêté. Je vous l'avais signalé pourtant.

Dans le fichier joint, dans la feuille 'Références fichier' en B1 nommée 'Dossier' contient une formule qui retourne le nom du répertoire du fichier. Actualisez là éventuellement en recalculant la feuille ou en entrant le répertoire vers les fichiers.

Les deux fichiers de données doivent être dans le même répertoire.

Important : Selectionnez une cellule de la feuille Import puis actualiser tout

Voir le code de la feuille.

Je vous rappelle que c'est au demandeur de fournir les fichiers exemple, et le plus propre si possible.
 

Pièces jointes

  • Plateau_PAU.xlsx
    35.4 KB · Affichages: 2
  • Plateau_REIMS.xlsx
    31.2 KB · Affichages: 2
  • Pilotage plateau.xlsm
    85.2 KB · Affichages: 2
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour vonmax, Hasco,

Pourquoi se compliquer la vie, 2 ou 3 fichiers à copier c'est très peu de chose, il suffit de les ouvrir.

Téléchargez les fichiers joints dans le même dossier (le bureau).

La macro dans ThisWorkbook du fichier Recap.xlsm :
VB:
Private Sub Workbook_Open()
Dim chemin$, fichier, feuille, n%, w As Worksheet
chemin = ThisWorkbook.Path & "\" 'dossier à adapter éventuellement
fichier = Array("Source1.xlsx", "Source2.xlsx", "Source3.xlsx") 'liste à adapter
feuille = Array("Source1", "Source2", "Source3") 'liste à adapter
Application.ScreenUpdating = False
For n = 0 To UBound(fichier)
    Set w = Me.Sheets(feuille(n))
    w.Cells.Delete 'RAZ
    On Error Resume Next
    Workbooks(fichier(n)).Close False 'si le fichier est ouvert on le ferme
    On Error GoTo 0
    With Workbooks.Open(chemin & fichier(n)) 'ouvre le fichier
        .Sheets(1).UsedRange.EntireRow.Copy w.Cells(1)
        .Close False 'ferme le fichier
    End With
    w.Columns.AutoFit 'ajuste les largeurs
Next
End Sub
Les 3 macros dans les feuilles Histo1 Histo2 Histo3 sont semblables :
VB:
Private Sub Worksheet_Activate()
If Cells(1) = "" Then Cells(1) = " "
Sheets("Source1").UsedRange.EntireRow.Cut Range("A" & Cells.Find("*", , xlValues, , xlByRows, xlPrevious).Row + 1)
If Cells(1) = " " Then Cells(1) = ""
If Application.CountA(Rows(1)) = 0 Then Rows(1).Delete
Columns.AutoFit 'ajuste les largeurs
End Sub
Elles se déclenchent quand on active ces feuilles.

A+
 

Pièces jointes

  • Recap.xlsm
    23.4 KB · Affichages: 4
  • Source1.xlsx
    8.8 KB · Affichages: 2
  • Source2.xlsx
    8.8 KB · Affichages: 0
  • Source3.xlsx
    8.8 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
312 109
Messages
2 085 383
Membres
102 878
dernier inscrit
asmaa