VBA: Copier Formule dans Colonne sans F.RC1C1

Résolu
SaraNeden -  
 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)

4 réponses

  1. Utilisateur anonyme
     
    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
    0
    1. SaraNeden
       
      OK merci beaucoup, je vais essayer (ps: eh bien j'espère un jour pouvoir coder à la volé comme toi:))
      0
    2. SaraNeden
       
      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?
      0
    3. SaraNeden
       
      Finalement tout est OK! Merci infiniment
      !
      0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
  3. Utilisateur anonyme
     
    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
    0
  4. SaraBilmem
     
    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
    0