Etendre formule macro dernière ligne active

Bonjour !

Malgré plusieurs recherches et plusieurs essais, je n'arrive pas à résoudre mon problème.

Je suis débutant en VBA, ce qui explique sûrement ces difficultés à finaliser ma macro !

Je cherche à étendre une formule au sein d'une macro afin qu'elle s'arrête à la dernière ligne active de mon tableau.

C'est l'Excel de mon travail, il est en anglais.

Pour le moment ma formule ressemble à :

    Range("G1").Select
    Range("G1") = "Documents Requis"
    Range("G2").Select
    Columns("G:G").EntireColumn.AutoFit
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(D2,'M:\2016\[Ccode docs.xlsx]Sheet1'!R2C1:R52C3,3,FALSE)"
    Range("G2").Select
    Selection.AutoFill Destination:=Range("G2:G1198"), Type:=xlFillDefault

Je souhaite donc remplacer le "G1198" par une formule automatique alllant jusque la dernière ligne active de la colonne A.

J'ai trouvé sur d'autres forum ce type de formule :

Dim DernLigne As Long

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

J'ai essayé de l'intégrer en anglais de différentes façon au sein de ma macro, en voilà une :

  ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(D2,'M:\2016\[Ccode docs.xlsx]Sheet1'!R2C1:R52C3,3,FALSE)"
     LastRow = Range("G" & Rows.Count).End(xlUp).Row
     Range("G2").AutoFill Destination:=Range("G2:G" & LastRow)

Ce qui me vaut le message "Run-time error '1004': Application-defined or object-defined error

Quand je clique sur debug, la ligne [Lastrow = Range("G" & Rows.Count).End(x1up).Row] est surligné en jaune.

Voila, donc si vous avez une idée de ce qui me manque dans cette formule ou une autre solution pour automatiser ma macro, je suis preneur !

Merci à vous et bonne journée !

30testforum.xlsm (92.20 Ko)

Bonjour,

Dans le code, il est utile toujours de préciser sur quelle feuille on travaille. C'est peut-être là ton problème.

Bonjour,

Malheureusement le fichier contient des données privées et mes macros sont enregistrées en personal workbook pour être réuitilisé directement dans les onglets Excel.

Lorsque tu me dis de préciser la feuille dans laquelle je travaille, c'est à dire que je dois rajouter "ActiveSheet" à un endroit de mon code ?

J'ai également essayé de suivre la formule de Jean-Eric que j'ai trouvé sur ce sujet : https://forum.excel-pratique.com/excel/macro-pour-etirer-une-formule-jusqu-a-la-derniere-ligne-t77951.html

Je l'ai intégré comme ceci :

Range("G2").Select
 Columns("G:G").EntireColumn.AutoFit
 ActiveCell.FormulaR1C1 = _
 "=VLOOKUP(D2,'M:\2016\[Ccode docs.xlsx]Sheet1'!R2C1:R52C3,3,FALSE)"
Dim Lastrow As Long
    With ActiveSheet
    Lastrow = .Cells(Rows.Count, 1).End(x1up).Row
    .Range("G2:G" & Lastrow).FormulaR1C1 = "=RC[-2]-RC[-3]"
    End With
End Sub

J'ai le meme message d'erreur et la ligne [Lastrow = .Cells(Rows.Count, 1).End(x1up).Row] est surlignée en jaune.

Je vais essayer de refaire un fichier avec sa propre macro en utilisant des données non confidentielle afin que vous ayez une meilleure visibilité.

Re,

Je te demande pas le vrai fichier. Pour le test, il faut absolument un fichier construit sur le données factices. On ne sait jamais, test ça :

Sub test()
    Dim Lastrow As Long
    Range("M2").Select
    Columns("M:M").EntireColumn.AutoFit
    ActiveCell.FormulaR1C1 = "=VLOOKUP(D2,'M:\2016\[Ccode docs.xlsx]Sheet1'!R2C1:R52C3,3,FALSE)"
    With ActiveSheet
        Lastrow = .Range("M" & Rows.Count).End(xlUp).Row
        .Range("M2:M" & Lastrow).FormulaR1C1 = "=RC[-2]-RC[-3]"
    End With
End Sub

J'ai inséré un doc dans mon premier message. Je n'ai pas réussit malgré ta formule. J'ai toujours le meme message...

C'est bien le fichier. Mais aucune explication pour avancer. Bon, que veux-tu faire avec le fichier envoyé ? Il y a 2 onglets avec des

données sensiblement identiques.

Il me semble que l'explication est dans le premier message ! J'aimerai que la macro fonctionne jusqu'à ce que le tableau se termine plutôt que lui donner une limite. Les données variant d'un jour à l'autre.

Ces données étant confidentielles, j'ai créée deux tableaux dans deux onglets en enregistrant une macro remplissant la colonne G de l'onglet 1 de données externes.

Mais je n'ai toujours pas trouvé la formule pour que la macro s'arrête en function du nombre de ligne.

Re,

Ils sont où les codes dont tu mentionnes au premier message ?

Rechercher des sujets similaires à "etendre formule macro derniere ligne active"