Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

"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
ça fait plusieurs fois que je teste sur des plages de cellules + petites et j'ai un message d'erreur Visual Basic avec pour seul contenu "400" et une croix rouge.
Je vais continuer toujours avec des plages plus petites.
 

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
Re,

Pouvez-vous joindre un fichier réduit mais néanmoins représentatif de votre fichier ?

Nota: c'est normal que ça ne fonctionne pas puisque vos formules n'ont pas la structure indiquée dans votre premier message
 
Dernière édition:

nicopat

XLDnaute Junior
voici un fichier dont les formules sont plus proches :
et je vais essayer de reprendre le feuillet de mon fichier réel mais ça va ma prendre qq minutes
 

Pièces jointes

  • nicopat- Exemple Remplacer- v2.xlsm
    18.1 KB · Affichages: 18

nicopat

XLDnaute Junior
Voici les feuillets extraits de mon fichier : le feuillet bleu contient les cellules bleues que je souhaite modifier.
Et le feuillet "data" contient les valeurs de références.
 

Pièces jointes

  • Classeur2.xlsx
    1.1 MB · Affichages: 26

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
417
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…