XL 2021 copier ligne vers une feuille existante sous condition et supprimer ligne de la feuille d'origine

NicolasKH

XLDnaute Junior
bonjour tous le monde
je desirerais vous aide pour m'ais a trouver une solution a mon probleme

j'ai dans mon classeur une feuille (base de donnes), dans la colonne L j'ai l'etat de mon projet.
je desirerais que quand dans la colonne L est inscrit TERMINER que cette meme ligne complete sois copier vers une autre feuille et en meme temps supprimer la ligne de la feuille d'origine.

je n'arrive pas a trouver une solution meme en regardant les tuto sur youtube
pouviez vous m'eclairer s'il vous plait
 

Pièces jointes

  • Planing Des Projets - Copie.xlsm
    53.7 KB · Affichages: 10
Solution
Hello Cousinhub, j'ai refait mon message,

Plutôt que la macro précédente je préfère celle-ci, plus sûre :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LO As ListObject, i&, n&
Set LO = Sheets("Terminé").ListObjects(1)
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With ListObjects(1).Range
    For i = 2 To .Rows.Count
        If LCase(.Cells(i, 12)) = "terminé" Then
            n = IIf(LO.DataBodyRange Is Nothing, 2, LO.Range.Rows.Count + 1)
            LO.Range.Rows(n) = .Rows(i).Value 'copie les valeurs
            .Rows(i).Delete xlUp 'supprime la ligne
            i = i - 1
        End If
    Next
End With
LO.Range.Columns.AutoFit 'ajustement largeurs...

job75

XLDnaute Barbatruc
Bonjour NicolasKH, le forum,

La 1ère feuille est un TCD qui traite tous les projets de la feuille "Baee de Donnees", terminés ou en cours.

Il n'est donc pas cohérent de vouloir supprimer les projets terminés de cette 2ème feuille.

A+
 

NicolasKH

XLDnaute Junior
Bonjour NicolasKH, le forum,

La 1ère feuille est un TCD qui traite tous les projets de la feuille "Baee de Donnees", terminés ou en cours.

Il n'est donc pas cohérent de vouloir supprimer les projets terminés de cette 2ème feuille.

A+
cest parce que j'ai graphique de grantt qui ne fonctionne pas a cause de cela, mais le fichier est trop lourd pour que je puisse le mettre en piece joint
 
Dernière édition:

job75

XLDnaute Barbatruc
Maintenant si vous voulez transférer les lignes dans la feuille "Terminé" voyez le fichier joint et cette macro dans le code de la feuille "Baee de Donnees" :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dest As Range, n&, i&
Set dest = Sheets("Terminé").ListObjects(1).Range
n = IIf(dest(2, 12) = "", 2, dest.Rows.Count + 1)
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With ListObjects(1).Range
    For i = 2 To .Rows.Count
        If LCase(.Cells(i, 12)) = "terminé" Then
            dest.Rows(n) = .Rows(i).Value 'copie les valeurs
            .Rows(i).Delete xlUp 'supprime la ligne
            n = n + 1
            i = i - 1
        End If
    Next
End With
dest.Resize(n).Columns.AutoFit 'ajustement largeurs
ThisWorkbook.RefreshAll 'MAJ du TCD
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche quand on modifie ou valide une cellule quelconque.

Dans le TCD il n'y aura plus que les projets en cours.

A+
 

Pièces jointes

  • Planing Des Projets - Copie.xlsm
    61.4 KB · Affichages: 9
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Bonjour,
Juste une petite question.
Le diagramme de Gantt est-il élaboré à partir du TCD?
Si c'est le cas, en insérant un segment "Progression", à "Sélection multiple", trié par ordre décroissant :

1694082172759.png


Et en décochant juste "100%", est-ce que ne suffirait pas à résoudre le souci?

1694082094236.png

Bonne journée
 

job75

XLDnaute Barbatruc
Hello Cousinhub, j'ai refait mon message,

Plutôt que la macro précédente je préfère celle-ci, plus sûre :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LO As ListObject, i&, n&
Set LO = Sheets("Terminé").ListObjects(1)
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With ListObjects(1).Range
    For i = 2 To .Rows.Count
        If LCase(.Cells(i, 12)) = "terminé" Then
            n = IIf(LO.DataBodyRange Is Nothing, 2, LO.Range.Rows.Count + 1)
            LO.Range.Rows(n) = .Rows(i).Value 'copie les valeurs
            .Rows(i).Delete xlUp 'supprime la ligne
            i = i - 1
        End If
    Next
End With
LO.Range.Columns.AutoFit 'ajustement largeurs
ThisWorkbook.RefreshAll 'MAJ du TCD
Application.EnableEvents = True 'réactive les évènements
End Sub
A+
 

Pièces jointes

  • Planing Des Projets(1).xlsm
    64.6 KB · Affichages: 13

NicolasKH

XLDnaute Junior
Maintenant si vous voulez transférer les lignes dans la feuille "Terminé" voyez le fichier joint et cette macro dans le code de la feuille "Baee de Donnees" :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dest As Range, n&, i&
Set dest = Sheets("Terminé").ListObjects(1).Range
n = IIf(dest(2, 12) = "", 2, dest.Rows.Count + 1)
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With ListObjects(1).Range
    For i = 2 To .Rows.Count
        If LCase(.Cells(i, 12)) = "terminé" Then
            dest.Rows(n) = .Rows(i).Value 'copie les valeurs
            .Rows(i).Delete xlUp 'supprime la ligne
            n = n + 1
            i = i - 1
        End If
    Next
End With
dest.Resize(n).Columns.AutoFit 'ajustement largeurs
ThisWorkbook.RefreshAll 'MAJ du TCD
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche quand on modifie ou valide une cellule quelconque.

Dans le TCD il n'y aura plus que les projets en cours.

A+
Merci a vous Job75 et Cousinhub
le code que vous m'aviez donner fonctionne tres bien comme je le voulais,

pour vos question en suspend, je supprime les lignes qui sont a 100% c'est parce que cela est lier a une tresorerie que ca fait un peut le bordel si c'est une autre personne que moi qui utilise le fichier, c'est juste pour cette raison que je supprime les lignes a 100%, dans mon classeur j'ai toute la finance que les ouvrier qui demande d'avoir des accompte, les societes qui me verse des accompte donc c'est un bordel, mais si vous voulez mon fichier complet je peut vous l'envoyer en PV pour que vous puissiez le decortiquer
 
Dernière édition:

NicolasKH

XLDnaute Junior
Bonjour,
Juste une petite question.
Le diagramme de Gantt est-il élaboré à partir du TCD?
Si c'est le cas, en insérant un segment "Progression", à "Sélection multiple", trié par ordre décroissant :

Regarde la pièce jointe 1178136

Et en décochant juste "100%", est-ce que ne suffirait pas à résoudre le souci?

Regarde la pièce jointe 1178135
Bonne journée
bonjour Cousinhub merci pour ta reponse
en fait je desirerais dans les colonnes de J a AJ que quans mon le projet est en cours les date de jour achever sois colorer en vert et en rouge les jours restant, cela me permet de voir un un coup oeil quel sont les projets qui sont en retard de livraison afin d'effectuer les facture aux societe en temps
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 267
Membres
103 168
dernier inscrit
isidore33