Archivage d'une ligne lorsqu'on sélectionne "terminé"

Bonjour à toutes et à tous,

Je sais que le sujet est redondant, mais j'ai parcouru ce forum et passé un certain nombre d'heure sur google sans réussir à adapter les codes que je trouvais.

Mise en situation :

Dans mon tableur, j'ai une feuille nommée "Cas à revoir", j'aimerai que lorsque l'on sélectionne "Terminé" dans le menu déroulant de la colonne U "Statut du dossier", la ligne concernée par le statut "Terminé" soit copiée dans la feuille "Archive" et que le contenu de cette ligne soit effacée dans la feuille "Cas à revoir".

Il faut que le contenu des cellules de la ligne soit effacé et pas que la ligne entière soit supprimée car lorsque je supprime la ligne, ça a un impact sur la mise en forme de mon tableau et j'ai besoin qu'il reste intact avec 3001 lignes sous cette mise en forme.

J'aurai également besoin que ces lignes copiées dans la feuille "Archives" soient conservées et se copient les unes en dessous des autres afin d'avoir une trace de ces dossiers clôturés.

Pour le moment, je n'arrive qu'à supprimer les lignes du tableau "Cas à revoir" (donc ça impacte la mise en forme) et lorsque les lignes sont déplacées dans la feuille "Archive", elles se remplacent les unes par les autres, je n'ai donc pas de visibilité sur ce qui est terminé. En utilisant ça :

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, [U5:U3001]) Is Nothing Then Exit Sub

If Target.Value = "Terminé" Then

If [Terminé!A1] = "" Then

ligne = 1

Else

ligne = Sheets("Terminé").Cells(Rows.Count, 2).End(xlUp).Row + 1

End If

Range(Cells(Target.Row, "A"), Cells(Target.Row, "AE")).Copy _

Sheets("Terminé").Cells(ligne, 2)

Application.EnableEvents = False

Range(Cells(Target.Row, "A"), Cells(Target.Row, "AE")).Delete xlShiftUp

Application.EnableEvents = True

End If

End Sub

Voici mon fichier TEST :

23test.zip (209.53 Ko)

D'avance merci pour toute l'aide que vous pourrez m'apporter !

Belle journée,

CeceSGC

Bonjour cecesgc,

Si vous voulez vous simplifier la tâche, il faudrait commencer par transformer les données des tableaux des onglets "Cas à revoir" et "Archive" en tableaux structurés (TS). Avant cela il faut supprimer la ligne 4 qui fait office de séparateur mais qui, sauf erreur, n'a pas d'autre utilité puis sélectionner la 1ère cellule de titre du tableau et cliquer sur le menu "Insertion" / "Tableau" en s'assurant que "Mon tableau contient des en-têtes" est coché. Donner ensuite un nom significatif au tableau qui pour l'instant s'appelle "TableauN". De même, je vous conseille d'utiliser des TS pour vos listes de valeurs.

Pour découvrir les (nombreux) avantages d'utiliser des TS, vous pouvez regarder sur ce forum et sur internet, il y a pléthore d'articles.

Pour les aspects de mise en forme, une alternance de couleur est proposée dans les modèles et pour mettre en couleur alternée des pavés différents, une MFC basée sur une formule avec un modulo de la ligne [=MOD(LIGNE();2)=0 => une couleur de fond, =MOD(LIGNE();2)=1 => une autre couleur de fond ] vous permettrait de gérer les autres alternances.

Sur cette base, la ligne (statut terminé) à archiver pourrait être copiée dans le tableau d'archivage et supprimée dans le tableau d'origine. Les TS n'ont pas besoin d'avoir de lignes vides, les formules et mises en forme sont propagées lors de l'ajout de lignes.

Qu'en pensez-vous ? et si vous êtes d'accord, je propose que vous renvoyez votre fichier en ayant fait les modifications des 2 tableaux.

Cdlt,

Cylfo

Bonjour Cylfo,

Merci ! Je n'utilise à la base pas de TS car mon équipe ayant de lourde difficultés avec excel, je me retrouvais souvent avec de nouvelles lignes ou colonnes en dehors du TS. Cependant, ici, je crée justement des tableurs types afin de leur facilité la vie, je pense donc que c'est compatible.

Je ne gère pas les ce type de formule dans les MFC, tout ce que j'arrive à faire, c'est de modifier la mise en forme d'une ligne en fonction du contenu d'une cellule en particulier (effectif et fonctionnel dans un autre tableau). Si vous savez m'aiguiller, c'est top.

Voici le tableur modifié avec les TS.

28test.xlsm (258.25 Ko)

