XL 2016 Déplacer une ligne d'une feuille à une autre

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Promethee642

XLDnaute Nouveau
Bonjour,

J'ai un classeur comportant 2 feuilles. La feuille 1 (onglet "Listing") et la feuille 2 (onglet "Clôturé").

J'ai ajouter un bouton nommer "Archiver" sur la feuille 1.
J'aimerais que lorsque je clique sur ce bouton "Archiver" les lignes se trouvant sur la feuille 1 et dont la valeur de la colonne C est "Parti" soient déplacées sur la feuille 2.
J'aimerais que les lignes de la feuille 1 qui sont déplacées sur la feuille 2 soient supprimées de la feuille 1.

Pourriez-vous m'aider et me dire quelle macro ajouter à ce bouton pour qu'il effectue ce que je voudrais.


Merci à vous
 
Solution
mais il y a un soucis.
Encore eût il fallu le préciser. 🙂
En PJ un nouvel essai. Je ne déplace et ne supprime que de A à E.
VB:
Sub Archiver()
    Application.ScreenUpdating = False
    DLListing = Sheets("Listing").Range("B65500").End(xlUp).Row
    With Sheets("Listing")
        For L = DLListing To 2 Step -1
            If .Cells(L, "C") = "Parti" Then
                DLCloturé = 1 + Sheets("Clôturé").Range("C65500").End(xlUp).Row
                .Range("A" & L & ":E" & L).Copy Destination:=Sheets("Clôturé").Range("A" & DLCloturé)
                .Range("A" & L & ":E" & L).Delete Shift:=xlUp
            End If
        Next L
    End With
End Sub
Bonjour Promethee642 et bienvenu sur XLD,
Un essai en PJ avec :
VB:
Sub Archiver()
    Application.ScreenUpdating = False
    DLListing = Sheets("Listing").Range("B65500").End(xlUp).Row
    With Sheets("Listing")
        For L = DLListing To 2 Step -1
            If .Cells(L, "C") = "Parti" Then
                DLCloturé = 1 + Sheets("Clôturé").Range("C65500").End(xlUp).Row
                .Rows(L & ":" & L).Copy Destination:=Sheets("Clôturé").Range("A" & DLCloturé)
                .Rows(L & ":" & L).Delete Shift:=xlUp
            End If
        Next L
    End With
End Sub
N'étant pas spécifié, l'archivage se fait avec le format et conservation du lien hypertexte.
 

Pièces jointes

Merci beaucoup pour ta réponse aussi rapide,

La macro que tu me propose fonctionne très bien mais il y a un soucis.

Serait-il possible de déplacer uniquement les colonnes A, B, C, D et E de la ligne et non pas toute la ligne.

Si les premières lignes de mon tableau où se trouve le bouton on la valeur "Parti". Le bouton se déplace également sur la feuille 2.
 
mais il y a un soucis.
Encore eût il fallu le préciser. 🙂
En PJ un nouvel essai. Je ne déplace et ne supprime que de A à E.
VB:
Sub Archiver()
    Application.ScreenUpdating = False
    DLListing = Sheets("Listing").Range("B65500").End(xlUp).Row
    With Sheets("Listing")
        For L = DLListing To 2 Step -1
            If .Cells(L, "C") = "Parti" Then
                DLCloturé = 1 + Sheets("Clôturé").Range("C65500").End(xlUp).Row
                .Range("A" & L & ":E" & L).Copy Destination:=Sheets("Clôturé").Range("A" & DLCloturé)
                .Range("A" & L & ":E" & L).Delete Shift:=xlUp
            End If
        Next L
    End With
End Sub
 

Pièces jointes

Info comme vous êtes nouveau.
Vous pouvez mettre ce post en Résolu. Cela simplifie la compréhension aux futurs lecteurs, et leur évite de télécharger une mauvaise solution.
 
Bonjour sylvanu, Promethee, le forum.

Sylvanu, ta macro devrait me satisfaire dans un de mes fichiers, sauf que j'ai 2 colonnes en plus. Une "date" en col B et une "Montant" en col E. Peux tu me modifier la macro du dernier fichier en #4 , j'essaie par tous les moyens de changer les lettres, les chiffres et je n'y arrive pas.
Je te remercie.

 
Bonjour Collins,
Les colonnes B et E sont déjà copiées.
Si cela veut dire que les colonnes ajoutées sont F et G alors :
VB:
Sub Archiver()
    Application.ScreenUpdating = False
    DLListing = Sheets("Listing").Range("B65500").End(xlUp).Row
    With Sheets("Listing")
        For L = DLListing To 2 Step -1
            If .Cells(L, "C") = "Parti" Then
                DLCloturé = 1 + Sheets("Clôturé").Range("C65500").End(xlUp).Row
                .Range("A" & L & ":G" & L).Copy Destination:=Sheets("Clôturé").Range("A" & DLCloturé)
                .Range("A" & L & ":G" & L).Delete Shift:=xlUp
            End If
        Next L
    End With
End Sub
Si ça ne marche pas, alors ouvrez un nouveau post avec un fichier test.
 
Bonjour Sylvanu

j'ai mis cet If et dans un 1er temps ça n'a pas marché parce que j'avais "PARTI" en majuscule comme ci-dessous
If Lcase(.Cells(L, "C")) = "PARTI" Then
En le mettant en minuscule il n'y a pas eu de problème.
je me débrouille en faisant des essais 🙂
Un grand merci encore.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour