VBA - Transfert de ligne d'une feuille à une autre

fleurs59

XLDnaute Nouveau
Bonjour à tous,

Je viens de créer un outil de gestion pour le suivi de nos litiges mais je bloque sur un point.
Je viens donc vous solliciter..
J'aimerai qu'il y ait sur la feuille LITIGE dans la colonne "reçu", un moyen de marqué la cellule(sous forme de X ou une case à cocher) et lorsque celle-ci sera marqué, la ligne sera automatiquement copiée dans la feuille TECHNIQUE et si possible qu'il y ait la date de transfert dans la colonne "réception".

En PJ mon fichier.

Un grand merci d'avance pour vos précieux conseils !

Bonne journée !
 

Fichiers joints

CPk

XLDnaute Impliqué
Re : VBA - Transfert de ligne d'une feuille à une autre

Bonjour, avec un userform cela peut convenir ? Vous allez dans la feuille panneau de configuration et vous cliquez sur le carré bleu (marquer les lignes). Un userform s'ouvre, vous choisissez les litiges à copier puis vous cliquez sur transferer les lignes...

Cordialement
 

Fichiers joints

Dernière édition par un modérateur:

DoubleZero

XLDnaute Barbatruc
Re : VBA - Transfert de ligne d'une feuille à une autre

Bonjour, fleurs59, CPk, le Forum,

Une autre possibilité avec le code suivant :

Code:
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal c As Range, Cancel As Boolean)
    If c.Column = 14 And c.Row > 1 Then
        With c
            .Value = "x"
            .Offset(, -13).Resize(, 11).Copy Destination:=Sheets("TECHNIQUE").Range("a" & Rows.Count).End(xlUp)(2)
            Sheets("TECHNIQUE").Range("l" & Rows.Count).End(xlUp)(2) = Date
        End With
    End If
    c.Offset(1, 0).Select
End Sub
A bientôt :)
 

Paf

XLDnaute Barbatruc
Re : VBA - Transfert de ligne d'une feuille à une autre

bonjour à tous

un essai par macro évènementielle; un doubleclic dans les cellules de la colonne Reçu y place un X et copie la ligne dans la feuille TECHNIQUE

A copier dans la feuille de code de la feuille LITIGE:

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Dim DerL As Long, Lig As Long, DerL2 As Long
 DerL = Range("A" & Rows.Count).End(xlUp).Row
 Lig = Target.Row
 If Target.Column = 14 And Lig > 1 And Lig <= DerL Then
    If Target = "" Then
        Target = "X"
        With Worksheets("TECHNIQUE")
        DerL2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
        Range("A" & Lig & ":K" & Lig).Copy .Range("A" & DerL2)
        .Range("L" & DerL2) = Date
        Target.Offset(, 1).Select
        End With
    End If
 End If
End Sub
A+

Edit : bonjour OO, désolé pour ce quasi plagiat
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : VBA - Transfert de ligne d'une feuille à une autre

Bonjour à tous

Ci dessous une macro évènementielle pour répondre au problème
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim data1 As String, Colo As String
Dim cellule As Range
Dim Addresse1 As String
If Target.Count > 1 Then Exit Sub
Colo = Target.Address(False, False)
Colo = Replace(Colo, Target.Row, "")
If Colo <> "L" Then Exit Sub
If Target.Value = "X" Then

    Sheets(Target.Worksheet.Name).Rows(Target.Row).copy _
            Destination:=Worksheets("TECHNIQUE").Range("A" & Worksheets("TECHNIQUE").Cells(Worksheets("TECHNIQUE").Rows.Count, 1).End(xlUp).Row + 1)
End If
End Sub
A tester

Ajout du fichier

JP
 

Fichiers joints

Dernière édition:

fleurs59

XLDnaute Nouveau
Re : VBA - Transfert de ligne d'une feuille à une autre

re Bonjour à tous,

Merci pour votre réactivité et votre précieuse aide !!

La version de CPk fonctionne cependant elle n'est pas adapté à mon fichier car par la suite il y aura des centaines de litiges et ça risque d'être trop compliqué de rechercher le litige correspondant.

J'ai essayé les autres codes mais ça ne fonctionne pas. J'ai essayé le double-clic, le "x", le "X" mais rien ne se passe...

Merci d'avance !
 

CPk

XLDnaute Impliqué
Re : VBA - Transfert de ligne d'une feuille à une autre

Dans se cas peut-être pouvez vous essayer celle-ci.

Code:
Sub transfert()
     With Feuil1
        For i = 2 To .UsedRange.Rows.Count
            If .Cells(i, 14) = "x" Then
                dl = Feuil2.Cells(Rows.Count, 1).End(xlUp).Row + 1
                Feuil2.Cells(dl, 1).Resize(1, 11) = .Cells(i, 1).Resize(1, 11).Value
                Feuil2.Cells(dl, 12) = Format(Now, "dddd dd mmmm yyyy hh:mm")
                .Cells(i, 14) = "Transféré en Technique"
                .Cells(i, 15) = Format(Now, "dddd dd mmmm yyyy hh:mm")
                .Cells(i, 16) = Environ("username")
            End If
        Next i
    End With
    Feuil2.Activate
 End Sub
Le fonctionnement est assez simpliste. Toutes les cellules qui auront un x dans la colonne "Recu" seront copiées dans la feuille technique puis le "x" sera remplacé par "Transféré en Technique" afin d'avoir un repère rapide sur l'état de la ligne (transférée ou non).
 

Paf

XLDnaute Barbatruc
Re : VBA - Transfert de ligne d'une feuille à une autre

Re,

J'ai essayé les autres codes mais ça ne fonctionne pas. J'ai essayé le double-clic, le "x", le "X" mais rien ne se passe...
le code est-il bien dans la feuille de code de la feuille LITIGE ?
la colonne Reçu où l'on doit double cliquer est elle bien la colonne N ?
La colonne A (N°Litige) est elle bien renseignée ?

A+
 

DoubleZero

XLDnaute Barbatruc
Re : VBA - Transfert de ligne d'une feuille à une autre

Bonjour à toutes et à tous,

... J'ai essayé les autres codes mais ça ne fonctionne pas. J'ai essayé le double-clic, le "x", le "X" mais rien ne se passe...
Tout comme Paf :), je ne comprends pas la raison pour laquelle "ça ne fonctionne pas".

A bientôt :)
 

Discussions similaires


Haut Bas