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

Jrmy -  
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

1 réponse

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
    1. Jrmy
       
      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
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      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
    3. jrmy
       
      Oui j'ai adapté ton code à mon projet mais ça ne marche toujours pas..
      La cellule se trouve dans un tableau
      0
    4. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Peux-tu poster l'intégralité de ton code ?
      0
    5. jrmy
       
      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