Étendre une formule jusqu'à la dernière colonne
Jrmy
-
Patrice33740 Messages postés 8400 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8400 Date d'inscription Statut Membre Dernière intervention -
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
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
1 réponse
-
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 SubNote : il faut bannir l'utilisation de .Select en VBA !!!
-
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 ? -
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.. -
-
-
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
-