Impossible de définir sélection avec Selection.Replace ?
Bonjour,
Je suis novice en macro.
J'ai créé un fichier exemple pour illustrer la difficulté que je rencontre dans mon travail en cours.
J'ai un fichier "suivi" qui comporte 3 onglets :
- init comporte le bouton de lancement de la macro
maj copie des valeurs d'un fichier 2007
màj(2) est une simple copie de maj
Je veux changer la cible (remplacer 2007 par 2008 dans les formules) sur une plage (A1:B4) de la seule feuille maj, mais le résultat est que 2007 est remplacé par 2008 sur toutes les cellules de màj et de màj(2)!!!!!
Sub init()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim dossier_bdd As String, fichier_bdd As String, fichier_bdd_1 As String, chemin As String
dossier_bdd = ThisWorkbook.Path & "/"
fichier_bdd = "2007.xlsx"
fichier_bdd_1 = "2008.xlsx"
Workbooks.Open dossier_bdd & fichier_bdd
ActiveWorkbook.SaveAs Filename:=dossier_bdd & fichier_bdd_1, _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Save
ActiveWorkbook.Close
Sheets("màj").Select
Range("A1:B4").Select
Selection.Replace What:="2007", Replacement:="2008", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("A1:A1").Select
Sheets("init").Select
ActiveWorkbook.Save
chemin = dossier_bdd & fichier_bdd
Kill chemin
ActiveWorkbook.Close
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End SubSi quelqu'un peut me donner un tuyau, je suis preneur!
Merci d'avance.
Bonjour
D'après ce que j'ai compris
C'est ton SaveAs qui modifie tous tes liens (tu n'aurais pas besoin du Replace
J'ai inversé un peu ta macro
On fait la modification, on sauve
On fait une copie du fichier 2007 --> 2008
On ferme le fichier principal
Sub init()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim dossier_bdd As String, fichier_bdd As String, fichier_bdd_1 As String, chemin As String
dossier_bdd = ThisWorkbook.Path & "\"
fichier_bdd = "2007.xlsx"
fichier_bdd_1 = "2008.xlsx"
Sheets("màj").Select
Range("A1:B4").Select
Selection.Replace What:="2007", Replacement:="2008", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("A1:A1").Select
Sheets("init").Select
Application.Calculation = xlCalculationAutomatic
ActiveWorkbook.Save
Workbooks.Open dossier_bdd & fichier_bdd
' Ne passe pas avec XL 2003
'ActiveWorkbook.SaveAs Filename:=dossier_bdd & fichier_bdd_1, _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.SaveAs Filename:=dossier_bdd & fichier_bdd_1, _
CreateBackup:=False
ActiveWorkbook.Save
ActiveWorkbook.Close
chemin = dossier_bdd & fichier_bdd
Kill chemin
Application.ScreenUpdating = True
Application.DisplayAlerts = True
ActiveWorkbook.Close savechanges:=False
End SubMerci banzai64. C'est effectivement la solution, mais je ne comprends toujours pas pourquoi : si je procède manuellement dans l'ordre initial de ma macro, seules les formules des cellules sélectionnées sont modifiées!!
Encore merci.