Replace en masse avec une boucle et un tableau

Bonjour et bonne année,

Quelqu’un peut-il m’aider ? Mon pb est le suivant :

J'ai une liste d'environ 400 valeurs différentes à remplacer par d'autres dans un tableau énorme.

j'ai fait une macro du genre 1°) un tableau de substitution, 2°) une boucle pour le replace :

Dim tab_substitution(500, 1)

tab_etiq(0, 0) = "Monsieur"

tab_etiq(0, 1) = "Mr"

tab_etiq(1, 0) = "Madame"

tab_etiq(1, 1) = "Me"

tab_etiq(2, 0) = "Mademoiselle"

tab_etiq(2, 1) = "Mle"

tab_etiq(3, 0) = … etc …..

et un peu plus loin .......la boucle du genre (avec 3 essais différents 1-2 et 3)

For i = 1 To 500

1 Cells.replace What:= “Monsieur”, Replacement:= “Mr”,

1 LookAt:=xlWhole, SearchOrder:=xlByColumns, MatchCase:=False, _

1 SearchFormat:=False, ReplaceFormat:=False

2 chaineOrig = tab_etiq(i, 0) ' avec les valeurs de i qu'il faut

2 chaineDest = tab_etiq(i, 1)

2 Cells.replace What:= chaineOrig, Replacement:= chaineDest,

2 fin instruction

3 Cells.replace What:=tab_etiq(i, 0), Replacement:=tab_etiq(i, 1),

3 fin instruction

Next

CONCLUSION :

essai 1 marche mais comme je veux utiliser une boucle, je ne peux pas utiliser cette syntaxe.

les essais 2 et 3 ne marchent pas (syntaxe)

Je ne sais plus quoi faire.

Merci à la bonne âme qui m’aidera.

Bonsoir

Une idée en passant par ici

Dans une page à part (exemple "Données" tu fais 2 colonnes

Colonne A : Les anciennes appellations

Colonne B : Les nouvelles appellations

Ensuite en sélectionnant ta page à modifier les appellations : ( attention code non testé)

Option Explicit

Sub Remplace()
Dim J As Long
  With Sheets("Données")
    For J = 1 To .Range("A" & Rows.Count).End(xlUp).Row
      Cells.Replace what:=.Range("A" & J), replacement:=.Range("B" & J), lookat:=xlWhole
    Next J
  End With

End Sub

Merci pour ta réponse mais j'apporte 3 précisions :

1°) je suis débutant, donc j'utilise l'enregistreur de macro,

2°) le classeur source n'est pas à moi et je ne peux que le lire - donc je n'ajoute pas de colonne dans le source. De plus il est très très gros et fortement "formulé". C'est pour cela que je cherche à faire une macro avec des replaces en masse, ensuite des instructions de genre"=(classeur.feuille.plage(indices))", donc entre classeurs et entre feuilles. Ce que j'appelle indices, ce sont tout un tas d'indices de boucles de paramétrages.

Le pb est qu'à la compil, il me dit qu'il attend une info de style "chaine de caracteres" et même si je mets une zone string avec le bon contenu, il en veut pas car le Cells.replace What:= n'air d'accepter que ="xxxx".

Comment faire ? C'est pas possible qu'il n'y ai pas un moyen !

3°) mes boucles seront des copier-coller / replace / des fonctions genre "somme (A1:C1)" etc. Bref plein de prépa sur les données avant de ranger tout ca dans une base access via des imports de mes résultats via un csv.

Pour info, j'ai à ce jour environ 140 replace, 248 formules (x 20). Mais des paramètres de "replace" très variables d'une fois à l'autre. Donc je veux faire à partir d'une table et boucles et rien faire en "dur".

Any help ???

Bonjour

besson a écrit :

1°) je suis débutant, donc j'utilise l'enregistreur de macro,

Pas grave, c'est plus simple il suffit copier le code

besson a écrit :

2°) le classeur source n'est pas à moi et je ne peux que le lire - donc je n'ajoute pas de colonne dans le source.

Pas besoin tes colonnes que j'indique peuvent être dans un autre classeur, dans la macro, il suffit de bien indiquer le chemin

besson a écrit :

ensuite des instructions de genre"=(classeur.feuille.plage(indices))", donc entre classeurs et entre feuilles. Ce que j'appelle indices, ce sont tout un tas d'indices de boucles de paramétrages.

la je ne comprends pas ce que tu veux dire

besson a écrit :

car le Cells.replace What:= n'air d'accepter que ="xxxx".

Là si tu comprends c'est bien

besson a écrit :

Donc je veux faire à partir d'une table et boucles et rien faire en "dur".

Heuuu que tu écrives tes données dans la macro ou dans une feuille à part c'est du pareil au même, avec quand même un avantage pour les colonnes (plus facile à modifier)

Sans le fichier à modifier pas sur que je puisse t'aider

Rechercher des sujets similaires à "replace masse boucle tableau"