XL 2016 Copier dans un autre onglet et couper les lignes selon un critère

Gabriel.leroux82

XLDnaute Nouveau
Bonjour le forum, je viens encore vers vous pour des solutions à mes problèmes.

Je gère une grande base de données qui contient des informations des clients, une fois on offre le service complet on doit mettre la ligne en rouge (comme mentionnée dans le test).
Le problème est qu'on se trouve avec énormément de lignes rouges inutiles mais pas le choix de les archiver pour des contrôle et des vérifications,

Je peux faire une macro manuelle (pas très fort autrement) avec un bouton supprimer que je demande de supprimer la ligne et la coller à un autre onglet, mais je dois reconfigurer toutes les dates et les utilisateurs ne portent pas vraiment attention à ce genre de bouton et je risque de perdre beaucoup d'info,

Alors, je cherche une macro ou fonctions qui sert à copier la ligne, la couper et la copier dans un autre onglet, le critère est : une donné de la 1er cellule "Fermé" donc je vais me retrouver avec un 2e onglet qui s'alimente avec les dossiers rouges fermés et un onglet avec les dossiers ouvert.

Voici en pièce jointe un exemple

Merci beaucoup d'avance pour votre aide
 

Pièces jointes

  • TESTEXCEL.xlsx
    24.2 KB · Affichages: 15

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Gabriel,
1- Quelle donnée peut servir d'identifiant unique ? N° de dossier, N° de demande ?
2- Si on archive toutes les demandes fermées, ne restent alors que les demandes ouvertes. Quel intérêt alors de les ranger dans une feuille Ouvert ?
3- Que signifient les étoiles et soleils ? Les données à archiver ou un code perso qui n'a rien à voir avec le problème.
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Gabriel, Sylvanu , bonsoir le forum,

J'ai adapté une macro que j'avais faite pour un cas similaire. Elle crée, s'il n'existe déjà pas, un onglet nommé Fermé où sont reportées toutes les lignes contenant Fermé dans la colonne A :

VB:
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OF As Worksheet 'déclare la variable OF (Onglet Fermé)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim LI As Integer 'déclare la variable LI (Ligne)
Dim PL As Range 'déclare la variable PL (PLage)

Set OS = Worksheets("Feuil1") 'définit l'onglet OS (à adapter à ton cas)
Set PL = OS.Range("A1") 'initialise la plage PL
TV = OS.Range("A4").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    If TV(I, 1) = "Fermé" Then Set PL = IIf(PL.Cells.Count = 1, OS.Rows(I + 3), Application.Union(PL, OS.Rows(I + 3))) 'si la donnée ligne I colonne 1 de TV est vide, définit la plage PL
Next I 'prochaine ligne de la boucle
If PL.Cells.Count = 1 Then 'condition : si l aplage PL ne comporte qu'une seule cellule
    Exit Sub 'sort de la pocédure
Else 'sinon
    On Error Resume Next 'gestion des erreurs (en cas d'erreur passe a la ligne suivante)
    Set OF = Worksheets("Fermé") 'définit l'onglet OF (génère une erreur si cet onglet n'existe pas)
    If Err > 0 Then 'condition : si une erreur a été générée
        Err.Clear 'supprime l'erreur
        OS.Copy after:=OS 'copy l'onglet OS après lui-même
        Set OF = ActiveSheet 'définit l'onglet OF
        OF.Name = "Fermé" 'renomme l'onglet OF
    End If 'fin de la condition
    On Error GoTo 0 'annule la gestion des erreurs
    OF.Range("A4").CurrentRegion.Offset(1, 0).ClearContents 'vide d'éventuelles anciennes données dans l'onglet OF
    PL.Copy OF.Range("A5") 'copie la plage PL dans la cellule A5 de l'onglet OF
    PL.Delete 'supprime la plage PL'supprime la plage PL
End If 'fin de la condition
End Sub
 

Gabriel.leroux82

XLDnaute Nouveau
Bonjour Sylvanu, bonjour Robert et merci pour vos réponses et je suis ouverts à vos suggestions

@ Sylvanu On peut mettre le numéro de dossier comme code unique, c'est une bonne idée
Le but d'archiver les dossiers fermés est d'assouplir la liste et de la rendre moins encombré, elle contient plus de 100 colonnes et les lignes je te dis pas. elle est utilisée quotidiennement, les dossiers fermés ne sont pas utilisés seulement lors de la vérification, je suis obligé de les garder,
Les étoiles et soleil sont des signes pour les coordonnateurs de services, n'ont pas d'importance pour nous

@Robert, je vais essayer ta macro et je te reviens,

Merci d'avance
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 102
Messages
2 085 302
Membres
102 857
dernier inscrit
Nony1931