Changement de repertoire

GabriHell

XLDnaute Nouveau
J'ai un ptit problème avec mes fichiers EXCEL et j'ai essayé de 'pondre' une macro afin de resoudre mon problème mais j'ai encore quelques soucis.

Voilà mon problème : je dispose d'une centaine de fichiers EXCEL qui ont des liaisons vers d'autres fichiers EXCEL. Les lisaisons sont bien sur ecrit en dur dans le fichier. Mais le chemin vers les fichiers va changer. En gros je doit ecrire une macro qui modifie les chemins de chacune des liaisons.

J'ai donc ecrit la macro suivante à l'aide d'exemple sur le site et le forum (merci d'ailleurs) :

Option Explicit


Sub majFormules()

' Déclaration des variables
Dim Rechercher As String
Dim Remplacer As String
Dim cheminXlS As String
Dim I As Integer
Dim J As Integer
Dim Reponse As Object

' Initialisation des variables
Rechercher = Range('B1')
Remplacer = Range('B3')
cheminXlS = Range('B5')

' Recherche des fichiers dans un répértoire donné
With Application.FileSearch

.NewSearch
.FileType = msoFileTypeExcelWorkbooks
.LookIn = cheminXlS
.SearchSubFolders = True
.Execute

' Remplacement du chemin des formules
With .FoundFiles

For I = 1 To .Count

' Initialisation des variables
Dim appExcel As Excel.Application ' Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel

'Ouverture de l'application
Set appExcel = CreateObject('Excel.Application')

'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open('' & .Item(I) & '')

'Parcours de toutes les feuilles
For J = 1 To wbExcel.Worksheets.Count

'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(J)

' Modification des informations
Set Reponse = wsExcel.Cells.Find(Rechercher, wsExcel.Cells(1, 1))

If Not Reponse Is Nothing Then
wsExcel.Cells.Replace What:=Rechercher, Replacement:=Remplacer, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End If

Next J

wbExcel.Save 'Sauvegarde du classeur Excel
wbExcel.Close 'Fermeture du classeur Excel
appExcel.Quit 'Fermeture de l'application Excel

'Désallocation mémoire
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing

Next I

End With

End With

End Sub

Donc en gros je remplace la valeur de la variable Rechercher par celle de la variable Remplacer dans tous les fichiers excel qui se trouve dans le repertoire dont le chemin est cheminXlS

J'ai lancé ca marche. Mais le problème c'est qu'à chaque liaison une fenetre s'ouvre et me demande si je veux modifier la liaison.
Comment automatiser la validation de la modification de la liaison ?

Et au passage existe t'il y a moyen plus simple pour effectuer la mise à jour du chemin des liaisons ?

Merci de votre reponse
+++
 

WILFRIED

XLDnaute Impliqué
Salut gabriHell,

Pour ton chemin vers le paradis d'excel et ses ramification le seul petit tuyau que je peu te donner est :

Pour supprimer la demande de confirmation :
Application.displayalert=false

à remettre à True avant de quitter la macro!!!

A+
 

MichelXld

XLDnaute Barbatruc
bonjour GabriHell , bonjour Wilfried


la demande de mise à jour s'affiche lors de l'ouverture du classeur ou apres la modification ?

si c'est lors de l'ouverture , tu peux essayer cette adaptation , pour mettre à jour les liaisons sans afficher la boite de choix
( remplaces le 3 par un 0 pour ne pas mettre à jours les liaisons )

...
Set wbExcel = appExcel.Workbooks.Open('' & .Item(I) & '' , 3 )
...


bonne apres midi
MichelXld
 

Discussions similaires

Réponses
7
Affichages
538

Statistiques des forums

Discussions
314 626
Messages
2 111 294
Membres
111 093
dernier inscrit
Yvounet