changer localisation fichier dans macro Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
p
poulu
Membre habitué
Membre habitué
Messages : 112
Inscrit le : 8 mai 2013
Version d'Excel : 2007

Message par poulu » 11 novembre 2013, 15:57

Bonjour,

J'ai cree pour mon entreprise un certains nombre de fichiers excel qui fonctionnent tous les uns en rapport avec les autres (Interfaces utilisateur/ base de donnees externe aux fichiers/ autre fichier pour analyser les donnees etc...).

Ceux-ci sont tous situes actuelement dans le meme dossier qu'on peut trouver sous:
U:\TPM\CLOSURES\Caplinie Linienbericht\produktion\2013

Les fichiers vont se remplir et s'alourdir au fur et a mesure du temps et donc les fichiers seront donc plus long a fonctionner.

Pour "eviter" ce probleme, un nouveau dossier sera cree chaque annee avec les meme fichiers (encore vides):
U:\TPM\CLOSURES\Caplinie Linienbericht\produktion\2014 / 2015 etc

Dans tous mes fichiers je fais appel aux differents classeurs en interaction en les nommant de cette facon:
Public Const workbook_name As String = "Z08_Linienführer.xlsm"
Public Const location_database As String = "U:\TPM\CLOSURES\Caplinie\Linienbericht\produktion\2013\Schichtfuhrer\Datenbank_Linienführer.xlsx"
Changer manuelement la localisation de tous les fichiers me prend moins de 5min. Mais vu que je ne compte pas travailler 50 ans dans cette entreprise, il faudrait qu'une personne ne connaissant rien en programmation puisse changer la localisation de la base de donnees ecrite dans chaque fichier en un click.

avez vous une idee?
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'726
Appréciations reçues : 2
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 11 novembre 2013, 17:07

Bonjour

A tester
Dans la procédure Workbook_Open
Private Sub Workbook_Open()
  location_database = "U:\TPM\CLOSURES\Caplinie\Linienbericht\produktion\[surligner]"[/surligner][surligner]& Year(Date) &[/surligner]"\Schichtfuhrer\Datenbank_Linienführer.xlsx"
End Sub
Et dans un module standard il faut modifier la déclaration de tes variables
Public Const workbook_name As String = "Z08_Linienführer.xlsm"
[surligner]Public location_database As String[/surligner]
Image
p
poulu
Membre habitué
Membre habitué
Messages : 112
Inscrit le : 8 mai 2013
Version d'Excel : 2007

Message par poulu » 12 novembre 2013, 08:29

Je pense que ton idee marcherait parfaitement.
Le seul gros soucis est que si on ne cree pas ce nouveau dossier le 31 decembre a minuit, il y aura un laps de temps durant lequel les fichiers seront inutilisables...

N'est il pas possible de creer une macro qui parcourt tous les fichiers excel d'un dossier (et si possible de ses sous-dossiers) pour modifier l'emplacement de la base de donnees dans les macros?

Au pire je peux inserer le lien de la base de donnees dans une cellule identique dans chaque fichier. Cette cellule pourrait donc etre facilement modifiable. Qu'en pensez vous?





Finalement j'ai trouve une solution "toute bete" en utilisant ce que tu proposais:
utiliser le chemin du fichier ouvert en l'appelant par son nom pour trouver ou se trouvera la base de donnees. Comme cela quelque soit le nom du dossier ou son emplacement, cela ne posera pas de probleme pour la suite.

Dans la procédure Workbook_Open:
Dim position As Integer
location_database = Workbooks(ActiveWorkbook.Name).Path

location_database = StrReverse(location_database)
position = InStr(1, location_database, "\")
location_database = Mid(location_database, position)
location_database = StrReverse(location_database)

location_database = location_database & "Schichtfuhrer\Datenbank_Linienführer.xlsx"
et reutiliser ce que tu disais dans un module standard
Public Const workbook_name As String = "Z08_Linienführer.xlsm"
Public location_database As String
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message