Déplacer une ligne dans une autre feuille quand cette ligne a été traitée

Bonjour,

Petit souci, j'ai un classeur composé de 2 feuilles, première feuille ''A traiter'' 4 colonnes (N° dossier - Date ouverture - Nb jours depuis ouverture - Date traitement).

Je souhaiterais déplacer la ligne traitée dès que la cellule ''Date traitement'' est remplie dans ma deuxième feuille ''Fait''.

Jusqu'à présent je le faisais manuellement, je voudrais automatiser la tache.

Au final, ne resterait sur la feuille ''A traiter'' que les lignes à traiter et sur la feuille ''Fait'' les lignes traitées qui viendraient s'empiler automatiquement dans l'ordre des dates de traitement.

Faisable ?

Je ne connais absolument rien au VBA, un peu les fonctions SI et dérivées et les fonctions de base.

Merci par avance de se pencher sur mon problème.

Cordialement.

Jef90

Bonjour,

Voici une solution, éventuellement à améliorer, et certainement à adapter avec vos références (j'ai pris les colonnes A à D par défaut d'informations supplémentaires et supposé que vos noms de feuilles étaient A traiter et Fait) :

'DANS UN MODULE NORMAL

Sub ArchiverTraitements(Cible as range)

Dim wsT as worksheet, wsF as worksheet
Dim Lcible as long, NvL as long

Set wsT = Worksheets("A traiter") 'feuille A traiter
Set wsF = Worksheets("Fait") 'feuille Fait
Lcible = Cible.Row 'ligne en cours 'ligne en cours
NvL = wsF.cells(rows.count, 1).end(xlup).row + 1 'nouvelle ligne (dernière + 1) : 1ère cellule vide sur col A de Fait
with wsT.range("A" & Lcible & ":D" & Lcible) 'avec la ligne en cours de A traiter
    .copy destination:=wsF.range("A" & NvL) 'copier/coller sur Fait
    '.entirerow.hidden = true 'masquer
    .delete shift:=xlShiftUp 'suppression vers le haut
end with

msgbox "Traitement et déplacement OK"

End Sub

'DANS LE MODULE DE LA FEUILLE "A traiter"

Private Sub Worksheet_Change(ByVal Target As Range)
If not intersect(Target, range("D:D")) is nothing and not target.count > 1 then 'zone d'application de l'évènement et limite à une cellule
    If not application.countblank(range("A" & target.row & ":D" & target.row)) > 0 then 'continue si aucune cellule vide
        Call ArchiverTraitements(target)
    end if
end if
End sub

Pour y arriver, il faut :

- enregistrer le fichier au format .xlsm,
- activer le volet "Développeur" (si ce n'est pas déjà fait) : Volet "Fichier" / Options / Personnaliser le ruban > cocher "développeur",
- sur le volet "Développeur", ouvrir l'éditeur "Visual Basic" (raccourci Alt + F11),
- dans le menu contextuel "Insertion", sélectionner "Module",
- aller sur ce nouveau module et y copier le premier code,
- aller sur le module de la feuille "A traiter" et y coller le 2nd code.

Ensuite vous pourrez commencer les tests

Cdlt,

Honnêtement, 3GB je suis époustouflé, rapidité, efficacité...

Ça marche!!!

Un grand merci à vous.

Bonne fin de weekend et encore merci...

Merci ! Je suis ravi que ça marche du premier coup !

Bonne continuation,

Rechercher des sujets similaires à "deplacer ligne feuille quand cette ete traitee"