Etirer une formule sur plusieurs colonnes en VBA

grhum29

XLDnaute Junior
Bonjour,

Je travaille actuellement sur un fichier Excel qui importe un fichier CSV dans un premier temps puis traite les données dans différents tableaux via du code VBA.

Et c'est là que mon problème commence :

J'ai un tableau avec plusieurs colonnes et lignes qui doit se remplir avec une formule écrite en VBA.


Code:
    ' Récupération des consommations moyennes des véhicules
    Set PlgRé2 = Feuil1.[A16].Resize(Feuil1.[A65000].End(xlUp).Row - 15, 7)
    PlgRé2.Columns(2).FormulaR1C1 = "=IFERROR(((SUMIFS(R2C12:R9C12,R2C3:R9C3,RC1,R2C4:R9C4,R15C)*100)/(SUMIFS(R2C10:R9C10,R2C3:R9C3,RC1,R2C4:R9C4,R15C))),""0,00"")"


Le code ci-dessus me remplit bien la colonne B mais pas les colonnes C et D donc pour le moment j'utilise le code ci-dessous pour étirer ma formule et remplir mes colonnes C et D :


Code:
    LFinD = Feuil1.[B65000].End(xlUp).Row

        Range("B16:B" & LFinD & "").Select
       Selection.AutoFill Destination:=Range("B16:D" & LFinD & ""), Type:=xlFillDefault



Le problème est que le tableau ci-dessus est un import d'un fichier CSV et donc le nombre de lignes et de colonnes à calculer dans mon 2ème tableau peut varier. C'est donc là que le code ci-dessous a des limites car je m'arrête à la colonne D.

Ma question est donc de savoir comment je peux passer en variable le nombre de colonnes où il faut que ma formule se calcule?

Je vous mets en pièce jointe un exemple pour que ce soit plus clair.

Merci de votre aide car là je bloque malgré mes recherches faites sur le net et mes différentes tentatives...

Grhum29
 

Pièces jointes

  • test_macro.xlsm
    29 KB · Affichages: 24
  • test_macro.xlsm
    29 KB · Affichages: 34
  • test_macro.xlsm
    29 KB · Affichages: 29

Jacou

XLDnaute Impliqué
Re : Etirer une formule sur plusieurs colonnes en VBA

Bonsoir grhum29, bonsoir le forum,

peut-être en modifiant ton code comme suit :

LFinD = Sheets("Feuil1").Range("B15").End(xlDown).Row
LFinlg = Sheets("Feuil1").Range("B15").End(xlToRight).Column


Range(Cells(16, 2), Cells(LFinD, 2)).Select
Selection.AutoFill Destination:=Range(Cells(16, 2), Cells(LFinD, LFinlg)), Type:=xlFillDefault
Bonne nuit
 

Pièces jointes

  • test_macro grhum29.xlsm
    34.1 KB · Affichages: 27

Discussions similaires

Statistiques des forums

Discussions
312 242
Messages
2 086 528
Membres
103 243
dernier inscrit
SAH