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 SubVoilà, 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 SubWaw! Merci beaucoup, je n'avais pas du tout envisager la solution sous cet angle là! C'est pourtant tellement plus logique! Merci encore.