[non résolu] vba : problème avec Selection.Replace

dedef

XLDnaute Occasionnel
Bonjour,

Je galère depuis plusieurs heures sans trouver la solution!

J'ai un classeur comportant 2 feuilles dont le contenu est au départ identique : "màj" et "màj_original".
Je souhaite notamment modifier les formules figurant dans "màj". La partie concernée de ma macro est :
Sheets("màj").Select
Range("AD2:AO61").Select
Selection.Replace What:=année_2, Replacement:=année_1, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=année_6, Replacement:=année_5, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("BD2:BO76").Select
Selection.Replace What:=année_2, Replacement:=année_1, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=année_6, Replacement:=année_5, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Et au final, les formules sont remplacées également dans "màj_original" !!!
Tout se passe comme si Selection.Replace était appliqué à l'ensemble du classeur et non pas à la seule feuille "màj" pourtant sélectionnée en tête.

Quelqu'un peut-il trouver mon erreur?

Merci d'avance.
 
Dernière édition:

laurent950

XLDnaute Accro
Re : vba : problème avec Selection.Replace

Bonsoir,

peut être comme cela :

VB:
With Sheets("màj")

 .Range("AD2:AO61").Replace What:=année_2, Replacement:=année_1, LookAt:=xlPart, _
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
  .Range("AD2:AO61").ReplaceFormat:=False
 
 .Range("AD2:AO61").Replace What:=année_6, Replacement:=année_5, LookAt:=xlPart, _
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
  .Range("AD2:AO61").ReplaceFormat:=False

  .Range("BD2:BO76").Replace What:=année_2, Replacement:=année_1, LookAt:=xlPart, _
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
  .Range("BD2:BO76").ReplaceFormat:=False

 .Range("BD2:BO76").Replace What:=année_6, Replacement:=année_5, LookAt:=xlPart, _
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
  .Range("BD2:BO76").ReplaceFormat:=False

End With

Je pense que cela devrait fonctionner que sur la Feuille "màj" et non sur les 2 feuilles en même temps (la feuille cible prise en compte avec l'instruction "Whith" / "End With").

' Enregistreur de maco = select
Sheets("màj").Select
Range("AD2:AO61").Select
Selection.

(remplacer par)

' La feuille en Objet (avec With / End With) plus les select remplacer par les .
With Sheets("màj")
.Range("AD2:AO61").
Nota select est remplacer par les points . et With (met le feuille en mémoire)


Laurent
 
Dernière édition:

dedef

XLDnaute Occasionnel
Re : vba : problème avec Selection.Replace

Bonjour à tous,

J'ai testé les éléments proposés, mais sans succès.
Mes fichiers de travail étant relativement gros, j'ai créé 2 fichiers test qui mettent en évidence le problème que je rencontre : 2007.xls et suivi.xlsm.

La macro est activable à partir de l'onglet init. Elle :
  • ouvre 2007.xlsx et le renomme en 2008.xlsx
    ferme 2008.xlsx
    sélectionne une plage du seul onglet màj du fichier suivi.xlsm et y remplace 2007 par 2008 (dans les formules)
    ferme init.xlsm
    supprime 2007.xlsx
Au final, le remplacement de 2007 par 2008 se retrouve également dans màj(2) qui était au départ une copie de màj!! Tel est mon problème.

Merci d'avance.
 

Pièces jointes

  • 2007.xlsx
    6.9 KB · Affichages: 51
  • suivi.xlsm
    18 KB · Affichages: 52
  • suivi.xlsm
    18 KB · Affichages: 52
  • suivi.xlsm
    18 KB · Affichages: 54
Dernière édition:

Discussions similaires

Réponses
1
Affichages
121

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 117
dernier inscrit
augustin.morille