Comment changer les chemins et les liaisons en modifiant le nom du dossier maitr

Signaler
Messages postés
4
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
18 janvier 2010
-
Messages postés
4
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
18 janvier 2010
-
Bonjour,
Bonne et heureuse année à toutes et à tous !

Nouveau parmi vous, c'est ma première question !
Et je n'ai pas trouve le thème EXCEL VBA ...

A force de vous lire, et avec les multiples exemples et solutions données, j'ai pu me créer via Excel 2007 des automatisations et liaisons qui ont pour but de simplifier ma gestion immobilière privée.

Il y a un dossier "maitre" celui qui renferme tous les autres.
Son nom : 2009

Pour l'année 2010, je pensais dupliquer mon dossier 2009, puis le renommer 2010 ... afin de pouvoir consulter et travailler avec le vieux (2009) et le nouveau 2010.

Bien entendu, toutes les liaisons et toutes les formules ne fonctionnerons plus, si le nom du dossier maitre varie.

Il y a trop de liens et formules pour que je puisse tout modifier à la main sans en oublier ...

Auriez vous une solution à me soumettre ?

5 réponses

Messages postés
81
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
12 avril 2013

Salut
Fonction Rechercher/Remplacer dans feuille ou code.(rechercher :"2009">>>remplacer>>>"2010"
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Bonjour,
Bien entendu, toutes les liaisons et toutes les formules ne fonctionnerons plus, si le nom du dossier maitre varie.

Il y a trop de liens et formules pour que je puisse tout modifier à la main sans en oublier ...

Comment (exemples) sont exprimés tes liens et formules ?
Tout dépend de ta réponse
J'entrevois par exemple l'utilisation d'une variable en leur sein (voire d'une cellule dédiée), ce qui ne te conduirait qu'à une seule modification, qui pourrait même être faite dynamiquement au moment de la copie d'un classeur vers un nouveau classeur. Voire enfin tout simplement une variable dont le contenu serait selon le cas tout ou partie du nom du classeur)
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
4
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
18 janvier 2010

