Replace ne respecte pas la zone où elle doit s'appliquer

Bonjour,

J'ai une macro affectée à un bouton bascule, qui marchait très bien :

Elle consiste à remplacer dans des formules (colonne D) des numéros de variable (colonne A) par leur libellé (colonne C) et vice-versa.

Private Sub ToggleButton1_Click()

Dim J As Long

Sheets("7-490").Select

If ToggleButton1.Value Then

For J = 2 To 300

Worksheets("7-490").Columns("D").Replace What:=Range("A" & J), Replacement:=Range("C" & J), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Next J

ToggleButton1.Caption = "remettre en N° "

Else

For J = 2 To 300

Worksheets("7-490").Columns("D").Replace What:=Range("C" & J), Replacement:=Range("A" & J), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Next J

ToggleButton1.Caption = "expliciter"

End If

End Sub

Depuis quelques jours, au lieu de n'appliquer le remplacement qu'à la colonne "D", elle l'applique à l'ensemble de la feuille et même à toutes les feuilles du classeur.

J'ai essayé des tas de variantes comme remplacer Columns("D") par range("D1:D1000"). Cela ne change rien.

Pouvez-vous s'il vous plait m'aider? Je suis à bout d'idées.

Merci

Bonjour terminus, le forum,

Depuis quelques jours, au lieu de n'appliquer le remplacement qu'à la colonne "D", elle l'applique à l'ensemble de la feuille et même à toutes les feuilles du classeur.

Essaie en précisant le nom de la feuille sur laquelle il faut agir....

Private Sub ToggleButton1_Click()

Dim J As Long
 With Sheets("7-490")
  For J = 2 To 300
   If ToggleButton1.Value Then
      ToggleButton1.Caption = "remettre en N° "
      .Columns("D").Replace What:=Range("A" & J), Replacement:=Range("C" & J), LookAt:=xlPart, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
   Else
      ToggleButton1.Caption = "expliciter"
      .Columns("D").Replace What:=Range("C" & J), Replacement:=Range("A" & J), LookAt:=xlPart, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
   End If
  Next J
 End With

End Sub

Cordialement,

Bonjour,

je vois que tu n'as pas préfixé tes range après what et replacement. IL prend donc les range (A &J) et (C&J) de la feuille active.

ceci dit cela n'explique pas le changement sur toutes les feuilles, que je ne peux pas m'imaginer au vu de ce bout de code (à moins qu'il n'y ait des formules sur toutes les pages qui font référence à la page sur laquelle se fait le changement réel.

exemple en page 1,2,3,4 tu as une formule =page0!A1. le remplacement est fait en page0!A1. mais tu le verras sur toutes les pages

sinon peux-tu nous mettre ton fichier ou un fichier exemple dans lequel tu as pu reproduire le problème ?

Bonjour xorsankukai ,

La solution fonctionne très bien, c'est super!

Je te remercie vivement, ç'est un grand soulagement.

Cordialement

Bonjour h2so4,

Merci pour ta réponse.

Entre temps, xorsankukai m'a donné une solution qui marche.

Ceci dit, je ne comprends pas très bien pourquoi le code qui fonctionnait s'est mis tout d'un coup bugger.

Aucune feuille ne fait référence aux autres. elle sont indépendantes.

Le problème n'est pas sur les range (A &J) et (C&J) qu'il prend correctement, mais sur la zone où il applique le remplacement : il prend non seulement la colonne D mais aussi les colonnes C, E etc... ainsi que les autres feuilles

Je ne peux pas fournir le fichier d'origine, pour des raisons de confidentialité des données.

Il faudra donc que je construise un exemple qui reproduise l'anomalie.

Bonsoir

Si tu as une solution tu peux clore le sujet je pense

Rechercher des sujets similaires à "replace respecte pas zone doit appliquer"