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) :
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
+++
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
+++