Application jusqu'à la dernière ligne

Bonjour,

J'ai ici une macro qui commence à la ligne 2 et se termine à la 54. Je voudrai savoir comment faire pour que la macro ne prenne pas compte de la ligne 54 comme dernière ligne mais plutôt la dernière ligne de la colonne A tant qu'il y a des lignes.

Sub Result()
'
' Result Macro
'

'
    ActiveCell.FormulaR1C1 = "In progress"
    Range("M2").Select
    Selection.AutoFill Destination:=Range("M2:M54"), Type:=xlFillDefault
    Range("M2:M54").Select
End Sub

Merci d'avance

Obeïda

Bonjour,

Sub Result()
    Dim n%
    With ActiveSheet
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        With .Range("M2")
            .Value = "In progress"
            .AutoFill .Range("M2:M" & n)
        End With
    End With
End Sub

Cordialement.

Merci @MFerrand pour ton aide,

Lorsque je lance ta macro, j'ai un message d'erreur "Erreur d'exécution '1004': La méthode AutoFill de la classe Range a échoué"

Ton fichier ? Qu'on puisse voir pourquoi...

Bonjour à tous,

@MFerrand

J'ai profité de ton message pour revoir la méthode Range.AutoFill (que je n'utilise pas!...).

J'ai effectivement une erreur 1004 dans l'exemple joint.

Bon, je vais boire un petit café.

Cdlt.

20autofill.xlsm (18.90 Ko)

Salut Jean-Eric ! Merci de ton attention...

Je n'utilise pas non plus AutoFill habituellement... Mais ainsi :

Sub Result()
    Dim n%, Plg As Range
    With ActiveSheet
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set Plg = .Range("M2:M" & n)
        With .Range("M2")
            .Value = "In progress"
            .AutoFill Plg
        End With
    End With
End Sub

ça fonctionne !

Je mettrais ça sur le compte des facéties d'Excel qui choisit parfois d'exécuter ou non une même commande selon sa formulation...

(Comme l'obligation de passer par l'affectation de la feuille active à une variable objet pour une feuille copiée, l'affectation lors de la copie déclenchant une erreur...)

Ce sera mon 3e café !

Cordialement.

Re,

J'aurai vu la chose simplement (pour éviter un quelconque formatage des cellules).

Sub Result2()
Dim n%
    With ActiveSheet
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("M2").Resize(n - 1).Value = "In progress"
    End With
End Sub

Aucun problème sur ta proposition ! Elle est parfaite ! Et il semble bien que ce soit la plus économique...

A Obeida de faire son choix.

Merci à vous deux @MFerrand et @Jean-Eric,

Vos deux macro fonctionnent correctement et pour ne pas faire de jaloux, je vais utiliser les deux (j'ai plusieurs macro du même type).

Bonne journée à vous

Merci à vous deux @MFerrand et @Jean-Eric,

Vos deux macro fonctionnent correctement et pour ne pas faire de jaloux, je vais utiliser les deux (j'ai plusieurs macro du même type).

Bonne journée à vous

J'ai essayé de prendre votre template et d'y inséré une formule mais j'ai un message d'erreur "Erreur d'exécution '1004' Erreur définie par l'application ou par l'objet".

J'ai mal fait quelque chose ? (j'ai seulement changé la colonne et inséré une formule dans "value").

Sub Action()
    Dim n%, Plg As Range
    With ActiveSheet
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set Plg = .Range("L2:L" & n)
        With .Range("L2")
            .Value = "=IF(RC[4]="""",""Remove"",IF(RC[5]="""",""Add"",IF(AND(RC[4]<>"""",RC[5]<>""""),""Update"")))"""
            .AutoFill Plg
        End With
    End With
End Sub

pour ne pas faire de jaloux

Il ne saurait en être question !

L'affectation directe d'une valeur à une plage (proposition Jean-Eric) est incontestablement plus économique que l'utilisation de AutoFill (impliquant une écriture préalable).

J'ai dit "Il semble..." pour ne pas exclure la possibilité (VBA en offre beaucoup) d'une autre commande aussi économique (autre que la façon de l'écrire).

Bonne continuation.

Re,

Je crois de me souvenir que j'ai commencé à (ré-) utiliser Range.Resize après une intervention d'un dénommé MFerrand.

Bonne journée à tous.

Re,

Je crois de me souvenir que j'ai commencé à (ré-) utiliser Range.Resize après une intervention d'un dénommé MFerrand.

Bonne journée à tous.

J'avais loupé ton retour en temps réel, toutes mes excuses, je retombe dessus en nettoyant mes messages...

Tu dois savoir que j'avais emprunté Range.Resize à Banzai ou h2so4, ou certainement les deux (car je ne saurais plus dire lequel serait le déclencheur final qui m'a fait basculer), après l'avoir vu abondamment utilisée et m'être rendu compte à 2 ou 3 reprises que cette façon de faire m'éliminait des erreurs que j'avais avec d'autres formulations pour renvoyer une plage...

Vive le Forum !

Rechercher des sujets similaires à "application derniere ligne"