Merci et excellente fin de journée,

CeceSGC

Re,

Une 1ère version qui ne traite que l'archivage des lignes ayant le statut "Terminé". Pour les MFC, on verra ensuite mais ce n'est pas plus compliqué que celles que vous avez déjà définies.

J'ai donné des noms significatifs aux différents TS et dans les listes de validation j'ai utilisé des plages nommées basées sur les TS, de cette manière les listes suivent automatiquement l'ajout / suppression de données dans les référentiels (motifs des cas à prévoir, statut du dossier).

Le code est dans l'événement "Worksheet_Change" associé à la feuille "Cas à revoir". Testé uniquement ce classeur et ne reportez pas encore les modifs dans le classeur réel car il faudra adapté le code pour faire référence au titre des colonnes plutôt qu'à un n° de colonne. Si vous déplacez ou insérer une colonne, cela ne fonctionne plus alors qu'en utilisant le titre cela continuera de fonctionner ... sauf si vous changez le titre, il y a toujours une limite .

Il y avait du code associé à la feuille "Archive" que j'ai supprimé car les données ne sont plus sensées être actualisées. Les protéger par un mot de passe pourrait être une bonne chose, si vous souhaitez en mettre un, je modifierai le code pour le gérer.

25test2.xlsm (35.15 Ko)

Cdlt,

Cylfo

Bonjour Cylfo,

C'est fantastique, je vous remercie ! Vos explications sont claires et précises. J'ai analysé le code et vos explications et je pense en saisir une partie. Je serai en effet heureuse de comprendre de quelle manière adapter le code à mon tableau définitif.

Pas ailleurs, vos idées et modifications sont très intéressantes.

J'ai testé dans le classeur votre code fonctionne à merveille et je pense avoir réussi les MFC. Voici le fichier test avec les MFC :

Un mot de passe pour protéger le code contre la modification de mes collaborateurs? C'est dans ce sens que vous voulez parler?

Belle journée,

Céline

Re,

Pour les MFC, c'est impec .

Dans la version 3 ci-jointe, j'ai ajouté le module "MOD_Declarations" dans lequel sont définies et expliquées les constantes à modifier pour que le code fonctionne avec le fichier réel. Dans le classeur définitif, il faut ajouter ce module et copier la procédure "Worksheet_Change" de l'onglet "Cas à revoir".

Pour la protection, je faisais référence aux données de l'onglet "Archive" mais si vous protégez cet onglet, il faut aussi protéger le code (voir les explications dans le module "MOD_Declarations"). Si vous ne voulez pas utiliser la protection des données archivées, il faut juste supprimer ou mettre en commentaire les lignes Worksheets("Archive").UnProtect ... et Worksheets("Archive").Protect ... dans la procédure Worksheet_Change.

29test3.xlsm (38.05 Ko)

Cdlt,

Cylfo

Hello Cylfo,

Je te remercie pour toutes tes explications et ce code qui fonctionne à la perfection sur le tableau test que nous nous transmettons.

Cependant, après plusieurs heures de tests, je n'arrive pas à le faire fonctionner sur mon tableau de travail. J'ai correctement remplacé le numéro des colonnes par le titre des colonnes afférentes de cette manière :

Public Const TSCAR_COL_MOTIF = "Motif du cas à revoir" ' à remplacer par le titre de la colonne
Public Const TSCAR_COL_MOTIF_HD = "Motif en date du" ' à remplacer par le titre de la colonne
Public Const TSCAR_COL_STATUT = "Statut du dossier" ' à remplacer par le titre de la colonne
Public Const TSCAR_COL_STATUT_HD = "Statut en date du" ' à remplacer par le titre de la colonne

Voici le résultat dans le tableau "cas à revoir":

STUV
Motif du cas à revoirMotif en date duStatut du dossierStatut en date du
Vendu26/08/2024Nouveau rappel
Mutation quelconque26/08/2024Terminé
Courrier non distribué26/08/2024Terminé

A savoir que le "Motif du cas à revoir" en colonne S s'horodate automatiquement et correctement en colonne T, mais le statut du dossier ne s'horodate pas et ne s'archive pas.

J'ai également vérifié que mes TS étaient correctement renommées.

Je ne suis pas assez experte pour voir d'où vient le problème...

Belle apres-midi,

CeceSGC

EDIT :

Cylflo,

Ca fonctionne !

J'ai du changer le nom de la colonne V. Avec "Statut en date du" ça ne fonctionnait pas...

Merci beaucoup !!

Rechercher des sujets similaires à "archivage ligne lorsqu selectionne termine"