XL 2019 Couper coller une ligne d'une feuille1 vers feuille2 grâce à un bouton ou case à cocher

Samsampaname

XLDnaute Nouveau
Bonjour à Tous ,

J'aimerai vous demander de l'aide ,

Je souhaite créer un fichier dans lequel je pourrai âpres appui sur un bouton , copier la ligne de la feuille (Etape1) sur une autre feuille(Etape 2) sur la dernière ligne (première disponible) et faire disparaître sur la feuille initiale(Couper-Coller).

Ma question:, est-ce que le bouton(ou case a cocher) peut être lié à la ligne et se déplacer avec ou est ce qu'il vaut mieux faire une colonne de bouton dans chaque feuille et seule la ligne se transfère .( exemple sur mon fichier ligne [A3:G3] , ou ligne [A3:H3]avec le bouton ou même dans l'idéal la ligne complète Ligne 3 )

L'idée de mon fichier, est de pouvoir stocker des lignes sur la feuille 1(Etape1 sur mon fichier) et les envoyer sur la feuille 2(Etape 2) âpres un appui sur le bouton " traité"(tache de la feuille 1 effectuée), puis ainsi de suite sur feuille 2, feuille 3, ce qui permettra de valider son transfert qu'âpres l'accomplissement de la tache de la feuille (validé par le bouton)

Je ne sais pas si mes explications sont très claires.

Je reste disponible pour apporter des précisions.

Merci à tous pour le temps accordé...

Ps:J'ai lu d'autres discussions qui peuvent ressembler mais j'ai du mal a adapter a mon cas...
 

Pièces jointes

  • Couper coller ligne bouton.xlsx
    12.7 KB · Affichages: 4
Solution
Bonjour Samsampaname,
On peut se passer de boutons, un clic sur une cellule peut déclencher une macro événementielle.
Dans la PJ il suffit de cliquer sur une cellule de la colonne H pour que la ligne soit transférée sur la page suivante, et supprimée quand l'action est finie.
Un essai en PJ, avec :
Dans chaque feuille la macro :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [H3:H1000]) Is Nothing Then
        If Target <> "" Then CouperColler ActiveSheet.Name, Target.Address
    End If
End Sub
qui renvoie le nom de la feuille et la cellule cliquée à cette macro :
Code:
Sub CouperColler(Feuille, Cellule)
    F = Array("Etape 1", "Etape 2", "Etape 3"...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Samsampaname,
On peut se passer de boutons, un clic sur une cellule peut déclencher une macro événementielle.
Dans la PJ il suffit de cliquer sur une cellule de la colonne H pour que la ligne soit transférée sur la page suivante, et supprimée quand l'action est finie.
Un essai en PJ, avec :
Dans chaque feuille la macro :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [H3:H1000]) Is Nothing Then
        If Target <> "" Then CouperColler ActiveSheet.Name, Target.Address
    End If
End Sub
qui renvoie le nom de la feuille et la cellule cliquée à cette macro :
Code:
Sub CouperColler(Feuille, Cellule)
    F = Array("Etape 1", "Etape 2", "Etape 3", "Etape 4", "Etape Finale", "")
    For N = 0 To 5
        If Feuille = F(N) Then Fcollage = F(N + 1)
    Next N
    If Fcollage = "" Then Exit Sub              ' Car feuille Etape Finale où on ne copie colle pas.
    L = Sheets(Feuille).Range(Cellule).Row                          ' Ligne à copier
    DL = 1 + Sheets(Fcollage).[H65000].End(xlUp).Row ' Ligne où coller
    Sheets(Fcollage).Range("A" & DL & ":H" & DL) = Sheets(Feuille).Range("A" & L & ":H" & L).Value ' Copier Coller valeurs
    Sheets(Feuille).Cells(L, 1).EntireRow.Delete    ' Supprimer ligne
End Sub
 

Pièces jointes

  • Couper coller ligne bouton.xlsm
    22.7 KB · Affichages: 18

Samsampaname

XLDnaute Nouveau
Bonjour Samsampaname,
On peut se passer de boutons, un clic sur une cellule peut déclencher une macro événementielle.
Dans la PJ il suffit de cliquer sur une cellule de la colonne H pour que la ligne soit transférée sur la page suivante, et supprimée quand l'action est finie.
Un essai en PJ, avec :
Dans chaque feuille la macro :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [H3:H1000]) Is Nothing Then
        If Target <> "" Then CouperColler ActiveSheet.Name, Target.Address
    End If
End Sub
qui renvoie le nom de la feuille et la cellule cliquée à cette macro :
Code:
Sub CouperColler(Feuille, Cellule)
    F = Array("Etape 1", "Etape 2", "Etape 3", "Etape 4", "Etape Finale", "")
    For N = 0 To 5
        If Feuille = F(N) Then Fcollage = F(N + 1)
    Next N
    If Fcollage = "" Then Exit Sub              ' Car feuille Etape Finale où on ne copie colle pas.
    L = Sheets(Feuille).Range(Cellule).Row                          ' Ligne à copier
    DL = 1 + Sheets(Fcollage).[H65000].End(xlUp).Row ' Ligne où coller
    Sheets(Fcollage).Range("A" & DL & ":H" & DL) = Sheets(Feuille).Range("A" & L & ":H" & L).Value ' Copier Coller valeurs
    Sheets(Feuille).Cells(L, 1).EntireRow.Delete    ' Supprimer ligne
End Sub
Waw!!! Alors je ne sais pas si c'était simple pour toi... Mais je decouvre une jolie démonstration!

Super d'apprendre avec vous ! Je vais suivre de près tes interventions!

Une solution détaillée et vulgarisée . C'est peut être simple pour certains mais quand tu debutes c'est magnifique!

Merci beaucoup Sylvanu 💪💪
 

Samsampaname

XLDnaute Nouveau
Bonjour Samsampaname,
On peut se passer de boutons, un clic sur une cellule peut déclencher une macro événementielle.
Dans la PJ il suffit de cliquer sur une cellule de la colonne H pour que la ligne soit transférée sur la page suivante, et supprimée quand l'action est finie.
Un essai en PJ, avec :
Dans chaque feuille la macro :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [H3:H1000]) Is Nothing Then
        If Target <> "" Then CouperColler ActiveSheet.Name, Target.Address
    End If
End Sub
qui renvoie le nom de la feuille et la cellule cliquée à cette macro :
Code:
Sub CouperColler(Feuille, Cellule)
    F = Array("Etape 1", "Etape 2", "Etape 3", "Etape 4", "Etape Finale", "")
    For N = 0 To 5
        If Feuille = F(N) Then Fcollage = F(N + 1)
    Next N
    If Fcollage = "" Then Exit Sub              ' Car feuille Etape Finale où on ne copie colle pas.
    L = Sheets(Feuille).Range(Cellule).Row                          ' Ligne à copier
    DL = 1 + Sheets(Fcollage).[H65000].End(xlUp).Row ' Ligne où coller
    Sheets(Fcollage).Range("A" & DL & ":H" & DL) = Sheets(Feuille).Range("A" & L & ":H" & L).Value ' Copier Coller valeurs
    Sheets(Feuille).Cells(L, 1).EntireRow.Delete    ' Supprimer ligne
End Sub
Petite question Sylvanu si tu es encore là ...
Lorsque j'alimente ma feuille 1 de nouvelles lignes , je copie de la colonne 1 à 7 ma ligne et je rajoute la commande de la cellule en colonne H correspondante... Je peux donc copier le code pour toutes les cellules de la colonne H ? je fais erreur?
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof