J'ai fais pas mal de recherche sur le forum mais je ne trouve pas la réponse.
Alors voici mon problème:
J'ai un fichier avec des données et dans les dernières colonnes il y a un certain nombres de formule qui par défaut ne sont que sur la ligne2.
Pour simplifier, dans mon cas le nombre de ligne varie et le nombre de colonnes avec des formules varie aussi.
Donc j'aimerais bien dire la chose suivante en VBA:
"Si il y a une formule dans la cellule B2, alors tirer la formule, si il y a une formule dans la cellule C2, alors tirer la formule, si il y a une formule dans la cellule D2 alors tirer la formule etc....)
Voici ce que j'ai fait qui ne marche pas bien sûr!
VB:
Sub Macro_Test()
Dim LastRow As Long
Dim LastColumn As Long
Dim i As Long
LastRow = Sheets("test").Cells(Rows.Count, 1).End(xlUp).Row
LastColumn = Sheets("test").Cells(1, Columns.Count).End(xlToLeft).Column
For i = 1 To LastColumn
If Sheets("test").Cells(2, i).HasFormula Then
Range("i2:i" & LastRow).FillDown
End If
Next i
End Sub
Pour info voici un autre code qui marche bien , mais qui est incomplet car je suis obligé de modifier à chaque fois la formule si ma formule est dans une colonne différente
Code:
Sub Macro_Test2()
Dim LastRow As Long
LastRow = Sheets("test").Cells(Rows.Count, 1).End(xlUp).Row
Range("N2:N" & LastRow).FillDown
End Sub
alex53
Dans ton fichier exemple, il n'y a pas de formule en B2, C2 etc.. mais des valeurs
(les seules formules sont en colonne N et O)
Il y a un truc qui doit m'échapper
En reprenant une tes macros, avec une petite modif, est-ce que c'est mieux?
VB:
Sub Test()
Dim x&, z&
x = Cells(1).CurrentRegion.Columns.Count
z = Cells(Rows.Count, 1).End(3).Row
For i = 1 To x
If Cells(2, i).HasFormula Then
Range(Cells(2, i), Cells(z, i)).Formula = Cells(2, i).Formula
End If
Next
End Sub