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
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
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