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

Résolu/Fermé
Alice - 10 déc. 2013 à 11:12
PhilDk Messages postés 20 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 18 août 2014 - 18 août 2014 à 10:43
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:
  • Proposez une formule comportant une seule fonction et à recopier vers le bas dans la colonne a du fichier à télécharger.
  • Virginie organise un rallye avec 30 équipes. elle veut créer un code pour désigner chaque équipe. elle a commencé à la main, mais elle voudrait le faire calculer à l'aide d'une formule. proposez une formule comportant une seule fonction et à recopier vers le bas dans la colonne a du fichier à télécharger. quelle formule sera en a9 ? - Meilleures réponses
  • Virginie organise un rallye avec 30 équipes. elle veut créer un code pour désigner chaque équipe. elle a commencé à la main, mais elle voudrait le faire calculer à l'aide d'une formule. proposez une formule comportant une seule fonction et à recopier vers le bas dans la colonne a du fichier à télécharger. - Meilleures réponses
  • Liste déroulante excel - Guide
  • Formule excel - Guide
  • Vba ouvrir un fichier excel avec chemin - Forum VB / VBA
  • Si et excel - Guide
  • Aller à la ligne excel - Guide

4 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
10 déc. 2013 à 11:56
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
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 déc. 2013 à 07:56
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