Amélioration d'une macro d'étirement de formule

Bonjour à tous,

Je viens vers vous car je viens de me lancer dans la programmation de macros en Visual Basic sur Excel dans le cadre de mon stage.

J'ai décidé de faire une macro pour aider mon collègue, celle-ci consiste à étendre la formule de la première ligne d'une colonne dont on a sélectionné la première ligne. L'étirement doit se faire jusqu'à la même ligne que la dernière de la colonne à la droite de celle qu'on étend. (Oulah ca devient compliqué ces explications... )

Passons donc au code effectué :

Sub Macro1()
'
' Macro1 Macro
'
' Touche de raccourci du clavier: Ctrl+k
'
   Dim cellactlet As String
    Dim cellact As Range
    Dim celldest As Range
    Dim column As String
    Dim DernLigne As Long

    column = ActiveCell.column

    If column = 1 Then
    column = "A"
    ElseIf column = 2 Then
    column = "B"
    ElseIf column = 3 Then
    column = "C"
    ElseIf column = 4 Then
    column = "D"
    ElseIf column = 5 Then
    column = "E"
    ElseIf column = 6 Then
    column = "F"
    ElseIf column = 7 Then
    column = "G"
    ElseIf column = 8 Then
    column = "H"
    ElseIf column = 9 Then
    column = "I"
    ElseIf column = 10 Then
    column = "J"
    ElseIf column = 11 Then
    column = "K"
    ElseIf column = 12 Then
    column = "L"
    ElseIf column = 13 Then
    column = "M"
    ElseIf column = 14 Then
    column = "N"
    End If

    cellactlet = column
    cellactnum = ActiveCell.Row

        If column = "A" Then
    column = "B"
    ElseIf column = "B" Then
    column = "C"
    ElseIf column = "C" Then
    column = "D"
    ElseIf column = "D" Then
    column = "E"
    ElseIf column = "E" Then
    column = "F"
    ElseIf column = "F" Then
    column = "G"
    ElseIf column = "G" Then
    column = "H"
    ElseIf column = "H" Then
    column = "I"
    ElseIf column = "I" Then
    column = "J"
    ElseIf column = "J" Then
    column = "K"
    ElseIf column = "K" Then
    column = "L"
    ElseIf column = "L" Then
    column = "M"
    ElseIf column = "M" Then
    column = "N"
    ElseIf column = "N" Then
    column = "O"
    End If

    DernLigne = Range(column & Rows.Count).End(xlUp).Row
    Set cellact = Range(cellactlet & cellactnum)
    Set celldest = Range(cellactlet & DernLigne)

    cellact.AutoFill Destination:=Range(cellact, celldest), Type:=xlFillDefault

End Sub

Voilà, il fonctionne mais voilà le problème:

Mais ca ne vas que jusqu'à le colonne N?!

Et oui... cette facon de procédé m'oblige a taper de facon laborieuse tous les lettres correspondantes aux colonnes... ca me limite et me fait un nombre démesuré de lignes de code ... des conseils?

Bonjour et bienvenu(e)

A tester : Tu te positionnes sur la première cellule de la colonne à copier puis tu exécutes la macro

Sub test()
  DernLigne = Cells(Rows.Count, ActiveCell.Offset(0, 1).column).End(xlUp).Row - 1
  ActiveCell.AutoFill Destination:=Range(ActiveCell, ActiveCell.Offset(DernLigne)), Type:=xlfilldefaut
End Sub

Waw! Merci beaucoup, je n'avais pas du tout envisager la solution sous cet angle là! C'est pourtant tellement plus logique! Merci encore.

Rechercher des sujets similaires à "amelioration macro etirement formule"