"Remplacer par" multiples et consécutifs

nicopat

XLDnaute Junior
Bonjour,

Je dispose d'une table de données dans mon fichier excel, comme dans l'exemple ci-joint (feuillet 2).
Dans un autre feuillet (feuillet 1), j'ai plein de formules faisant des recherchev() dans la table du feuillet 2.
Dans l'exemple ci-joint, j'ai une table de 6 lignes, et 6 formules, mais en réalité, j'ai une table de 144 lignes et des milliers de formules.

Je cherche un moyen de remplacer dans les formules la fonction recherchev() par la valeur présente dans la table (exemple : remplacer "RECHERCHEV("A+B";Feuil2!A:B;2;FAUX)" par "1"), sans avoir à faire 144 "remplacer par" successifs. Et ce uniquement dans les cellules A1:B15 du feuillet 1, (pas dans tous les feuillets du classeur).

Je peux lister dans une colonne A les expressions à remplacer et dans une colonne B les expressions qui les remplacent, mais je voudrais éviter d'avoir à le faire manuellement 144 fois...

Je sais que c'est possible via une macro VBA, mais je ne sais pas le faire

Merci de votre aide!

Nicole
 

Pièces jointes

  • Exemple Remplacer.xlsx
    8.9 KB · Affichages: 33

nicopat

XLDnaute Junior
apparemment, ça fonctionne bien dans le fichier test.
Suis en train de le tester dans mon fichier réel.
J'ai environ 8000 formules à traiter avec environ 10 rehcerchev() à remplacer par formule, donc ça prend du temps...
Je posterai le résultat dans qq minutes (j'espère)
 

nicopat

XLDnaute Junior
Non, ça ne marche pas dans mon fichier : même en ne sélectionnant que 10 cellules, un message d'erreur Microsoft Visual Basic avec une croix rouge et pour seul contenu "400" s'affiche.
Le contenu du feuillet semble inchangé.

Une idée?

PS : les formules sont du types :
=BH8*BT8*RECHERCHEV("A";'Confrontation'!$Y$2:$Z$146;2;FAUX)
+ BH8*BU8*RECHERCHEV("B vs F+";'Confrontation'!$Y$2:$Z$146;2;FAUX)
+ BH8*BV8*RECHERCHEV("G>";'Confrontation'!$Y$2:$Z$146;2;FAUX)
+ BH8*BW8*RECHERCHEV("R";'Confrontation'!$Y$2:$Z$146;2;FAUX)
+ BH8*BX8*RECHERCHEV("Z-";'Confrontation'!$Y$2:$Z$146;2;FAUX)
+ BH8*BY8*RECHERCHEV("Y+";'Confrontation'!$Y$2:$Z$146;2;FAUX)
+ BH8*BZ8*RECHERCHEV("1";'Confrontation'!$Y$2:$Z$146;2;FAUX)
+ BH8*CA8*RECHERCHEV("5<Z+";'Confrontation'!$Y$2:$Z$146;2;FAUX)
+ BH8*CB8*RECHERCHEV("7";'Confrontation'!$Y$2:$Z$146;2;FAUX)
+ BH8*CC8*RECHERCHEV("8";'Confrontation'!$Y$2:$Z$146;2;FAUX)
+ BH8*CD8*RECHERCHEV("6";'Confrontation'!$Y$2:$Z$146;2;FAUX)
+ BH8*CE8*RECHERCHEV("3";'Confrontation'!$Y$2:$Z$146;2;FAUX)
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

Avec le dernier fichier que tu as fourni, voici une version v2 un peu plus complexe.

Pour un peu moins de 95 000 "RechercheV" à remplacer (7 896 formules à 12 "RechercheV" par formule) , mon vieux bousin qui date de mai 2007 exécute la macro en environ 21 secondes. Je n'ai pas tenu compte de l'optimisation de la durée d'exécution, puisqu'à priori, c'est une macro à usage unique.

Attention! Je n'ai pas créé de macros génériques. Les macros sont adaptées aux formules de votre fichier:
  • je ne gère pas les littéraux de type string entourés de guillemets. Ce qui signifie que si les chaines de DATA contenaient des parenthèses ouvrantes ou fermantes, les résultats seraient erronés
  • j'ai considéré que le retour des évaluations des expressions RechercheV étaient toutes des valeurs numériques
Dans le cas contraire, il faudrait revoir les macros.
 

Pièces jointes

  • nicopat- Exemple Remplacer- v2.xlsm
    1.1 MB · Affichages: 53
Dernière édition:

Discussions similaires

Réponses
26
Affichages
377

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16