Déplacer des lignes d'un onglet à l'autre selonconditions su

Bonjour

Je cherche à créer une macro qui bascule des lignes de données d'un onglet à l'autre lorsqu'une donnée est saisie dans une cellule.

Dans le fichier exemple 2 onglets : entrée et sortie

Les saisies se sont dans l'onglet entrée (Date entrée et identité)

Lorsqu'une personne 'sort' on saisit une date de sortie et on bascule la ligne vers l'onglet sortie. Puis le ligne ainsi vidée de l'onglet entrée doit être supprimée pour conserver une continuité des données.

Le but étant d'automatiser cette opération.

J'ai bien trouvé un code sur le forum qui coupe-colle la ligne dès que l'on saisit une donnée dans la cellule voulue, mais c'est trop automatisé pour moi. Je préfèrerai déclencher cette opération via un bouton de commande. De plus j'ai essayé d'ajouter la suppression de ligne vidée mais pas moyen d'enchainer ces deux manip correctement.

Voici les codes actuels, merci d'avance pour votre aide.

Sub copie()

Sheets("Entrée").Select

Range("C3").Select

Do While ActiveCell.Value <> ""

If ActiveCell.Value <> "" Then

ligne = ActiveCell.Row

Rows(ActiveCell.Row).Cut

Sheets("Sortie").Activate

Range("A2").Select

If ActiveCell.Offset(1, 0).Value = "" Then

ActiveCell.Offset(1, 0).Select

ActiveSheet.Paste

Sheets("Entrée").Select

ActiveCell.Offset(1, 0).Select

Else

Selection.End(xlDown).Select

ActiveCell.Offset(1, 0).Select

ActiveSheet.Paste

Sheets("Entrée").Select

ActiveCell.Offset(1, 0).Select

End If

Else

ActiveCell.Offset(1, 0).Select

End If

Loop

End Sub

Sub suppression()

Dim I As Integer

Application.ScreenUpdating = False

With Sheets("Entrée")

For I = .Range("A1000").End(xlUp).Row To 2 Step -1

If .Cells(I, "A").Value = "" Then .Rows(I).Delete

Next I

End With

End Sub

EDIT : avec la PJ c'est encore mieux...

32exemple.zip (6.28 Ko)

bonjour,

une proposition (note que je n'ai pas bien compris la condition pour la copie vers CA01-PRESENTS)

Sub copie()

    With Sheets("Entrée")
        While .Range("C3") <> ""
            .Rows(3).Copy
            Sheets("sortie").Cells(Rows.Count, 1).End(xlUp).Offset(1).Insert
            .Rows(3).Copy
            Sheets("CA01-PRESENTS").Cells(Rows.Count, 1).End(xlUp).Offset(1).Insert
            .Rows(3).Delete shift:=xlUp
        Wend
    End With
End Sub

Bonjour

Merci pour ta réponse.

En effet dans ma copie de code j'avais oublié de modifier un nom d'onglet pour qu'il corresponde à mon exemple. Rectification effectuée.

En ce qui concerne ton code, si je comprends bien, il sélectionne la ligne 3 de l'onglet Entrée pour aller le coller dans l'onglet sortie puis supprime la ligne 3 qui est désormais vide.

J'ai du mal exprimer ma demande. Je cherche à automatiser cette opération pour toute ligne de l'onglet entrée qui contiendrait une valeur dans la colonne C (date sortie). Pas uniquement la ligne 3 donc...

bonjour,

une nouvelle proposition

Sub aargh()
    With Sheets("entrée")
        i = 2
        While .Cells(i, 1) <> ""
            If .Cells(i, 3) <> "" Then
                .Rows(i).Copy
                Sheets("sortie").Cells(Rows.Count, 1).End(xlUp).Offset(1).Insert
                .Rows(i).Delete shift:=xlUp
            Else
                i = i + 1
            End If
        Wend
    End With
End Sub

Bonjour

C'est exactement ce qu'il me fallait !

Un grand merci !

Rechercher des sujets similaires à "deplacer lignes onglet selonconditions"