Masquer Afficher suivant case cochée

Bonjour le forum

Pensée à ceux qui sont sous les eaux.

Je but sur une macro qui me permet dans un calendrier de masquer plusieurs .

Si coché masque colonne ou le texte ="vend"

Si non coché affichage de la colonne

les CheckBox sont dans la feuille "BDD" et les actions sont réalisées dans la feuille "GMP"

Comme je n'ai pas réussi avec le texte "ven" je n'ai pas fais avec "sam & dim"

J'ai commencé mais mon code me donne un défaut avec la position de Next

J'espère que ma demande est bien formulée.

**PROCEDURE MASQUER AFFICHER LES COLONNES CONTENANT "VEN" de la ligne 5

Private Sub ChkBx_MsqVend_Click()
Dim I, J, F
Dim c As Range

    'Si coché ...
    If ChkBx_MsqVend.Value = True Then

    Set F = Sheets("GMP")

         For J = 8 To Columns.Count
            For I = 5 To 5

                    Set c = Cells(I, J).Find("ven", , , xlValues, xlPart, , , True)
                    If Not c Is Nothing Then
                        c.EntireColumn.Hidden = True

    'Si non coché ...
    Else

        c.EntireColumn.Hidden = False

         Next I
         Next J

        End If

End Sub

merci de votre aide

Bonne journée au forum

3v3-macro-plan.zip (135.86 Ko)

Bonjour ledzep

J'espère que tu es meilleur à la gratte

Point besoin de ces 2 boucles, je n'ai pas compris la I
de plus comme tes cellules contiennent des dates, même si elle sont affichée "lun 01", il faut donc vérifier le numéro du jour et non son texte

Private Sub ChkBx_MsqVend_Click()
  Dim J As Long
  'Si coché ...
  If ChkBx_MsqVend.Value = True Then
      With Sheets("GMP")
        For J = 8 To Columns.Count
          Application.StatusBar = "Veuillez patienter, vérification colonne " & J & "/" & Columns.Count
          If Weekday(.Cells(5, J).Value, vbMonday) = 5 Then
            .Cells(5, J).EntireColumn.Hidden = True
          Else  ' Si non coché
            .Cells(5, J).EntireColumn.Hidden = False
          End If
       Next J
      End With
  End If
End Sub

A+

Bonjour le forum

Bonjour BrunoM45 , j'ai aimé ta remarque

Merci de ta réponse, je teste cela dans la journée.

et je m'inspire de ton code pour faire la même chose pour samedi et dimanche.

A bientôt

Re le forum

Re BrunoM45

J'ai fait comme cela,

'**PROCEDURE MASQUER AFFICHER LES COLONNES du week-end ( Colo Bleu) de la ligne 5

Private Sub ChkBx_MsqVend_Click()
  Dim J As Long
  'Si coché ...
  If ChkBx_MsqVend.Value = True Then
      With Sheets("GMP")
        For J = 8 To 274
          Application.StatusBar = "Veuillez patienter, vérification colonne " & J & "/" & Columns.Count
          If Weekday(.Cells(5, J).Value, vbMonday) = 5 Or Weekday(.Cells(5, J).Value, vbMonday) = 6 _
           Or Weekday(.Cells(5, J).Value, vbMonday) = 7 Then

            .Cells(5, J).EntireColumn.Hidden = True

          Else  ' Si non coché
            .Cells(5, J).EntireColumn.Hidden = False
          End If
       Next J
      End With
  End If
End Sub

1- supprimer Columns.Count -> réduction du tps d'exécution

2- Mis la totalité du wee-end -> après réflexion pourquoi faire 2 choses quand une seule suffit.

Par cotre si je décoche la checkbox la fonction Else ne fonctionne pas.

Une idée du pourquoi.

Faut-il écrire un nouveau code ?

Merci de vos suggestions.

Bonne journée à tous

2v4-macro-plan.zip (137.49 Ko)

Re,

Désolé, j'ai laissé des boulettes... bon pas d'excuse je n'ai pas de gratte

Private Sub ChkBx_MsqVend_Click()
  Dim J As Long
  Dim dCol As Long

  With Sheets("GMP")
    ' Dernière colonne remplie
    dCol = .Cells(5, Columns.Count).End(xlToLeft).Column
    ' Pour chaque colonne
    For J = 8 To dCol
      ' Si masquer vendredi est coché
      If ChkBx_MsqVend.Value = True Then
        Application.StatusBar = "Veuillez patienter, vérification colonne " & J & "/" & dCol
        ' Si le jour du planning est un vendredi, Samedi ou Dimanche, donc supérieur à 5
        If Weekday(.Cells(5, J).Value, vbMonday) >= 5 Then
          ' Masquer la colonne
          .Cells(5, J).EntireColumn.Hidden = True
        Else
          ' Sinon l'afficher
          .Cells(5, J).EntireColumn.Hidden = False
        End If
      Else  ' Si checkbox est décochée
        .Cells(5, J).EntireColumn.Hidden = False
      End If
    Next J
  End With
End Sub

A+

Re le forum

Re BrunoM45

Trop fort

Merci.

J'avais commencé ma recherche sur dernier colonne

derniereColonne = .Cells(5, 8).End(xlToRight).Column

Encore merci de ton aide.

A bientôt

Rechercher des sujets similaires à "masquer afficher suivant case cochee"