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,