Autres Supression de formule sur des cases ciblées avec condition - Excel 2007 VBA

otarc

XLDnaute Junior
Bonjour,

J'aimerai savoir si il est possible de supprimer toutes les formules des cases contenant les mots "RechercheV", "Index", "Equiv" dans leur formule. sans enlever les valeurs des cases. Sur le classeur entier.

Une solution est-elle également possible en définissant les feuilles à choisir ?

Je vous remercie pour votre retour,

Bien cordialement
 
Solution
Bonjour à tous

A otarc : si tu relis mon intervention dans ton autre discussion au sujet de tels remplacements, tu observeras que j'y évite (pour éviter des problèmes de mémoire) d'analyser toutes les cellules, ne me focalisant que sur celles contenant une formule.

cette discipline est encore plus grande dans ce que tu veux faire maintenant, car elle a également une incidence en matière de vitesse de traitement.

Voici ce que ne te propose :

VB:
Private Sub CommandButton1_Click()
  Dim sh As Worksheet, plage As Range, c As Range, k As intege, dic
  dic = Array("=*VLOOKUP*", "=*INDEX*", "=*MATCH*")
  For Each sh In ActiveWorkbook.Worksheets
    On Error Resume Next
    Set plage = sh.Cells.SpecialCells(xlCellTypeFormulas)
    If Not...

jmfmarques

XLDnaute Accro
Moi j'ai mis ce code :

Dim sh As Worksheet, plage As Range, c As Range, k As Integer, dic
dic = Array("=*RECHERCHEV*", "=*INDEX*", "=*EQUIV*", "=*INDIRECT*", "=*SIERREUR*", "=*ESTERREUR*")
Non. pour des raisons de portabilité, il est préférable de mettre les noms anglais des fonctions et non les noms français (RECHERCHEV -->> LOOKUP , etc ...)
Et utiliser (comme je l'ai fait) la propriété Formula (valable quelle que soit la langue de la version) et non la propriété formulalocal (en langue locale uniquement)
Si tu as des difficultés à trouver la correspondance anglaise des fonctions présentes dans une formule mise par exemple en A1, cette simple instruction t'y aidera :
msgbox range("A1").formula
 

otarc

XLDnaute Junior
Soit, mais quelle est la prise de priorité pour savoir si oui ou non la case contenant les fonctions sera remplacé par la valeur ?

J'ai remarqué que si et seulement si il y a 2 des fonctions que j'ai paramétré, ça me remplace par la valeur sinon ça ne le fait pas.
 

jmfmarques

XLDnaute Accro
Je ne te comprends pas
Le code que je t'ai donné est tel qu'il suffit de la présence de l'une des fonctions concernées pour supprimer la formule et la remplacer par sa valeur.
je ne sais pas ce que tu fais, mais là, je crois que je vais t'abandonner.
 

jmfmarques

XLDnaute Accro
si je mets que RECHERCHEV, ça ne me remplacera pas les cellules contenant RECHERCHEV
Et où (relis-moi) t'ai-je dit de mettre ce mot dans l'array dic ?
Pour mémoire :
dic = Array("=*VLOOKUP*", "=*INDEX*", "=*MATCH*")

veux-tu bien faire l'effort de faire tout ce qui t'a été dit, notamment en ce qui concerne la traduction en anglais des fonctions de la formule ?
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa