Centralisation de données

Bonjour à tous,

Après de multiples recherches en vain, je poste mon premier message sur le forum:

Ayant pour projet la création d'un fichier EXCEL d'aide à la production je me heurte à une problématique que je ne sais pas résoudre.

Je m' explique :

Après la création de plusieurs fichiers EXCEL - VBA récoltant et transformant les données dont j'ai besoin.

Je souhaite centraliser les données obtenues dans un classeur unique récapitulatif ( fichier récepteur).

Ces différents classeurs sources sont utilisés sur différents postes de travail, simultanément.

Comment faire la mise à jour du classeur récepteur sans ouverture fermeture du fichier et sa mise à jour?

J'ai essayé plusieurs solutions comme le partage du fichier EXCEL récepteur, la consolidation des données (fonctionne pour un unique PC), la mise en place de toutes les données dans un fichier unique : fichier inutilisable car trop volumineux mais en vain.

Mon objectif étant la mise à jour des données dans le classeur récepteur selon les données des différents classeur provenant de différents postes de travail.

Cette mise à jour doit être automatique.

Cette opération est elle possible via un Code VBA (je suis débutant)?

J'ai une autre piste comme l'ouverture des différents fichiers en lecture seule toutes les 5 min en évitant les "différents pop-up"...

Je vous remercie d'avance pour vos réponses et vos propositions

Bonjour,

Une possibilité selon moi est de créer des exports réguliers de tes fichiers source vers un emplacement commun à l'aide VBA. Ensuite, ton fichier central irait piocher dans ces exports, ce qui évite d'avoir à ouvrir et manipuler les fichiers source originaux.

Merci de votre réponse,

Je pense pouvoir réussir à faire des exports régulier via VBA (je débute) cependant c'est c'est plus cette partie de votre réponse :

"ton fichier central irait piocher dans ces exports"

Comment s'assurer que le fichier dans lequel " piocher" correspond au dernier export?

Ou alors je dois plus comprendre votre réponse comme ca :

L' enregistrement à l'aide du code VBA écrase la version précédente dans le dossier commun?

A ce stade, il y a beaucoup de possibilités, et je ne sais pas quelle est précisément votre besoin.
Pour les macros d'export, dans chaque fichier source, on peut préciser le nom du fichier source (ou son utilisateur) et la date+heure d'enregistrement. Si le format est toujours le même, on pourra ensuite extraire ses informations et identifier le dernière version de chaque sauvegarde. Sinon, il est aussi possible d'écraser la sauvegarde précédente, ce qui simplifie l'étape de consolidation puisqu'on se passe de cette vérification.

Après réflexion je me suis dit que le plus simple pour mon besoin est d'ouvrir en lecture seule ainsi que de refermer tous mes fichiers EXCEL sur le fichier récepteur.

En voici le code VBA correspondant :

Sub Ouverture_MaJ_Fermeture(k)

' Déprotection automatique de toutes les feuilles du classeur
 Dim nombre As Integer
    nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False

 With ThisWorkbook
'ouverture de tous les fichiers en lecture seule
Workbooks.Open ("fichier 1.xlsm"), ReadOnly:=True
ThisWorkbook.Saved = ThisWorkbook.ReadOnly
Workbooks.Open ("fichier 2.xlsm"), ReadOnly:=True
ThisWorkbook.Saved = ThisWorkbook.ReadOnly
Workbooks.Open ("fichier 3.xlsm"), ReadOnly:=True
ThisWorkbook.Saved = ThisWorkbook.ReadOnly
Workbooks.Open ("fichier 4"), ReadOnly:=True
ThisWorkbook.Saved = ThisWorkbook.ReadOnly
Workbooks.Open ("fichier 5.xlsm"), ReadOnly:=True
ThisWorkbook.Saved = ThisWorkbook.ReadOnly
Workbooks.Open ("fichier 6.xlsm"), ReadOnly:=True
ThisWorkbook.Saved = ThisWorkbook.ReadOnly
Workbooks.Open ("fichier 7.xlsm"), ReadOnly:=True
ThisWorkbook.Saved = ThisWorkbook.ReadOnly
Workbooks.Open ("fichier 8.xlsm"), ReadOnly:=True

 .RefreshAll

With ThisWorkbook

'fermeture de tous les fichiers 
 Windows("fichier 1.xlsm").Close
 Windows("fichier 2.xlsm").Close
 Windows("fichier 3.xlsm").Close
 Windows("fichier 4.xlsm").Close
 Windows("fichier 5.xlsm").Close
 Windows("fichier 6.xlsm").Close
 Windows("fichier 6.xlsm").Close

 End With

End Sub

Lors de la fermeture EXCEL me demande d'enregistrer ou non mon fichier (je ne veux pas enregistrer se fichier juste le lire)

J'ai trouvé un code VBA sur le forum mais je ne sais pas l'adapter à mon code VBA au dessus :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.ThisWorkbook.Saved = True 'Informe Excel que le fichier a déjà été enregistré (cela évite d'avoir une demande d'enregistrement à la fermeture)
End Sub

Enfin je souhaiterai mettre une temporisation pour ouvrir tous les fichier en lecture seule toutes les 10-15 min...

Merci à tous,

Rechercher des sujets similaires à "centralisation donnees"