Copier une formule à partir de la dernière cellule non vide

Bonjour,

Je suis débutant en VBA et je me retrouve confronté à plusieurs problèmes pour le traitement d'un fichier d'inventaire.

Voici mes problématiques:

- Je voudrais recopier une formule à partir de la dernière cellule non vide de ma colonne A jusqu'à la dernière cellule non vide de la colonne C. La formule qui est une rechercheV doit uniquement être présente dans la colonne A.

Chaque matin je dois coller une extraction dans mon fichier et le nombre de ligne peut varier ce qui ne me permet pas de recopier simplement la formule.

J'ai tenté d'enregistrer une macro manuellement mais cela ne fonctionne pas.

- Sur un autre onglet, qui est celui de mon suivi d'inventaire, je souhaiterai réaliser la même chose sauf que je veux conserver l'antériorité des données.

J'ai également tester un copier/coller en valeurs automatique mais certaines cellule sont figées et les données ne sont pas exploitables.

Je vous joint un fichier d'exemple qui j'espère vous permettra de m'aider à solutionner mon problème.

Je vous remercie par avance pour le temps consacré!

52question-vba.xlsx (13.81 Ko)

Bonjour,

pas sûr d'avoir bien compris mais voilà une piste si je ne suis pas à coté de la plaque :

Sub Test()

    Dim Rng As Range
    Dim LigFin As Long
    Dim LigDeb As Long

    With Worksheets("Feuil2")

        'défini les lignes sur les dernières cellules non vides des colonne A et D
        LigDeb = .Cells(Rows.Count, 4).End(xlUp).Row
        LigFin = .Cells(Rows.Count, 1).End(xlUp).Row

        'défini le Range où seront copié les formules
        '(il comprend obligatoirement la dernière cellule non vide de la colonne D, celle qui contient la formule à tirer vers le bas)
        Set Rng = .Range("D" & LigDeb & ":D" & LigFin)

        'tire la formule vers le bas jusqu'à hauteur de la dernière ligne non vide en colonne A
        .Range("D" & LigDeb).AutoFill Rng

        'supprime les formules et ne garde que les valeurs
        Rng.Value = Rng.Value

    End With

End Sub

Salut,

Désolé pour ma réponse tardive, mais ta réponse correspond parfaitement à ce que je recherchais!

Merci beaucoup!

Reste néanmoins une petite question, Si je souhaite réaliser l'opération sur plusieurs colonne avec des formules différentes à chaque fois, faut-il que je déclare une nouvelle variable pour chaque colonne?

Bonjour,

Il suffit d'adapter les Range. Ici, colonnes C et D mais il peut y en avoir plus :

Sub Test()

    Dim Rng As Range
    Dim LigFin As Long
    Dim LigDeb As Long

    With Worksheets("Feuil2")

        'défini les lignes sur les dernières cellules non vides des colonne A et D
        LigDeb = .Cells(Rows.Count, 4).End(xlUp).Row
        LigFin = .Cells(Rows.Count, 1).End(xlUp).Row

        'défini le Range où seront copié les formules
        '(il comprend obligatoirement les dernières cellules non vide de la colonne C et D, celle qui contient les formules à tirer vers le bas)
        Set Rng = .Range("C" & LigDeb & ":D" & LigFin)

        'tire les formules vers le bas jusqu'à hauteur de la dernière ligne non vide en colonne A, les formules restant propre à chaque colonne !
        .Range("C" & LigDeb & ":D" & LigDeb).AutoFill Rng

        'supprime les formules et ne garde que les valeurs
        Rng.Value = Rng.Value

    End With

End Su
Rechercher des sujets similaires à "copier formule partir derniere vide"