XL 2019 déplacer des lignes selon critère sur une autre feuille

Richard6263

XLDnaute Nouveau
Bonjour,
j'aimerai un peu d'aide voici mon problème :
j'ai un classeur avec deux feuilles Planning des demandes et Archivage
J'aimerai, lorsque je tape 2 en colonne B, que la ligne de tableau se déplace en archivage automatiquement à l'aide d'un code VBA sans bouton de commande,
je sais faire avec un bouton de commande mais pas sans
si quelqu'un m'aide, peut-il m'expliquer le code afin que je comprenne son fonctionnement... D'avance merci.

je vous joins le fichier (avec les données sensibles retirées)
 

Pièces jointes

  • Planificateur 20121-.xlsx
    31 KB · Affichages: 12
Dernière édition:
Solution
Bonjour Richard,
Un essai en PJ avec une macro événementielle qui se déclenche lorsqu'on modifie une valeur dans la colonne B:
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub                       ' Si plusieurs cell sélectionnées ne rien faire
    If Not Intersect(Target, [B8:B1000]) Is Nothing Then    ' Si cell modifiée en col B
        If Target = 2 Then                                  ' Si cell contient 2
            With Sheets("Archivage")
                DL = 1 + .Range("B65500").End(xlUp).Row     ' Première ligne vide d'archivage
                L = Target.Row                              ' N° de ligne de cell seléctionnée
                .Range("A" & DL & ":G" & DL) = Range("A" & L & ":G" &...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Richard,
Un essai en PJ avec une macro événementielle qui se déclenche lorsqu'on modifie une valeur dans la colonne B:
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub                       ' Si plusieurs cell sélectionnées ne rien faire
    If Not Intersect(Target, [B8:B1000]) Is Nothing Then    ' Si cell modifiée en col B
        If Target = 2 Then                                  ' Si cell contient 2
            With Sheets("Archivage")
                DL = 1 + .Range("B65500").End(xlUp).Row     ' Première ligne vide d'archivage
                L = Target.Row                              ' N° de ligne de cell seléctionnée
                .Range("A" & DL & ":G" & DL) = Range("A" & L & ":G" & L).Value  ' Archiver ligne
                Cells(L, 1).EntireRow.Delete                ' Supprimer ligne dans Planning
            End With
        End If
    End If
End Sub
 

Pièces jointes

  • Planificateur 20121- (1).xlsm
    547.7 KB · Affichages: 11

Richard6263

XLDnaute Nouveau
Bonjour Richard,
Un essai en PJ avec une macro événementielle qui se déclenche lorsqu'on modifie une valeur dans la colonne B:
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub                       ' Si plusieurs cell sélectionnées ne rien faire
    If Not Intersect(Target, [B8:B1000]) Is Nothing Then    ' Si cell modifiée en col B
        If Target = 2 Then                                  ' Si cell contient 2
            With Sheets("Archivage")
                DL = 1 + .Range("B65500").End(xlUp).Row     ' Première ligne vide d'archivage
                L = Target.Row                              ' N° de ligne de cell seléctionnée
                .Range("A" & DL & ":G" & DL) = Range("A" & L & ":G" & L).Value  ' Archiver ligne
                Cells(L, 1).EntireRow.Delete                ' Supprimer ligne dans Planning
            End With
        End If
    End If
End Sub
Bonsoir Sylvanu,
tout d'abord, merci ^pour votre aide, je viens juste de voir votre message. je teste demain matin et je reviens vers vous si. Encore merci de votre aide. bonne soirée
 

Richard6263

XLDnaute Nouveau
Re Sylvanu,
ça fonctionne à merveille ! exactement ce que je voulais, sans bouton de commande merci à vous !
En plus j'ai les explication, elle me seront utile pour une prochaine fois.
Merci Sylvanu pour votre aide et pour la communauté d'Excel downloads.
 

Discussions similaires