Copie AutoFill avec formule

Bonjour,

Je chercher a copier un formule sur un tableau dont la largeur change et la hauteur pareil.

j ai commence avec

LastLigne = Range("A2", Selection.End(xlDown))

LastColone =Range("B2", Selection.End(xlToRight))

Range(Selection, Selection.End(xlToRight)).AutoFill Destination:=Range("B2:" & LastColone & LastLigne), Type:=xlFillDefault

2 2 2 2 2

2 formule formule formule formule formule

2

2

2

2

j'arrive a coller la formule sur la premier ligne, la sélectionner mais quand je fait la copie avec selection.end, mais cela copie jusqu'à la fin du tableau(65536) et je voudrais la coller en descendant jusqu'à la dernière ligne. Apres tous les tests je suis perdu.

Merci par avance.

21autofill.zip (6.94 Ko)

Bonjour. Bienvenue sur le Forum

Avec un fichier Excel, ton sujet serait plus compris et tu aurais plus de chance d'avoir une réponse.

cordialement

Bonjour,

AutoFill et End inutiles car le plus efficace est d'intégrer la formule au bloc entier :

    With Feuil1.Cells(1).CurrentRegion
        .Cells(2, 2).Resize(.Rows.Count - 1, .Columns.Count - 1).FormulaR1C1 = "FORMULE"
    End With

Bonjour,

Merci Marc L, mais dans mon cas la formule ne doit pas être identique.

Je rajoute un fichier qui correspond mieux, je souhaiterais copier les formules de B2 a la dernière colonne jusqu'à la dernier ligne.

Pour trouver si l'utilisateur fait partie du groupe de la page 2.

Merci d'avance bonne journée.

19autofill.zip (9.07 Ko)

Rien n'empêche de l'appliquer en colonne :

    With Feuil1.Cells(1).CurrentRegion
        With .Cells(2, 2).Resize(.Rows.Count - 1, .Columns.Count - 1)
             .Columns(1).FormulaR1C1 = "FORMULE1"
             .Columns(2).FormulaR1C1 = "FORMULE2"
        End With
    End With

Avec :

Sub test()
 With Feuil1.Cells(1).CurrentRegion
        With .Cells(2, 2).Resize(.Rows.Count - 1, .Columns.Count - 1)
            .Columns(1).FormulaR1C1 = "=IF(ISERROR(HLOOKUP(R[0]C1,Feuil2!R1,1,FALSE)),"""",""m"")"
            .Columns(2).FormulaR1C1 = "=IF(ISERROR(HLOOKUP(R[0]C1,Feuil2!R2,1,FALSE)),"""",""m"")"
            .Columns(3).FormulaR1C1 = "=IF(ISERROR(HLOOKUP(R[0]C1,Feuil2!R3,1,FALSE)),"""",""m"")"
            .Columns(4).FormulaR1C1 = "=IF(ISERROR(HLOOKUP(R[0]C1,Feuil2!R4,1,FALSE)),"""",""m"")"
            .Columns(5).FormulaR1C1 = "=IF(ISERROR(HLOOKUP(R[0]C1,Feuil2!R5,1,FALSE)),"""",""m"")"
        End With
    End With
End Sub

Cela fonctionne parfaitement Mais je ne connais pas le nombre de colonnes

Et pourtant il est déjà dans ce code ‼

Sinon tenter une explication claire, complète et précise …

Merci du temps que vous passer pour commencer,

ma ligne de formule est OK, il faut "juste" la sélectionner et la copier vers le bas jusqu'à la dernière ligne remplie.

Selection.AutoFill Destination:=Range("B2:" & Range("B:B" & Columns.Count).End(xlUp).Column) & Range("A:A" & Rows.Count).End(xlUp).Row), Type:=xlFillDefault

En gros je me positionne sur B2,

ctrl+maj+Droite (ma formule est copier avec une boucle)

ctrl+C

ctrl+maj+Bas (sauf que la je vais tout en bas)

ctrl+V

j'espère que cela est compréhensible.

Voila c'est OK.

Pour

Sub test()
 With Feuil1.Cells(1).CurrentRegion
        With .Cells(2, 2).Resize(.Rows.Count - 1, .Columns.Count - 1)
        For compteur = 1 To Lastcolonne
        feuille = "feuil2!R" & compteur
            .Columns(compteur).FormulaR1C1 = "=IF(ISERROR(HLOOKUP(R[0]C1," + feuille + ",1,FALSE)),"""",""m"")"
        Next compteur
        End With
    End With
End Sub
Rechercher des sujets similaires à "copie autofill formule"