Archiver des lignes d'une feuille vers une autre

Bonjour,

Je sais que le sujet a été probablement traité mais après avoir regarder pas mal de solution j'ai du mal à transférer le code à mon exemple.

Je suis mauvais en VBA.

Je souhaite transférer une tache (toute la ligne) de la feuille "Taches" vers la feuille "Archives" et effacer la ligne dans la feuille "Taches" quand celle-ci à le statut "Fini" dans la colonne F.

Si cela pouvait se faire automatiquement quand la tache est "Fini" ça serait super. Sinon, j'ai placé un bouton "Archiver".

Si dans la feuille "Archives" je remets un autre statut que"Fini" la ligne revient dans la feuille "Taches" et s'efface dans la feuille "Archives".

Je vous remercie d'avance pour votre aide précieuse.

Bonjour et bienvenu sur le forum

Ci joint ma solution (par macro)

si tu mets une tache en fini elle bascule en archive et si tu effaces fini sur une archives elle retourne en tache..

A+ François

Bonjour François,

un grand merci! c'est exactement ça! La macro est elle la suivante?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Long, col As Integer, dl As Long, sh As Worksheet
If ctrl = True Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target.Column <> 6 Then Exit Sub
If Target.Value <> "Fini" Then Exit Sub
ctrl = True
Set sh = Sheets("Archives")
lig = Target.Row
If [T_archive].Item(1, 1) <> "" Then dl = [T_archive].Rows.Count + 1 Else dl = 1
For col = 1 To 6
[T_archive].Item(dl, col) = Cells(lig, col).Value
Next
Cells(lig, 1).EntireRow.Delete
ctrl = False
End Sub

Si oui serait-ce embêtant de l'expliciter un peu afin que je comprenne mieux?

Merci

Thomas

Pour mettre une macro utilisez les </>

il y a 2 macros comme celle là... (1 sur chaque feuille)

Ne pas oublier, dans le module 1 de déclarer la variable ctrl

'macro qui se lance quand une cellule est changée
Private Sub Worksheet_Change(ByVal Target As Range)
'déclaration des variables
Dim lig As Long, col As Integer, dl As Long, sh As Worksheet
If ctrl = True Then Exit Sub 'evite de relancer la macro
If Target.Count > 1 Then Exit Sub'si plus d'ine cellule on quitte
If Target.Column <> 6 Then Exit Sub 'si colonne n'est pas la 6 on quitte
If Target.Value <> "Fini" Then Exit Sub 'si lacellule différente de "FINI" on quitte
ctrl = True
Set sh = Sheets("Archives") ' cette ligne peut être supprimée
lig = Target.Row 'la ligne est égale à la ligne de la cellule changée
'derniere ligne+1
If [T_archive].Item(1, 1) <> "" Then dl = [T_archive].Rows.Count + 1 Else dl = 1
For col = 1 To 6 'boucle sur les 6 colonnes
[T_archive].Item(dl, col) = Cells(lig, col).Value
Next
Cells(lig, 1).EntireRow.Delete 'on efface la ligne concernée
ctrl = False
End Sub

A+ François

Merci François.

Si je comprends bien on définit des variables ordonnées (lignes) et absisses (colonne) qu'on fait déplacer jusqu'à arriver à colonne 6 où on fait controle de la valeur si diférent de fini on arrête si fini alors on supprime ligne et on la met dans archives.

J'imagine que c'est la même structure sur l'autre feuille mais cette fois on déplace dans taches.

Je ne me fais toujours pas au code. Ce n'est pas comme de la programmation ou les boucles sont identifiées... Va falloir que je m'y mette.

En revanche la déclaration de variable je ne comprends pas:

Dim lig As Long, col As Integer, dl As Long, sh As Worksheet

Encore merci de votre temps

Bonjour François et encore merci.

J'ai ré essayé la macro visiblement il y a des liens ou des noms qui ne correspondent plus. Qua

nd j'ai envoyé le fichier sur un autre ordi, plus moyen que ça marche.

Est-il possible de revoir la copie?

De plus , j'ai maintenant ajouté une colonne et j'aimerai, si possible ajouter une fonctionnalité supplémentaire.

comme avant quand je mets fini la tache (toute la ligne) passe en archive.

et inversement en archive si je change statut (colonne G) elle revient.

De même si je vais sur une ligne et que j'appuie sur bouton archive (elle s'archive). ou plusieurs lignes.

Mais j'aimerai aussi que quand je mets fini, que la ligne part en archive, une autre ligne se crée à sa place avec la même valeur en colonne A. bien évidemment en gardant les mise en forme conditionnelles sur la nouvelle ligne.

Un grand merci par avance de toute aide.

Rechercher des sujets similaires à "archiver lignes feuille"