Salut
Fonction Rechercher/Remplacer dans feuille ou code.(rechercher :"2009">>>remplacer>>>"2010"


Oui, MERCI, en effet, et en l'absence de toute automatisation, ce serait le moins fastidieux !
Je ne savais pas que c'était possible dans le code ! Re merci
Messages postés
4
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
18 janvier 2010

Comment (exemples) sont exprimés tes liens et formules ?
Tout dépend de ta réponse


MERCI pour ton intérêt.

Pour 80% ce sont des liaisons de classeur à classeurs soumises à conditions de ce type, voir plus longues :(car plus de conditions à remplir)
SI($A6C$4;$Y6;('X:\2009\INDIVISION\[INDIVISION 1.xlsm]LOYERS CHARGES'!B$18))

Pour le reste, des formules (code) du type :
Là pour incrémenter et enregistrer un honoraire dans lo dossier Honoraires :

Workbooks.Open Filename:="X:\2009\HONORAIRES 2009\A"
Sheets("Facturation").Select
Sheets("Facturation").Range("C16").Select
ActiveCell.FormulaR1C1 = "='[INDIVISION 1.xlsm]FICHE LOCATAIRE'!R42C8"
Sheets("Facturation").Range("C18:G18").Select
ActiveCell.FormulaR1C1 = "='[INDIVISION 1.xlsm]FICHE LOCATAIRE'!R13C3:R13C6"
Sheets("Facturation").Range("C20:G20").Select
ActiveCell.FormulaR1C1 = "='[INDIVISION 1.xlsm]FICHE LOCATAIRE'!R21C3:R21C6"
Sheets("Facturation").Range("C22:G22").Select
ActiveCell.FormulaR1C1 = "='[INDIVISION 1.xlsm]FICHE LOCATAIRE'!R29C3:R29C6"
Sheets("Facturation").Range("D25:F25").Select
ActiveCell.FormulaR1C1 = "='[INDIVISION 1.xlsm]FICHE LOCATAIRE'!R42C4"
Sheets("Facturation").Range("D26").Select
Sheets("HONORAIRES DE MISE EN LOCATION").Select
Sheets("HONORAIRES DE MISE EN LOCATION").Range("L12").Select

Il y a aussi, une liste déroulante sur 2 colonnes pour repérer et ouvrir le classeur de chaque locataires :
La liste est très longue car pour chaque lot, je le duplique trois fois, car celà me laisse la possibilité de gérer dans le cas de trois changements de locataire dans la même année, du coup ça fait des lignes et des lignes ...
Exemple pour deux lots non assignés :

X:\2009\SCI ANDLAU\ANDLAU 1b ANDLAU 1b
X:\2009\SCI ANDLAU\ANDLAU 1c ANDLAU 1c
X:\2009\SCI HELROT\ANVERS 1b ANVERS 1b
X:\2009\SCI HELROT\ANVERS 1c ANVERS 1c
X:\2009\ANVERS 39\ANVERS 39b ANVERS 39b
X:\2009\ANVERS 39\ANVERS 39c ANVERS 39c

Là, c'est une macro qui ouvre plusieurs classeurs, pour forcer à rafraichir les nombreuses liaisons qui ne ce mettent pas à jour sans ... (d'ailleurs je n'ai jamais compris pourquoi ...)
Il y en a plus, là je n'ai qu'un exemple :

Private Sub CommandButton2_Click()

Application.ScreenUpdating = False

Workbooks.Open Filename:="X:\2009\INDIVISION\MAISON INDIVISION"
Sheets("LOYERS INDIVISION").Select
Workbooks("MAISON INDIVISION").Close SaveChanges = False

Workbooks.Open Filename:="X:\2009\NOUVELLE VEAUX\MAISON NOUVELLE VEAUX"
Sheets("LOYERS NV").Select
Workbooks("MAISON NOUVELLE VEAUX").Close SaveChanges = False

Workbooks.Open Filename:="X:\2009\SCI ANDLAU\MAISON ANDLAU"
Sheets("LOYERS ANDLAU").Select
Workbooks("MAISON ANDLAU").Close SaveChanges = False

Application.ScreenUpdating = True


End Sub


Pour finir, il y a bien sur les fameux liens hypertexte, mais là ... je crois qu'il faudra le faire manuellement ...

N'ayant pas une vu d'ensemble du fonctionnement des macros et du code, (débutant oblige) mes applications n'ont vu le jour, qu'au travers d'exemples trouvé sur le site. De ce fait il est certain que l'ensemble manque d'optimisation !
Mais cela tourne malgré quelques lourdeurs par moment ...

Voici donc un panel, des situations recommandant une modification de 2009 vers 2010 ...

Si tu peux mieux cerné le problème

Pour finir, 2009 est un dossier dans lequel sont réunis tous les dossiers nécessaires au bon fonctionnement de l'ensemble.
Toutes les liaisons entre classeur, les fonctions de recherches, les documents textes, les classeurs de calcul etc ...
Messages postés
4
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
18 janvier 2010

J'ai trouvé ce code :
ici : http://www.excelabo.net/trucs/rechercher_remplacer

sub Remplacer()
'Hervé, mpfe
Dim Classeur As Workbook
Dim Module As Object
Dim Rechercher As String
Dim Remplacer As String
Dim Trouver As Integer
Dim I As Integer

'Le module où se trouve cette proc
'doit s'appeler "ModuleDeMiseAJour" afin qu'aucune modif ne soit faite
'dans cette proc
Rechercher = "MonMotQueJeN'aimePlus"
Remplacer = "MonMotQueJ'aime"
For Each Classeur In Workbooks
For Each Module In Classeur.VBProject.VBComponents
With Module.CodeModule
If Module.Name <> "ModuleDeMiseAJour" Then
For I = 1 To .CountOfLines
Trouver = InStr(.Lines(I, 1), Rechercher)
If Trouver > 0 Then
'si une occurrence est trouvée, fait la modif et boucle
'sur la ligne afin de remplacer tous les mots
Do
.ReplaceLine I, Left(.Lines(I, 1) _
, Trouver - 1) & Remplacer & _
Mid(.Lines(I, 1), _
Trouver + Len(Rechercher) _
, Len(.Lines(I, 1)))
Trouver = InStr(Trouver + 1, _
.Lines(I, 1), Rechercher)
Loop While Trouver <> 0
End If
Next I
End If
End With
Next Module
Next Classeur
Set Classeur = Nothing
Set Module = Nothing
end sub

Mais n'arrive pas à le mettre en œuvre, de plus il ne fonctionne que sur les classeurs ouverts.
Il me faudrait faire une macro pour les ouvrir tous, puis les refermer à la fin. (ça c'est dans mes possibilité !)