XL 2019 Mise à jour automatique à distance des macro VBA dans un fichier sur un autre ordinateur

Etevaldo Santos

XLDnaute Nouveau
Bonjour à tous,

J’espère que vous tous vont bien et jouit d'une bonne santé.

Encore un fois, depuis le Brésil, je me permets de demander à nouveau votre aide sur une problème qui sa traîne á longtemps et que suscite beaucoup de retravail sur mes fichiers.

Malheureuses, mon français est encore pénible, mais je suis remercient de votre amabilité d’essayer de comprendre mon problème et de tout l’aide que vous pourriez m’apporter.

J'ai besoin de faire une mise à jour des macros (VBA) sur un fichiers Excel á distance, situé dans un autre lieu/ordinateur.

Mes fichiers contiennent généralement plusieurs modules, macros et formulaires qui sont utilisés par plusieurs personnes / clients.

Il y a toujours une évolution des besoins de ces fichiers ou la correction d'une défaillance (bug) non identifiée précédemment, ce qui finit par générer une modification / mise à jour de certaines macros, éventuellement certaines nouvelles macros devraient être déclenchées par de nouveaux boutons (contrôle de formulaire) ou même des icônes sur des feuilles de calcul existantes.

Habituellement, j'envoie une nouvelle version mise à jour du fichier "standard" à utiliser à l'avenir, ce qui entraîne un problème avec les données déjà saisis dans ces feuilles de calcul, qui dans la plupart des cas sont importantes (en volume/quantité).

J’ai besoin d’aide pour créer un sort de fichier exécutable par macro qu’il puisse mettre à jour le fichier qu’est en train d’être utiliser.

Alors, j’ai pensé utiliser un nouveau fichier ("propre") seulement avec toutes les macros, modules et formulaires modifiés/nouveaux, ce fichier aurait une macro "maître" qui mettrait automatiquement à jour le "vieux" fichier, en remplaçant les macros, modules et/ou anciens formulaires par les nouveaux (correctement corrigés et mis à jour) et éventuellement insérer les nouveaux boutons/icônes pour appeler ces macros.

Pour qu’ainsi, je puisse envoyer donc uniquement ces fichiers de mise à jour, où l'utilisateur clique sur un bouton pour "exécuter la macro" qui met à jour l'ancien fichier, en préservant les données déjà saisies dans l'ancienne feuille de calcul.

J’ai m’excuse pour la limitation de mon français en essayent de vous explique ma difficulté sur ce problème, mais j'espère que j'aurais reussie au moins a me faire compreendre.

Merci pour votre patience sur cette aide précieuse.
 

patricktoulon

XLDnaute Barbatruc
bonjour
tu prend le problème a l'envers c'est pas l'ancien fichier avec les donnée que tu dois metre a jour mais éventuellement un xlam qui contienne les macros
macro qui seraient utilisée par le fichier avec les données
après effectivement si tout les deux jours tu ajoute des formulaires ou des boutons ou je ne sais quoi d'autre ca va être compliqué

de plus si c'est un fichier partagé selon l'administrateur du pc sur le quel il se trouve a peut etre boloquer l’écriture externe (à distance) donc nada

surtout que là on touche a la sécurité

donc a mon avis
fait un fichier avec les macros et formulaires (que tu modifier quand tu veux )
et un fichier qui contiendra les données
et c'est avec le premier que travailleront les utilisateurs sur le 2d
ainsi tu ne modifier et distribue que le fichier macro pas celui des données
pas besoins de mise a jour ,on change le fichier commande c'est tout
 

Etevaldo Santos

XLDnaute Nouveau
bonjour
tu prend le problème a l'envers c'est pas l'ancien fichier avec les donnée que tu dois metre a jour mais éventuellement un xlam qui contienne les macros
macro qui seraient utilisée par le fichier avec les données
après effectivement si tout les deux jours tu ajoute des formulaires ou des boutons ou je ne sais quoi d'autre ca va être compliqué

de plus si c'est un fichier partagé selon l'administrateur du pc sur le quel il se trouve a peut etre boloquer l’écriture externe (à distance) donc nada

surtout que là on touche a la sécurité

donc a mon avis
fait un fichier avec les macros et formulaires (que tu modifier quand tu veux )
et un fichier qui contiendra les données
et c'est avec le premier que travailleront les utilisateurs sur le 2d
ainsi tu ne modifier et distribue que le fichier macro pas celui des données
pas besoins de mise a jour ,on change le fichier commande c'est tout
Salut Patrick.

Merci de ton aide, mais je n’arrive pas a traité le problème à l’envers, puisque sont plusieurs utilisateurs différents, partages sur plusieurs bureaux avec de différentes donnes.

Au départ j’ai créé un fichier "standard" et j’ai lui distribué à plusieurs utilisateur ("clients") différents, en des lieux très éloigné les uns des autres.

Pour illustrer : dans ce fichier (avec plusieurs onglet) il y a une base de donnes qu’est utilisée pour faire des chiffrages et des devis, ou chaque bureaux (utilisateur) enrichi sa base de donnes avec leurs besoin spécifique, qu’est tout à fait différent des autres utilisateurs.

Je ne sais pas si un XLAM pourrait résoudre ce problème, puisqu’il y a plusieurs utilisateurs que travaillent chez eux et il n’y a pas comment garantir qu’ils auront chargé la dernière version du xlam dans leur ordinateur perso.

C’est vrai que la création des nouveaux formulaires ou des boutons ça pourrat très rarement arriver, celui-là serait une "mise à jour" spéciale qu’aurait lieu, éventuellement, une fois à chaque 2 ans, j’ai essayé, donc, d’avancer ce sujet pour commencer déjà à travailler sur cette possibilité lointaine, alors, pour ne pas compliquer les choses, on pourra exclure de ma demande initiale cette condition d'avoir des nouveaux boutons et formulaires.

Ma requête c’est justement pour aider à faire une mise à jour de chaque ficher dans le bureau de l’utilisateur, où qu’il soit, simplement en lui envoyant un fichier de mise á jour, qu’ira faire automatiquement cette modification dans son fichier source.

Mon idée c’est d’exclure le module actuel et le remplacer par un nouveau (avec les macros mise à jour).

En utilisant quelque chose comme celui-ci :

Sub EXCLURE_MODULE()
'Le principal souci c’est avoir besoin de ajouter la référence Extensibility pour que cet code puisse fonctionner

Dim moduleActuel As VBComponent

Fichier_Source = Range ("A1").value ' "c:\temp\FichieSource.xlsm"
Workbooks.Open (Fichier_Source)

'Mod1 c’est le nom du module lequel il y a des macros a mettre à jour

On Error Resume Next
Set moduleActuel = ActiveWorkbook.VBProject.VBComponents("Mod1")
ActiveWorkbook.VBProject.VBComponents.Remove moduleActuel
Set moduleActuel = Nothing

DoEvents

End Sub

Le problème c’est avoir une manière d’ajouter alors le nouveau module, comment en faire ?!

Merci encore
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Perso dans une telle situation je ne modifie pas les macros, Userform, boutons, etc. de l'ancien fichier, mais je mets dans le nouveau fichier un bouton permettant d'importer les données de l'ancien fichier vers le nouveau.

Ceci dit, ce n'est qu'une idée que je donne. 😉
 

Discussions similaires