Trier et déplacer des lignes barrées

Rouli

XLDnaute Nouveau
Bonjour,

pour gérer une facturation semestrielle, j'ai créer ce fichier avec des mises en forme conditionnelles.

Je cherche maintenant à déplacer les cellules barrées de la feuille 'en cours' dans une autre feuille 'terminé'. J'ai trouvé sur internet une fonction pour cacher les cellules si la police est barrée (qui ne fonctionne pas dans mon classeur d'ailleurs?).

Seriez-vous comment faire pour déplacer les cellules qui seraient barrées dans la feuille 'en cours' dans la feuille 'terminé'?

D'avance merci
 

Pièces jointes

  • Facturation Semestre-test.xlsm
    32.5 KB · Affichages: 27

david84

XLDnaute Barbatruc
Bonjour,
pour masquer les lignes :
Code:
Sub Masqueligne2()
Dim I As Long, Pl As Range
Application.ScreenUpdating = False
Set Pl = [A1].CurrentRegion
For I = Pl.Rows.Count To 2 Step -1
  If Pl(I, 5).Value = "x" Then Pl.Rows(I).Hidden = True
Next I
Application.ScreenUpdating = True
End Sub
A+
 

Rouli

XLDnaute Nouveau
Bonjour,
pour masquer les lignes :
Code:
Sub Masqueligne2()
Dim I As Long, Pl As Range
Application.ScreenUpdating = False
Set Pl = [A1].CurrentRegion
For I = Pl.Rows.Count To 2 Step -1
  If Pl(I, 5).Value = "x" Then Pl.Rows(I).Hidden = True
Next I
Application.ScreenUpdating = True
End Sub
A+

Merci,
ça cache bien les lignes.
En revanche cela cache toutes les lignes ou il y a une police barrée. Ce que je souhaiterai c'est qu'il cache la ligne seulement si la police de la colonne A est barrée.

Sinon, plus que les cacher, si tu sais comment les copier dans le deuxieme onglet je suis preneur.

Encore merci!
 

chris

XLDnaute Barbatruc
Bonjour à tous
Code:
Sub Masqueligne()
Dim I As Long, Pl As Range, DestLig As Long
Application.ScreenUpdating = False
With Worksheets("En cours")
    Set Pl = .[A1].CurrentRegion
    DestLig = Worksheets("Terminé").Cells(1, 1).CurrentRegion.Rows.Count + 1
    For I = Pl.Rows.Count To 2 Step -1
      If Pl(I, 1).DisplayFormat.Font.Strikethrough = True Then
        Pl.Rows(I).Cut (Worksheets("Terminé").Cells(DestLig, 1))
        Pl.Rows(I).Delete Shift:=xlUp
        DestLig = DestLig + 1
    End If
    Next I
End With
Application.ScreenUpdating = True
End Sub
Si la copie ne doit pas avoir la MFC il faudra ajouter une ligne pour la supprimer...
 

Rouli

XLDnaute Nouveau
Bonjour à tous
Code:
Sub Masqueligne()
Dim I As Long, Pl As Range, DestLig As Long
Application.ScreenUpdating = False
With Worksheets("En cours")
    Set Pl = .[A1].CurrentRegion
    DestLig = Worksheets("Terminé").Cells(1, 1).CurrentRegion.Rows.Count + 1
    For I = Pl.Rows.Count To 2 Step -1
      If Pl(I, 1).DisplayFormat.Font.Strikethrough = True Then
        Pl.Rows(I).Cut (Worksheets("Terminé").Cells(DestLig, 1))
        Pl.Rows(I).Delete Shift:=xlUp
        DestLig = DestLig + 1
    End If
    Next I
End With
Application.ScreenUpdating = True
End Sub
Si la copie ne doit pas avoir la MFC il faudra ajouter une ligne pour la supprimer...

Super merci !

A partir de cela, j'ai essayé de faire une fonction "retour" au cas où :

Sub Ligne_reprise()
Dim I As Long, Pl As Range, DestLig As Long
Application.ScreenUpdating = False
With Worksheets("Terminé")
Set Pl = .[A2].CurrentRegion
DestLig = Worksheets("En cours").Cells(1, 1).CurrentRegion.Rows.Count + 1
For I = Pl.Rows.Count To 2 Step -1
If Pl(I, 1).DisplayFormat.Font.Strikethrough = False Then
Pl.Rows(I).Cut (Worksheets("Terminé").Cells(DestLig, 1))
Pl.Rows(I).Delete Shift:=xlUp
DestLig = DestLig + 1
End If
Next I
End With
Application.ScreenUpdating = True
End Sub

Elle enlève bien la ligne, seulement elle ne la colle pas dans la feuille 'En cours'. Vois tu ou je me trompe?
 

Discussions similaires

Statistiques des forums

Discussions
312 023
Messages
2 084 715
Membres
102 637
dernier inscrit
TOTO33000