XL 2013 Masquer lignes en VBA sous conditions

Fabien62

XLDnaute Occasionnel
Bonjour à tous,

Des petites choses ont avancées, je souhaite finaliser mon fichier avec un peu de VBA pour masquer des lignes vides sur la feuille planning CP et bilan CP, je suis parti du code ci-dessous qui fonctionne mais le rafraîchissement ne se fait pas correctement, de plus, sur le bilan CP comme je fais un report de la feuille liste en colonne A, cette macro ne fonctionne pas.

- Pour le planning CP, je souhaite masquer de la ligne 15 à 21 si A est vide
- Pour le bilan CP, je souhaite masquer de la ligne 12 à 17 si A est vide

Sub masquer_ligne_Vide()
Dim cel As Range
For Each cel In Range("A15:A100")
If cel = "" Then
cel.EntireRow.Hidden = True
End If
Next
End Sub


Un fois arrivé à la date du 01/06/2018 à 00h01, est-il possible de programmer une copie des résultats de la colonnes CPN+1 dans la colonne CP N et remettre à 0 les CP N+1 pour l'année 2018-2019 uniquement pour les embauchés et renommer les dates des tableaux en 2018-2019 ?
 

Pièces jointes

  • Planning Congés V1-DEV.xls
    120 KB · Affichages: 79

JCGL

XLDnaute Barbatruc
Bonjour à tous,

Dans le module de la feuille Planning CP :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    If Target.Address = "$B$2" Then
        For Each n In [B4:AF4]
            If n = 0 Then
                n.Columns.Hidden = True
            Else
                n.Columns.Hidden = False
            End If
        Next
    End If

    Cells.EntireRow.Hidden = False
    For Each cel In Feuil2.Range("AG6:AG21")
        If cel = 0 Then cel.EntireRow.Hidden = True
    Next
    Application.ScreenUpdating = True
End Sub

A+ à tous
 

JCGL

XLDnaute Barbatruc
Bonjour à tous,

Dans le module de la feuille Bilan CP :

VB:
Private Sub Worksheet_Activate()
    'Application.ScreenUpdating = False
    Cells.EntireRow.Hidden = False
    For Each cel In Feuil4.Range("A3:A100")
        If IsNumeric(cel) Then cel.EntireRow.Hidden = True
    Next
    'Application.ScreenUpdating = True
End Sub

A+ à tous
 

Fabien62

XLDnaute Occasionnel
Bonjour JCGL,

Merci encore une fois pour votre aide précieuse !

Le code fonctionne parfaitement c'est exactement ce que je veux, merci infiniment

Pensez-vous que cette demande ci-dessous est possible ?, je voudrais pouvoir faire "disparaître" un salarié saisonnier ayant fini son contrat à partir du moment où la date est révolue de la liste de sélection.

Une fois arrivé à la date du 01/06/2018 à 00h01, est-il possible de programmer une copie des résultats de la colonnes CPN+1 dans la colonne CP N et remettre à 0 les CP N+1 pour l'année 2018-2019 uniquement pour les embauchés et renommer les dates des tableaux en 2018-2019 ?

Je vous joins le fichier avec vos codes intégré

Cdlt
 

Pièces jointes

  • Planning Congés V1-DEV.xls
    121.5 KB · Affichages: 66
Dernière édition:

JCGL

XLDnaute Barbatruc
Bonjour à tous,

Peut-être avec ceci :

VB:
Private Sub Worksheet_Activate()
    Dim Cel As Range
    Application.ScreenUpdating = False
    Cells.EntireRow.Hidden = False
    For Each Cel In Feuil4.Range("A3:A100")
        If IsNumeric(Cel) Then Cel.EntireRow.Hidden = True
    Next
    For Each Cel In Feuil4.Range("B3:B100")
        If Cel <> "Saisonnier" And Date > DateSerial(2018, 6, 1) Then
            Cel.Offset(, 4).Copy Cel.Offset(, 3)
            Cel.Offset(, 4) = 0
        End If
    Next
    If Date > DateSerial(2018, 6, 1) Then [A1] = "BILAN CP " & [An] & "-" & [An] + 1
    Application.ScreenUpdating = True
End Sub

A+ à tous
 
Dernière édition:

Fabien62

XLDnaute Occasionnel
Merci encore JCGL !

Je vais faire quelques essais, si je comprend bien,

Cette partie du code

For Each Cel In Feuil4.Range("B3:B100")
If Cel <> "Saisonnier" And Date > DateSerial(2018, 6, 1) Then
Cel.Offset(, 4).Copy Cel.Offset(, 3)
Cel.Offset(, 4) = 0
End If

Correspond à la copie des données le 1er Juin 2018 pour les embauchés ? dans ce cas pourquoi est-il indiqué <> "Saisonnier"

ET

Cette partie du code

If Date > DateSerial(2018, 6, 1) Then [A1] = "BILAN CP " & [An] & "-" & [An] + 1
Application.ScreenUpdating = True

Correspond à la mise à jour des dates du tableau ?

Merci beaucoup en tout cas
 

JCGL

XLDnaute Barbatruc
Bonjour à tous,

Le code est suffisamment simple pour que tu puisses ajuster selon ton souhait.
Tu as parfaitement compris le but du code

Rappel :
  • il faut rajouter un DUPONTxx dans Liste pour le voir apparaître dans la feuille.
  • il faut modifier la cellule AN par ta liste de validation

A+ à tous
 
Dernière édition:

Discussions similaires

Réponses
0
Affichages
214

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87