VBA : etendre la formule jusqu'a la dernier ligne active

Bonjour,

Je débute dans la VBA, je recherche à étendre un formule jusqu’à la dernière ligne de ma colonne B de la même feuille.

Voici ma macro (via le bouton enregistrement) :

Sub Macro7()

'

' Macro7 Macro

'

'

Range("AC4").Select

ActiveWindow.SmallScroll Down:=-18

Selection.AutoFill Destination:=Range("AC4:AC89"), Type:=xlFillDefault

Range("AC4:AC89").Select

ActiveWindow.SmallScroll Down:=-120

Range("AC2:AE2").Select

End Sub

-> Je souhaite définir "AC89" par la dernière ligne de la colonne B de mon tableau.

Merci d'avance.

Fabrice

Bonjour Fabrice,

Avant de proposer une solution, on va commencer par commenter un peu ton code :

Sub Macro7()
'
' Macro7 Macro 
'

'
Range("AC4").Select 'Tu as séléctionné AC4, l'enregistreur l'écrit donc "bêtement", pourtant VBA n'a pas besoin de "sélectionner" les éléments sur lesquels il travaille
ActiveWindow.SmallScroll Down:=-18 <-- Inutile, c'est l'enregistreur qui a écrit ça car tu as utilisé la barre de défilement au cours de l'enregistrement
Selection.AutoFill Destination:=Range("AC4:AC89"), Type:=xlFillDefault
Range("AC4:AC89").Select 'Inutile, car aucune action ne suit la sélection
ActiveWindow.SmallScroll Down:=-120 'Idem (défilement)
Range("AC2:AE2").Select 'Inutile car pas d'action non plus...
End Sub

Voilà donc la seule partie utile du code :

Sub EtendreFormules()

Range("AC4").AutoFill Destination:=Range("AC4:AC89"), Type:=xlFillDefault 'Pas de "sélection", on précise juste les plages de travail

End Sub

Poursuivons !

Pour trouver la dernière ligne, on va coder une action similaire à celle-ci :

  • Se placer sur la dernière cellule de la colonne AC du tableur (AC1048576 sur les versions récentes d'Excel)
  • Appuyer sur CTRL + FLECHE HAUT, ce qui nous emmène sur la première cellule non-vide rencontrée (exemple : AC89)
  • Utiliser juste le n° de ligne correspondant (par exemple 89)

Si je détaille le code pour chacun de ces points :

  • Range("AC" & Rows.Count)
  • Range("AC" & Rows.Count).End(xlUp)
  • Range("AC" & Rows.Count).End(xlUp).Row

Le code complet deviendra donc :

Sub EtendreFormules()

Dim Lig As Long 'On déclare la variable ligne contenant un nombre entier, potentiellement de grande taille
Lig = Range("AC" & Rows.Count).End(xlUp).Row 'On y affecte la dernière ligne
Range("AC4").AutoFill Destination:=Range("AC4:AC" & Lig), Type:=xlFillDefault 'On étend les formules jusqu'à cette ligne

End Sub
Rechercher des sujets similaires à "vba etendre formule dernier ligne active"