Value à changer dans un code pour conserver les formules

Bonsoir le forum

Je remercie Banzai qui m'avait donné ce code ci dessous qui fonctionne bien.

Actuellement je souhaiterai juste que ce ne soit pas seulement la valeur de la cellule qui "bouge", mais bien la formule contenue dans la cellule. Comment modifier ce code en ce sens ? Remplacer le .Value par ...?

Merci pour toute aide,

Vincent

Sub DefilementPlus()
Dim i As Integer
Dim Tablo1
Dim Tablo2

  Tablo1 = Range("C115:I115")
  Tablo2 = Range("C117:I129")

  For i = 7 To 1 Step -1
    Range(Cells(3 + (i * 16), "C"), Cells(3 + (i * 16), "I")).Value = Range(Cells(3 + ((i - 1) * 16), "C"), Cells(12 + ((i - 1) * 16), "I")).Value
    Range(Cells(5 + (i * 16), "C"), Cells(17 + (i * 16), "I")).Value = Range(Cells(5 + ((i - 1) * 16), "C"), Cells(17 + ((i - 1) * 16), "I")).Value
  Next i
  Range("C3:I3") = Tablo1
  Range("C5:I17") = Tablo2
End Sub

Bonjour,

.formula ou .formulalocal

eric

J'ai remplacé tous les .Value par .formula ou .formulalocal

mais ça ne change rien...

Merci quand même !

D'autres idées ?

Bien sûr que si ça marche, et si tu doutes tu peux regarder l'aide excel qui est très bien faite.

Range.Formula, propriété

Cette propriété renvoie ou définit une valeur de type Variant qui représente la formule de l'objet dans une notation de style A1 et dans la langue de la macro.

Si tu n'utilises pas la notation A1 tu as aussi .formulaR1C1

Il faut le mettre des 2 cotés :

xxx.formula = yyy.formula

Seulement tes références relatives resteront inscrites en relatif, mais en conservant les références inscrites dans la cellule d'origine.

Et au lieu de dire ça ne change rien si tu disais ce que tu obtiens...

eric

Je regarde ça demain! c'est probablement moi qui ai fait une erreur...

Bonsoir

Une idée

Remplaces la recopie valeur par une simple copie

Sub DefilementPlus()
Dim i As Integer
Dim Tablo1
Dim Tablo2

  Tablo1 = Range("C115:I115")
  Tablo2 = Range("C117:I129")

  For i = 7 To 1 Step -1
    Range(Cells(3 + ((i - 1) * 16), "C"), Cells(12 + ((i - 1) * 16), "I")).Copy Cells(3 + (i * 16), "C")
    Range(Cells(5 + ((i - 1) * 16), "C"), Cells(17 + ((i - 1) * 16), "I")).Copy Cells(5 + (i * 16), "C")
  Next i
  Range("C3:I3") = Tablo1
  Range("C5:I17") = Tablo2
End Sub

Bonsoir le forum,

J'ai fait des tests, ça ne change rien > les valeurs défilent bien, et je perds les formules.

Je mets un fichier joint comme exemple.

Merci pour toute aide,

Vincent

Bonsoir

Au lieu de s'emm...der s'embêter à copier les formules, il suffit de modifier la source des formules

Sub DefilementPlus()
Dim i As Integer
Dim Tablo1
Dim Tablo2

  Tablo1 = Range("K115:Q115")
  Tablo2 = Range("K117:Q129")

  For i = 7 To 1 Step -1
    Range(Cells(3 + (i * 16), "K"), Cells(3 + (i * 16), "Q")).Value = Range(Cells(3 + ((i - 1) * 16), "K"), Cells(12 + ((i - 1) * 16), "Q")).Value
    Range(Cells(5 + (i * 16), "K"), Cells(17 + (i * 16), "Q")).Value = Range(Cells(5 + ((i - 1) * 16), "K"), Cells(17 + ((i - 1) * 16), "Q")).Value
  Next i
  Range("K3:Q3") = Tablo1
  Range("K5:Q17") = Tablo2
End Sub

Bonsoir, c'est en effet une trés bonne idée !

Merci !!

Rechercher des sujets similaires à "value changer code conserver formules"