Masquer Lignes à plusieurs conditions

jacky49

XLDnaute Impliqué
Bonsoir le Forum,

je demande votre aide car j'ai ce code ci-dessous qui mes sert à imprimer et masquer les lignes vides , il fonctionne à peu près car la c'est une copie du fichier et il ne me masque pas les lignes mais le problème est plus complexe et je m’explique dans le fichier
merci d'avance
Jacky
Code:
Sub Imprim_series(ByVal WsName As String)
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim MaPlage As Range
    Set ws = Worksheets(WsName)
    Derlig = ws.Range("D" & ws.Rows.Count).End(xlUp).Row
    Set MaPlage = ws.Range("B1:H" & Derlig)
'Rows("2:4").Hidden = True
With ws.PageSetup
    .PrintArea = MaPlage.Address
       '.LeftFooter = ""
       '.CenterFooter = "&""Times New Roman,italique""&18" & [FH8] & Chr(10) & [FJ8] & "  " & [Fk8] & " , " & [Fl8] & " , " & [Fm8] & "  " & [Fn8] & "  " & [FO8] & Chr(10) & [FQ8]
       '.RightFooter = ""
End With
With ws.PageSetup
.PrintArea = MaPlage.Address
       '.LeftHeader = ""
       '.CenterHeader = "&""Times New Roman,italique""&20" & [CO2] & "  " & [FP8] & "  " & [CQ2] & "  " & Chr(10) & [CY4] & "  " & [FO8] & Chr(10) & Chr(10) & [CP4] & Chr(10) & [CO3]
        '.RightHeader = ""
End With
    ws.PrintOut Copies:=4, Collate:=True
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • Essai Code.xlsm
    33.5 KB · Affichages: 31

Papou-net

XLDnaute Barbatruc
Re : Masquer Lignes à plusieurs conditions

Bonsoir Jacky,

Voici une copie de ton fichier avec une macro commandée par le bouton "Masquer les lignes".

Cette macro est dans Module1

Cordialement.
 

Pièces jointes

  • Copie de Essai Code.xlsm
    36.2 KB · Affichages: 40

jacky49

XLDnaute Impliqué
Re : Masquer Lignes à plusieurs conditions

Bonjour,

juste une autre question, ce code me servira pour plusieurs feuille ou les tableau sont identiquement placés, plutôt que de faire 20 codes identiques en changeant le nom de la feuille, que faut il changer au code pour qu'il puisse servir à toutes les feuilles
merci
jacky
 

Papou-net

XLDnaute Barbatruc
Re : Masquer Lignes à plusieurs conditions

Bonjour Jacky,

Voici comment modifier le code :

Sub MasquerLignes()
Dim Cel As Range, Plage As Range, sh As Object

Code:
Sub MasquerLignes()
Dim Cel As Range, Plage As Range, sh As Object

For Each sh In Sheets
  If sh.Name Like "CG SD*" Then
    With sh
      For Each Cel In .Range("D:D").SpecialCells(xlCellTypeConstants)
        If Cel.Value Like "Dos*" And Cel.Offset(1, 0) = "" Then
          If Plage Is Nothing Then
            Set Plage = Cel.Offset(-1, 0).Resize(10, 1)
            Else
            Set Plage = Application.Union(Plage, Cel.Offset(-1, 0).Resize(10, 1))
          End If
        End If
      Next
    End With
    Plage.EntireRow.Hidden = True
    Set Plage = Nothing
  End If
Next
End Sub
Pour éviter d'intervenir sur la totalité des feuilles du classeur, la première condition détermine si le nom de la feuille comporte la chaîne de caractères "CG SD". Si c'est le cas, la macro est exécutée sinon on passe à la feuille suivante. Tu peux bien sûr adapter cette condition à ta guise.

Cordialement.
 

jacky49

XLDnaute Impliqué
Re : Masquer Lignes à plusieurs conditions

Re le forum, papou-net,

en fait mais feuille son nommé ainsi : CF SD , CF D,CG SD, CG D, ED SD, ED D, EH SD, EH D, et à chaque fois, il y en a 3 de chaque donc ex: CF SD 2, CF SD 3, CF SD 4 etc.. donc puis je mettre toutes ces conditions sur cette ligne :
Code:
If sh.Name Like "CG SD*" Then

merci
jacky
 

jacky49

XLDnaute Impliqué
Re : Masquer Lignes à plusieurs conditions

Bonsoir le forum, Papou-net,

j'ai mis le code mais il me met une erreur que je joins(copie d'écran) et il me surligne cette ligne:
Code:
For Each Cel In .Range("D:D").SpecialCells(xlCellTypeConstants)
le fichier n'est pas protégé
merci
jacky
 

Pièces jointes

  • Capture Bug.PNG
    Capture Bug.PNG
    10.7 KB · Affichages: 38
  • Capture Bug.PNG
    Capture Bug.PNG
    10.7 KB · Affichages: 33

jacky49

XLDnaute Impliqué
Re : Masquer Lignes à plusieurs conditions

Re Bonjour à tous,

Donc le bug est règlé, j'avais une feuille qui était protégée mais par contre, je n'arrive pas à mettre le code pour les autres feuilles qui sont différentes de "CG SD*" comme "CF SD*"
merci de votre aide
jacky
 

Papou-net

XLDnaute Barbatruc
Re : Masquer Lignes à plusieurs conditions

Bonsoir Jacky,

Si toutes les feuilles concernées n'ont pas de partie commune dans leur nom d'onglet, alors il faut utiliser les n° d'index des feuilles.

Pour cela, il serait souhaitable que tu joignes un classeur reproduisant la même structure que ton fichier, les feuilles pouvant être vides de données si confidentielles.

A +

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : Masquer Lignes à plusieurs conditions

RE Jacky,

Voici ton fichier avec 2 macros exemples supplémentaires :

- Sub MasquerLignes3() : cette procédure ne s'exécute que sur les feuilles non masquées

- Sub MasquerLignes4() : cette procédure s'exécute sur toutes les feuilles dont le nom système (CodeName) est différent de "Feuil1". Tu peux ajouter d'autres feuilles en insérant des conditions Or, par ex :

Code:
For Each sh In Sheets
  If Not sh.CodeName = "Feuil1" or not sh.CodeName = "Feuil2" Or Not ... Then
  .......

Ps : j'ai ajouté la ligne On Error Resume Next car si toutes les lignes sont vides, ça provoque une erreur.

A +

Cordialement.
 

Pièces jointes

  • Copie de Essai Code 2.xls
    413 KB · Affichages: 28

Statistiques des forums

Discussions
312 288
Messages
2 086 832
Membres
103 399
dernier inscrit
Tassiou