Suppression données dans formule

Bonjour,

J'ai un classeur vraiment très dense qui possède des formules qui font appel à une autre macro (déjà installée dans les compléments d'Excel).

Jusqu'à maintenant plusieurs des formules étaient faites de la façon suivante :

Cellule = $celluleprécédente/('chemin/accès/à/la/macro'!constante1(($cellule);($cellule)))*valeur

J'aimerais pouvoir supprimer le chemin (pour toutes les cellules de mon classeur qui sont concernées) ainsi que remplacer constante1 par une autre constante exemple constante2. Et rajouter à la première cellule entre parenthèse la valeur 200.

Cela donnerait :

Cellule = $celluleprécédente/(constante2(($cellule1 + 200);($cellule2)))*valeur 

Le souci que je rencontre c'est pour l'ajout de la valeur 200 dans la formule, c'est pour cela que j'ai besoin d'un petit coup de main.

Voici mon code pour la suppression du chemin et le changement de constante1 en constante2.

Sub toto()

Dim sAvant  As String
Dim sApr?s  As String

Sheets("Feuil1").Select

sAvant = "chemin/acc?s/?/la/macro"
sApr?s = ""
sAvant1 = "constante1"
sApr?s1 = "constante2"
Selection.Replace What:=sAvant, Replacement:=sApr?s, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.Replace What:=sAvant1, Replacement:=sApr?s1, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub

Merci d'avance pour le coup de main.

<config>Windows / Edge 18.17763</config>

Bonjour,

Ne suffirait-il pas de faire un rechercher/remplacer manuel :

('chemin/accès/à/la/macro'!constante1(($cellule)

par

(constante2(($cellule1 + 200)

puis

($cellule) par ($cellule2)

Cdlt,

Bonjour,

Je me suis mal exprimé, je rectifie mes propos.

Le soucis avec cette méthode est que "$cellule" n'est jamais la même valeur, ça peut être la colonne A la colonne R, AE, etc..

D'où mon problème pour y ajouter une valeur…

Je ne sais pas si vous avez une autre solution en tête ?

Merci

Oui, je m'en doutais un peu mais j'ai essayé quand même... Est-ce que les valeurs remplaçantes sont toujours les mêmes (cellule1 et cellule2) ?

Ta suggestion me servira dans tous les cas, donc merci beaucoup.

Pour répondre à ta question, malheureusement non,

Par exemple, pour la colonne D, on aurait la formule : D1 = $C1/(constante2(($U1 + 200);($Q1)))*valeur

Et pour la colonne Z on aurait : Z1 = $Y1/(constante2(($R1 + 200);($P1)))*valeur

Cette exemple s'applique à une trentaine de colonne, d'où l'utilité de faire cette manipulation de façon automatique.

Merci encore pour ton aide.

Ca me parait compliqué dans ce cas...

J'ai l'impression que construire une macro qui parvienne au résultat prendra plus de temps que modifier à la main, et en supposant qu'il s'agisse d'une opération unique et pas répétitive, il vaudrait mieux modifier à la main. Si ensuite la propagation de la formule aux autres lignes posait problème (du fait d'une discontinuité), ce serait déjà plus simple à coder...

Mais si jamais tu voulais quand même automatiser, le principe est de définir des array avec les valeurs avant après. Quelque chose comme ça par exemple :

Sub toto()

tform = array("=$C1/(constante2(($U1 + 200);($Q1)))*valeur", "$Y1/(constante2(($R1 + 200);($P1)))*valeur", ....) '<<< toutes les formules
taddr = array("D1", "Z1", ...) '<<< chaque item contient l'adresse correspondant à la formule du même item du tableau tform

with Sheets("Feuil1")
    for i = lbound(taddr) to ubound(taddr)
        .range(taddr(i)).Replace What:=.range(taddr(i)).formula, Replacement:=tform(i), LookAt:=xlPart, MatchCase:=False
    next i
end with

End Sub

Cdlt,

Je vais continuer mes recherches et je posterai la réponse si j'en trouve une...

Merci beaucoup pour ton temps et ton aide en tout cas.

Je t'en prie et désolé de ne pas pouvoir faire plus.

J'ai quand même édité mon commentaire au cas où...

Bonne continuation !

Rechercher des sujets similaires à "suppression donnees formule"