Copier coller jusqu’à la dernière ligne non vide

Bonjour à tous,

J’ai monté un plan de trésorerie grâce à ce site web, et je viens à nouveau solliciter votre aide.

Je joins un fichier exemple pour mieux me faire comprendre.

C’est un tableau allant de la colonne A à la colonne Z.

De la colonne A à la M, ceux sont des informations que je copie et colle depuis mon logiciel.

De la colonne N à la Z (couleur rouge en haut), ceux sont soit des données qui se répètent, soit des formules de calculs.

Sur cette zone, je voudrais une macro pour pouvoir me positionner sur la dernière ligne non vide de cette zone, et faire un copier coller jusqu’à la dernière ligne non vide du tableau (soit ici la ligne 25).

Mon idée étant d’automatiser cette tache compte tenu du volume d’information à traiter.

Je vous remercie par avance pour votre aide.

184gjc1516.xlsx (47.29 Ko)

Bonjour,

Si tu es sûr que c'est la réplication pure du contenu hors formule qui doit être faite :

Sub CompléterTableau()
    Dim n%, m%
    With Worksheets("Feuil1")
        n = .Range("A" & .Rows.Count).End(xlUp).Row
        m = .Range("N" & .Rows.Count).End(xlUp).Row
        .Range("N" & m & ":Z" & m).Copy .Range("N" & m + 1 & ":N" & n)
    End With
End Sub

C'est une simple copie (et collage) qui est faite ici, pour éviter des incrémentations non voulues par extension de la dernière (ou des deux dernières) ligne(s).

Macro à lancer par boîte dialogue macro, ou à affecter à un bouton.

Cordialement.

439guinam-gjc1516.xlsm (18.79 Ko)

Merci beaucoup Ferrand, cela fonctionne très bien.

Bonjour,

Je rencontre un petit souci par rapport au code.

J'ai adapté le code à mes nombreuses feuilles sources, et j'ai une erreur d'exécution 6 qui apparait. Et lorsque je clique sur Débogage,

La ligne de code "n = .Range("A" & .Rows.Count).End(xlUp).Row" apparait en jaune.

Quelle solution s'il vous plait.

Est-ce que la feuille est bien Feuil1 ou as-tu bien adapté le nom ou as-tu remplacé par ActiveSheet pour que cela prenne la feuille active ?

Tu as plus de 32767 lignes occupées ?

Ou tu as oublié de changer le nom de feuilles et la Feuil1 a la colonne A vide.

Tu remplaces n% et m% par n& et m&.

Mais si tu n'adaptes pas tous les éléments, même sans erreur 6, tu pourras ne pas avoir le résultat attendu.

Oui j'ai plus de 32767 ligne.

Voici ce que j'ai fait :

Pour la Feuil1

Sub CompléterTableauFeuil1()

Dim n%, m%

With Worksheets("Feuil1")

n = .Range("A" & .Rows.Count).End(xlUp).Row

m = .Range("N" & .Rows.Count).End(xlUp).Row

.Range("N" & m & ":Z" & m).Copy .Range("N" & m + 1 & ":N" & n)

End With

End Sub

Pour la Feuille 2

Sub CompléterTableauFeuil2()

Dim n%, m%

With Worksheets("Feuil2")

n = .Range("A" & .Rows.Count).End(xlUp).Row

m = .Range("N" & .Rows.Count).End(xlUp).Row

.Range("N" & m & ":Z" & m).Copy .Range("N" & m + 1 & ":N" & n)

End With

End Sub

Ainsi de suite. Le problème, c'est que j'ai plusieurs feuilles. Mais pour cette feuille ça me donne cette erreur.

Normal, ça dépasse la capacité du type Integer. Faut passer les variables en Long : tu mets n& et m& dans la première ligne.

Merci beaucoup MFerrand.

Rechercher des sujets similaires à "copier coller derniere ligne vide"