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)
A voir également:
- Vba copier coller formule
- Historique copier coller - Guide
- Formule si et - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Style d'écriture a copier coller - Guide
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.:
n.b. Pas testé, codé à la volé :-)
Cdt
Lupin
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
Bonjour,
en plus court :
eric
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
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
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?
!