Remplacement de caractères dans une variable

[Résolu/Fermé]
Signaler
-
Messages postés
6
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
26 juin 2008
-
Bonjour à tous,

Voici mon problème:
J’ai une variable string où je souhaite remplacer les caractères« KV » (jamais identique en nombre de récurrence ni en position dans la formule) par des coordonnées d’une cellule excel :

Dim formule As string

formule = -0,285751 * KV ^ 6 + 2,462966 * KV ^ 5 + -7,536414 * KV ^ 4 + 9,37239 * KV ^ 3 + -3,6979 * KV ^ 2 + 2,0023 * KV + -0,267315

Comment procéder ?

9 réponses

PS. J'ai oublié de préciser que le but est de retransformer cette formules modifié afin de pouvoir effectuer le calcul et que le lien avec la cellule dont on rentre les coordonnées se fasse bien.

Sub Test_modif_formule()

Dim formule As String
Dim formuleDef As String


'modification de la formule:
'Définir une variable string = à la formule précédente
formule = Range("F5").Value


'Faire une recherche de "KV" dans cette variable et le remplacer
formule = Replace(formule, "KV", "B10")

'Ajout des caractères=()
Range("G10").Formula ="=(" & formule & ")"

End Sub

Mon souci, le lien ne se fait pas avec la cellule "B10".

D'avance merci...
dim i as integer, var as string, nvar as string

i=len(var) ca c est pour aller a donf
nvar = Replace(var, "KV", "VQ", 1, i, vbBinaryCompare) tu remplaces KV par VQ
et tu as ta nlle variable
la cellule B10 est en dur. il faut mettre range("B10").value pour lire la cellule
Messages postés
6
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
26 juin 2008

Merci ego de ta rapidité,

Je m'y prends sûrement mal, mais je n'arrive pas à faire marcher ta solution.
Peux tu encore m'éclairer ?


Sub Test_modif_formule()
Dim i As Integer
Dim var As String
Dim nvar As String

i = Len(var)

'Définir var = à la formule à modifier
var = Range("F5").Value


'Faire une recherche de "KV" dans cette variable et le remplacer (cellule"B10")
nvar = Replace(var, "KV", "B10", 1, i, vbBinaryCompare)

'Coller la formule modifiée dans la cellule
Range("G10").Formula = " =( " & nvar & " ) "

End Sub
Messages postés
6
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
26 juin 2008

Mon souci est de créer un lien excel entre la cellule "B10" et la formule qui est dans la cellule "G10" de manière à ce que la formule soit "autonome" et se réactualise toute seule sans macro.
c est quelle cellule qui contient les valeurs? c est laquelle qui contient la formule ? et ou tu veux afficher le resultat?
Sub MaMacro()
Dim i As Integer, var As String, nvar As String, valeurG10 As Variant

i = Len(Range("B10")) 'ca c est pour aller a donf si la cellule B10 contient ta formule avec KV
valeurG10 = Range("G10").Value 'ici tu definis la valeur de G10
nvar = Replace(var, "KV", val, 1, i, vbBinaryCompare) 'tu remplaces KV par la valeur de G10 et tu as ta formule avec valeurG10 a la place de KV
ActiveCell.Value = nvar 'tu affiches le resultat sur la cellule que tu as surligné
'a la place de activecell, tu peux mettre range("A1") ou ce que tu veux.le changement de la valeur se ferait sur le changement de valeur de la cellule G10
'voila tu as de quoi avancer
End Sub
Bonjour,



Vous étiez proche du résultat mais il faut utiliser FormulaLocal comme propriété

********

Sub Test_modif_formule()



Dim formule As String

Dim formuleDef As Variant



'Définir formule = à la formule à modifier récupérée en "F5"

formule = Range("F5").Value



'Faire une recherche de "KV" dans cette variable et le remplacer (cellule"B10")

formuleDef = Replace(Replace(formule, "KV", "B10"), " ", "")



'Coller la formule modifiée dans la cellule D15

Range("D15").FormulaLocal = "=" & formuleDef



End Sub

********



Cordialement
Messages postés
6
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
26 juin 2008

Merci beaucoup cathy,
Exactement ce que j'espérai faire...
Récap: On récupère une formule en tant que variable, on remplace des caractères de cette formule par une cellule Excel liée.
Solution par Cathy, le jeudi 3 janvier 2008 à 17:03:12
Merci à tous