Étendre une formule jusqu'à la dernière colonne

Fermé
Jrmy - 17 juil. 2018 à 09:18
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 17 juil. 2018 à 19:40
Bonjour,

Je cherche tout simplement un code VBA pour étendre une formule automatiquement d'une cellule de départ à la dernière colonne de la ligne sans la citer. Par exemple de la cellule A3 jusqu'à la F3, mais la dernière colonne remplie n'est pas forcément la F ....

J'ai essayé deux codes différents :
Dim dercol As Long
dercol = Cells(1, Cells.Columns.count).End(xlToLeft).Column
Range("BT8").Select
Selection.AutoFill Destination:=Range("BT8:BT" & dercol), Type:=xlFillDefault

Ainsi que :

Dim DernCol As Integer
DernCol = Range("BT8").End(xlToRight).Column
Range("BT8").Select
Selection.AutoFill Destination:=Range("BT8:BT" & dercol), Type:=xlFillDefault

Mais aucun des deux ne fonctionne ...

Merci à vous pour votre aide !

Jérémy
A voir également:

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié le 17 juil. 2018 à 09:46
Bonjour,

En supposant que ta ligne fasse partie d'un tableau sur la feuille Feuil1 :
Option Explicit
Sub XXX()
Dim cel As Range
Dim rng As Range
  With Worksheets("Feuil1")
    Set cel = .Range("A3")
    Set rng = Intersect(cel.CurrentRegion, cel.EntireRow)
    cel.AutoFill rng
  End With
End Sub
Note : il faut bannir l'utilisation de .Select en VBA !!!
0
Bonjour Patrice, merci beaucoup pour ta réponse !

Lorsque je lance la macro le message d'erreur suivant apparait : " Erreur d'exécution '1004' : La méthode Autofill de la classe Range a échoué." Est ce que tu sais ce que cela signifie ?

J'ai cru comprendre qu'il n'était en effet pas nécessaire d'utiliser .Select, mais je n'ai pas compris pourquoi ?
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié le 17 juil. 2018 à 12:31
As tu corrigé le nom de la feuille et l'adresse de cellule pour que ça corresponde à ton fichier ?
La cellule est-elle dans un tableau (i.e. sans ligne ni colonne entièrement vide) ?

Il faut bannir .Select car c'est la principale source d'erreur et c'est inutile pour agir sur une propriété d'objet..
0
Oui j'ai adapté ton code à mon projet mais ça ne marche toujours pas..
La cellule se trouve dans un tableau
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
17 juil. 2018 à 15:21
Peux-tu poster l'intégralité de ton code ?
0
Oui pas de soucis

Option Explicit
Sub Substances()

Range("BT9").Select
ActiveCell.FormulaR1C1 = _
"=RIGHT(LEFT(R[1]C,SEARCH(""/"",R[1]C)-1),LEN(LEFT(R[1]C,SEARCH(""/"",R[1]C)-1))-SEARCH("" "",LEFT(R[1]C,SEARCH(""/"",R[1]C)-1)))"
Range("BT9").Select
Selection.AutoFill Destination:=Range("BT9:CI9"), Type:=xlFillDefault
Range("BT9:CI9").Select
Selection.Copy
Range("BT8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'Range("BT8").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(R[1]C,substances,4,FALSE)"

Range("BT8").Select

Dim cel As Range
Dim rng As Range
With Worksheets("Rapport detaille")
Set cel = .Range("BT8")
Set rng = Intersect(cel.CurrentRegion, cel.EntireRow)
cel.AutoFill rng
End With
End Sub


Je m'excuse d'avance pour tous ces .Select, je débute :D
0