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 Sub

Si quelqu'un peut me donner un tuyau, je suis preneur!

Merci d'avance.

302007.xlsx (7.00 Ko)
26suivi.xlsm (18.36 Ko)

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 Sub

Merci 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.

Rechercher des sujets similaires à "impossible definir selection replace"