VBA : Déterminer la dernière ligne d'un nombre de colonne prédéf

Fermé
Marine - 22 mars 2015 à 17:50
 Marine - 22 mars 2015 à 19:30
Bonjour à tous ,

J'ai une question qui je crois est très simple !!! Mais impossible de trouver une réponse depuis hier, et je deviens folle !
Pardonnez mon ignorance sur le sujet...

Question : Quel serait le code pour déterminer la dernière ligne de mes colonnes A B et C sachant que D et E sont déjà remplies ;

A B C D E
x x x x x
x x x x x
........x x
........x x

Je voudrais copier la ligne soulignée (après l'avoir déterminée dans mon code) et la coller jusqu'à la dernière ligne de D (en italique)

Pou l'instant mon code me donne :

SubMacroBoucle ()

derLigne = Sheets("Base CP Semaine").Range([A65000], [C65000]).End(xlUp).Row + 1

Sheets("Base CP Semaine").Range("A" & derLigne).Copy
Range("A65000").End(xlUp).Offset(1).Select
Range("A2:A" & Range("D" & Rows.Count).End(xlUp).Row).PasteSpecial

End Sub


Je voudrais plus quelque chose comme ça :

Sheets("Base CP Semaine").Range("A:C" & derLigne).Copy
Range("A65000:C65000").End(xlUp).Offset(1).Select
Range("??? Pour coller à la suite" & Range("D" & Rows.Count).End(xlUp).Row).PasteSpecial


Merci d'avance pour vos réponses !

Marine

3 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
22 mars 2015 à 18:50
Bonsoir Marine, bonsoir le forum,

Peut-être comme ça (si j'ai bien compris...) :

Sub Macro1()
Dim DLA As Integer 'déclare la variable DLA (Dernière Ligne de la colonne A)
Dim DLD As Integer 'déclare la variable DLA (Dernière Ligne de la colonne D)
Dim B As Worksheet 'déclare la variable B (Onglet "Base CP Semaine)

Set B = Sheets("Base CP Semaine") 'définit l'onglet C
DLA = B.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DLA de la colonne 1 (=A) de l'onglet B
DLD = B.Cells(Application.Rows.Count, 4).End(xlUp).Row 'définit la dernière ligne éditée DLD de la colonne 4 (=D) de l'onglet B
B.Cells(DLA, 1).Resize(1, 3).Copy B.Range(B.Cells(DLA + 1, 1), B.Cells(DLD, 3)) 'copie/colle la dernière ligne éditée en A
End Sub

0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
22 mars 2015 à 18:52
Bonjour
En considérant que les colonnes A à C sont remplies au même niveau, idem pour les colonnes C et D
DerLigneC = [A65000].End(xlUp).Row
DerLigneD = [D65000].End(xlUp).Row
Range(Cells(DerLigneC, 1), Cells(DerLigneC, 3)).Copy
Range(Cells(DerLigneC + 1, 1), Cells(DerLigneD, 3)).PasteSpecial

Cdlt
0
Merci infiniment à vous deux de vos réponses rapides !

J'avais entre temps, à force de persuasion et de recherches, trouvé mon bonheur avec une CurrentRegion ! :)

Maintenant je m'attaque à la boucle... Souhaitez moi bonne chance !

Merci encore

Marine
0