VBA Excel: Etendre une formule jusqu'à la dernière ligne

Résolu
Alice -  
PhilDk Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche tout simplement un code VBA pour étendre une formule automatiquement de la cellule C6 à la dernière de la ligne sans la citer.
Actuellement, le code suivant fonctionne très bien:

Range("C6").Select

Selection.Autofill Destination:=Range("C6:C450")

Mais comme la dernière cellule n'est pas tjr la 450ème, j'aimerais qu'il la définisse automatiquement et au coup par coup.

Merci à vous!


A voir également:

4 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 760
 
Bon.
Il nous suffit donc maintenant, de remplacer dans
Destination:=Range("C6:C450")
, 450 par la variable DernLigne.
Profitons en pour supprimer ces .Select et autres Selection inutiles...
Exemple :
Dim DernLigne As Long

DernLigne = Range("C" & Rows.Count).End(xlUp).Row
Range("C6").AutoFill Destination:=Range("C6:C" & DernLigne)


Auparavant, cependant, on cherche depuis tout à l'heure la dernière ligne non vide de la colonne C. Or, dans la colonne C, on cherche à remplir de formule... Donc, pour l'instant, la colonne C ne contient rien, si je ne m'abuse... Donc, cela n'a pas de sens de chercher la dernière ligne non vide de la colonne C.
14
Alice
 
Afin de tout remettre au clair, j'ai entré le code suivant:

Sub Extension_formule()

Dim DernLigne As Long

DernLigne = Range("C" & Rows.Count).End(xlUp).Row

Range("C6").AutoFill Destination:=Range("C6:C" & DernLigne)

End Sub

Il en est ressorti un message d'erreur, à savoir: "la méthode Autofill de la classe range a échoué".

Par rapport à votre remarque qui suit, j'ai pensé qu'en répondant 450 à votre question de connaître le nombre s'affichant dans la boîte de dialogue en entrant le code suggéré en début de forum, à savoir:

Sub Test()
Dim DernLigne As Long
DernLigne = Range("C" & Rows.Count).End(xlUp).Row
MsgBox DernLigne
End Sub

vous en déduiriez aisément que la fameuse colonne C se trouve dans un tableau de 450 lignes. C'est d'ailleurs toute l'utilité d'étendre une formule...
1
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 760
 
Bonjour,

En fait, si vous souhaitez étendre votre formule de la ligne 6 à la ligne 450, c'est à priori que votre colonne C ne contient rien, à la base.
Ou alors vous avez des données (ou formules) que vous souhaitez remplacer.

Dans le premier cas (colonne C vide), il faut calculer la dernière ligne en fonction d'une autre colonne. Par exemple, la colonne B elle, peut être remplie.
Dans ce cas, le code devrait être celui-ci :
Sub Extension_formule()
Dim DernLigne As Long

DernLigne = Range("B" & Rows.Count).End(xlUp).Row
Range("C6").AutoFill Destination:=Range("C6:C" & DernLigne)
End Sub


Dans le second cas, si votre colonne C est déjà remplie, le code donné précédemment est censé fonctionner.
Sauf si quelque chose l'en empêche...
Mais là, il s'agit d'une particularité de votre classeur que nous ne pouvons connaitre sans le voir...

J'ai fait des tests, et arrive à reproduire l'erreur "la méthode Autofill de la classe range a échoué", lorsque la colonne C ne contient qu'une formule en C6 et rien d'autre...

Retente avec le calcul de la dernière ligne d'une autre colonne et, si cela ne fonctionne toujours pas, fait nous passer un classeur exemple grâce à cjoint.com.
1