Excel 07/ Pb macro VB/ Remplacer formule

Fermé
lejepie - 28 oct. 2008 à 16:48
 lejepie - 29 oct. 2008 à 11:03
Bonjour,

Novice de chez novice en VBA, je sollicite votre aide...

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
A voir également:

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
29 oct. 2008 à 09:22
bonjour

Avec "Formula" tu dois écrire ta formule en anglais sinon tu mets "Formulalocale"
0
Merci pour la réponse, en changeant formula par formulalocal il n'y a pas de bug!! grande première pour moi!

Par contre, il ne me remplace rien du tout... Le contenu des cellules n'a pas changé! Do you know why?


Sub Boucle()
Sheets("bdd").Select
Dim Cellule As Range
Dim Formule As String


For Each Cellule In Range("F5:F135")
Formule = Replace(Cellule.FormulaLocal, Right(Formule, 21), "31);2")
Formule = Replace(Cellule.FormulaLocal, "droite(", "droite(gauche(")
Cellule.FormulaLocal = Formule
Next Cellule
End Sub
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
29 oct. 2008 à 10:48
bonjour

Comme ceci ?
Formule = "=DROITE(GAUCHE(etab2!$A$3;31);2)"
For Each Cellule In Range("F5:F135")
      Cellule.FormulaLocal = Formule
Next Cellule 

J'ai juste repris ta formule de départ.
0
Le Pb c'est que on aura la formule "=DROITE(GAUCHE(etab2!$A$3;31);2)" que dans la cellule F5, en F6 on aure "=DROITE(GAUCHE(etab3!$A$3;31);2)" et ainsi de suite... d'où mon idée de mettre right pour ne pas m'embêter avec les différents etab...

Sub Boucle()
Sheets("bdd").Select
Dim Cellule As Range
Dim Formule As String


For Each Cellule In Range("F5:F135")
Formule = Replace(Cellule.FormulaLocal, Right(Formule, 21), "31);2")

Là je remplace les 21 derniers caractères de Formule par 31);2

Formule = Replace(Cellule.FormulaLocal, "droite(", "droite(gauche(")

Là je remplace droite( par droite(gauche(

Cellule.FormulaLocal = Formule

Next Cellule

End Sub
0