Remplacer des parties d'une formule dans plusieurs cellules

lejepie Messages postés 6 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 30 octobre 2008 - 28 oct. 2008 à 17:49
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 31 oct. 2008 à 21:20
Bonjour,

Novice de chez novice en VBA, je sollicite votre aide (pour info, je suis sur Excel 2007)...

Mon problème: remplacer dans chaque cellule de F5 à F130 la formule
=DROITE(etab2!$A$3;NBCAR(etab2!$A$3)-41) par
=DROITE(GAUCHE(etab2!$A$3;31);2),
sachant que cette formule est celle de la cellule F5, en F6, etab2 sera remplacé par etab3...

Voilà ce que j'ai essayé de faire:

Sub Boucle()
Dim Cellule As Range
Dim Formule As String

For Each Cellule In Range("F5:F135")
Formule = Replace(Cellule.Formula, Right(Cellule, 21), "31);2")
Formule = Replace(Cellule.Formula, "droite(", "droite(gauche(")
Cellule.Formula = Formule
Next Cellule
End Sub

Mais ça ne marche pas... J'ai le message erreur d'execution 13...

Merci pour votre aide

4 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 oct. 2008 à 17:55
topic déplacé de VB6 vers VBA
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
29 oct. 2008 à 23:04
J'ai peut-être loupé quelque chose, mais pourquoi ne pas tout simplement écraser les formules par des nouvelles ?

Range("F5:F135").Formula = "=Right(Left(etab2!$A$3,31),2)"

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
lejepie Messages postés 6 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 30 octobre 2008
30 oct. 2008 à 09:50
SAlut MPi,

Je peux pas remplacer car chaque cellule fera appel à un nom de feuille différent. Ainsi ça ira de etab2! à etab130!
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
31 oct. 2008 à 21:20
Tu pourrais essayer comme ceci

    Dim I As Long, Cellule As Range
   
    I = 1  ' si tu veux que les formules commencent avec "etab2"

    For Each Cellule In Range("F5:F135")
        I = I + 1
        Cellule.Formula = "=RIGHT(LEFT(etab" & I & "!$A$3,31),2)"
    Next

En principe, ça devrait fonctionner si la formule est bien la bonne ...

Si tu préfère utiliser les formules en français, change Formula pour FormulaLocal et change les virgules pour des points-virgules.

Désolé si je ne réponds pas rapidement. Mon compte a des problèmes. Je ne reçois plus les courriers de vbFrance (???)
0
Rejoignez-nous