Microsoft 365 Archiver des données dans une autre feuille

PPxl

XLDnaute Nouveau
Bonjour,

Je débute en VBA et je bloque sur un point. J'ai plusieurs lignes (A10:A29 & C10:29 & D10: D29) situées dans une feuille "Planning" et je voudrais archiver ces lignes à la suite (même si il y a des doublons) à l'aide d'un bouton dans une autre feuille que je vais appeler "Jour férié". J'ai essayé de faire un algorithme mais le problème c'est qu'à chaque fois que je veux archiver ces lignes cela écrasent les lignes archivées précédemment.

Code:
Private Sub CommandButton1_Click()

Ligne = Sheets("Jour férié").Range("L4").End(xlDown).Row + 1
Sheets("Jour férié").Range("L4:L24").Value = Sheets("Planning").Range("A10:A30").Value
Sheets("Jour férié").Range("M4:M24").Value = Sheets("Planning").Range("C10:C30").Value
Sheets("Jour férié").Range("N4:N24").Value = Sheets("Planning").Range("D10:D30").Value

Sheets("Planning").Range("C10:C30").ClearContents

End Sub

Avez vous une solution ?

Je vous remercie d'avance
 
Dernière édition:
Solution
Bonjour PPxl,
End(xlDown).Row vous donne la première ligne, c'est End(xlUp).Row pour la dernière.
Un essai en PJ avec :
VB:
Private Sub CommandButton1_Click()
With Sheets("Jour férié")
    Ligne = .Range("A65500").End(xlUp).Row + 1
    .Range("L" & Ligne & ":L" & Ligne + 20) = Sheets("Planning").Range("A10:A30").Value
    .Range("M" & Ligne & ":M" & Ligne + 20) = Sheets("Planning").Range("C10:C30").Value
    .Range("N" & Ligne & ":N" & Ligne + 20) = Sheets("Planning").Range("D10:D30").Value
End With
Sheets("Planning").Range("C10:C30").ClearContents
End Sub
Le With ... End with ne sert qu'à simplifier l'écriture.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour PPxl,
End(xlDown).Row vous donne la première ligne, c'est End(xlUp).Row pour la dernière.
Un essai en PJ avec :
VB:
Private Sub CommandButton1_Click()
With Sheets("Jour férié")
    Ligne = .Range("A65500").End(xlUp).Row + 1
    .Range("L" & Ligne & ":L" & Ligne + 20) = Sheets("Planning").Range("A10:A30").Value
    .Range("M" & Ligne & ":M" & Ligne + 20) = Sheets("Planning").Range("C10:C30").Value
    .Range("N" & Ligne & ":N" & Ligne + 20) = Sheets("Planning").Range("D10:D30").Value
End With
Sheets("Planning").Range("C10:C30").ClearContents
End Sub
Le With ... End with ne sert qu'à simplifier l'écriture.
 

Pièces jointes

  • Classeur3.xlsm
    14.1 KB · Affichages: 12

sylvanu

XLDnaute Barbatruc
Supporter XLD
Ligne = .Range("A65500").End(xlUp).Row + 1 calcule la première ligne dispo.
Ensuite on colle à cet endroit.
Imaginons qu'on ait 20 lignes d'occupées alors Ligne=21,
En faisant Range("L" & Ligne & ":L" & Ligne + 20) on restitue une plage car avec Ligne=20 cela fait
Range("L21:L41")
 

Discussions similaires

Statistiques des forums

Discussions
311 729
Messages
2 081 970
Membres
101 852
dernier inscrit
dthi16088