VBA: Copier Formule dans Colonne sans F.RC1C1
Résolu
SaraNeden
-
SaraBilmem -
SaraBilmem -
Bonjour à tout le monde,
Savez-vous s'il est possible avec VBA de copier une formule dans une colonne par rapport à une colonne de référence de longueur variable sans utiliser "FormulaR1C1"?
L'idée serait que (en simplifiant):
- Ma colonne A contient une liste de noms (la longueur de la liste et les noms varient)
- Mes colonnes de B à Z contiennent des formules dans la 1ère cellule (pour l'instant je place le curseur sur toute ma ligne et "double-click" mais c'est pas terrible car je dois le faire sur un très grand nombre de colonnes et sur plusieurs feuilles). Tant qu'il y a des noms dans la colonne A, il y a besoin de recopier ces formules.
Mon but est de faire économiser du temps aux personnes qui utiliseront mon fichier par la suite.
En espérant avoir su m'exprimer clairement, je vous remercie d'avance pour votre aide:)
SaraNeden (novice en VBA)
Savez-vous s'il est possible avec VBA de copier une formule dans une colonne par rapport à une colonne de référence de longueur variable sans utiliser "FormulaR1C1"?
L'idée serait que (en simplifiant):
- Ma colonne A contient une liste de noms (la longueur de la liste et les noms varient)
- Mes colonnes de B à Z contiennent des formules dans la 1ère cellule (pour l'instant je place le curseur sur toute ma ligne et "double-click" mais c'est pas terrible car je dois le faire sur un très grand nombre de colonnes et sur plusieurs feuilles). Tant qu'il y a des noms dans la colonne A, il y a besoin de recopier ces formules.
Mon but est de faire économiser du temps aux personnes qui utiliseront mon fichier par la suite.
En espérant avoir su m'exprimer clairement, je vous remercie d'avance pour votre aide:)
SaraNeden (novice en VBA)
4 réponses
-
Bonjour,
L'affectation d'une formule vers une cellule peut se faire
selon la propriété [ Value ], la propriété [ FormulaR1C1 ] est
utile pour lire la formule :
ex.:
Option Explicit Sub TransfertFormule() 'Application.ScreenUpdating = False ' Augmente la performance Dim LimiteL As Long, LimiteC As Long Dim BoucleL As Long, BoucleC As Long Dim Formule As String LimiteL = Range("A65535").End(xlUp).Row LimiteC = Range("A1").End(xlToRight).Column Range("A1").Select For BoucleL = 1 To Limite For BoucleC = 1 To LimiteC Formule = ActiveCell.Offset(0, BoucleC).FormulaR1C1 ActiveCell.Offset(BoucleL, BoucleC).Value = Formule Next BoucleC Next BoucleL 'Application.ScreenUpdating = True End Sub '
n.b. Pas testé, codé à la volé :-)
Cdt
Lupin-
-
Re, ma liste de formule allant de la cellule R3 à EM3, j'ai changé le code, mais rien ne se passe..
Option Explicit
Sub TransfertFormule()
Application.ScreenUpdating = False ' Augmente la performance
Dim LimiteL As Long, LimiteC As Long
Dim BoucleL As Long, BoucleC As Long
Dim Formule As String
LimiteL = ThisWorkbook.Sheets("IN").Range("A65535").End(xlUp).Row
LimiteC = ThisWorkbook.Sheets("IN").Range("R3").End(xlToRight).Column
ThisWorkbook.Sheets("IN").Range("R3").Select
For BoucleL = 3 To LimiteL
For BoucleC = 18 To LimiteC
Formule = ActiveCell.Offset(0, BoucleC).FormulaR1C1
ActiveCell.Offset(BoucleL, BoucleC).Value = Formule
Next BoucleC
Next BoucleL
Application.ScreenUpdating = True
End Sub
Est-il possible de m'éclairer? -
-
-
Bonjour,
en plus court :[E2:G2].AutoFill Range("E2:G" & Cells(Rows.Count, 1).End(xlUp).Row)recopie les formules présentes en E2:G2 vers le bas jusqu'à la dernière ligne remplie de A.
eric -
Bonjour,
Comme tu peux voir Sara, il existe des méthodes plus courte
comme eric nous a montré.
Je suis plustôt du style explicite et je passe par le chemin qui
semble le plus long mais étant donné que tu avais spécifié
que tu étais novice sous VBA, je préconise plus une approche
explicite.
Néanmoins, si tu continue dans cette voie, tu pourras bientôt
toi aussi codé à la volé. Comme le disait Einstein :
La connaissance s'acquiert par l'expérience,
tout le reste n'est que de l'information.
Cdt
Lupin -
Bonjour,
En cherchant des solutions à mes problèmes, je suis retombée sur la question que j'avais moi-même posé mais n'avez pas vu la fin des réponses.
Merci pour vos conseils, je dois dire que depuis le temps, je me suis un peu améliorée!
Bonne journée
SaraBilmem