Dates dans userform

Bonjour,

J'ai un problème avec mon code

J'affiche en appuyant sur le bouton rouge "saisir plage à visualiser" en bas à droite dans la première colonne une userform qui permet d'entrer la date de début et de la date de fin de la période que veut voir afficher.

Mon code ci-dessous au clic du bouton valider de l'userform permet de masquer les colonnes des dates inférieures à la date de début et les colonnes supérieurs à la date de fin.

Private Sub UserForm_Initialize()
    Dim dd As String
    Dim ee As String
    dd = Date + 60
    ee = Date - Weekday(Date, 3)
    datedeb.Value = ee
    datefin.Value = dd
End Sub

Private Sub Valider_Click()
               dercol = Feuil38.Cells(55, Cells.Columns.Count).End(xlToLeft).Column

              Application.ScreenUpdating = False

              With Sheets("Stats repas").Cells
                       .EntireColumn.Hidden = False
             End With

             For i = 5 To dercol
                          If Feuil38.Cells(55, i).Value < CDate(datedeb.Value) Or Feuil38.Cells(55, i).Value > CDate(datefin.Value) Then
                                             Feuil38.Cells(55, i).EntireColumn.Hidden = True
                         End If
            Next i

        Feuil38.Cells(55, 2).EntireColumn.Hidden = False
        Feuil38.Cells(55, 4).EntireColumn.Hidden = False
        Feuil38.Columns(1).Hidden = False

    Unload Me

End Sub

Ce code fonctionne.

Mais 1 fois sur deux, il ne tient pas compte de la date de fin et affiche toutes les colonnes après la date de fin

Par contre il tient compte à chaque fois de la date de début et masque les colonnes inférieurs à la date de début.

Ci joint mon fichier => PS: 2eme bouton (bouton bascule) en haut à gauche "Afficher / Masquer rubans" permet de cacher les barres d'état, les n° de colonnes et de lignes... Cliquer sur ce bouton pour afficher les rubans (ci dessous le code pour info) :

Sub ruban()

Dim enabled As Boolean
enabled = True

' visibilité onglets
ActiveWindow.DisplayWorkbookTabs = enabled
' Barre de formule
Application.DisplayFormulaBar = enabled
' barre d'état
Application.DisplayStatusBar = enabled
' entetes lignes et colonnes
ActiveWindow.DisplayHeadings = enabled
' ruban
If enabled Then
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",true)"
Else
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",false)"
End If
End Sub

Sub ruban1()
Application.CommandBars("PLY").enabled = True
Dim enabled As Boolean
enabled = False

' visibilité onglets
ActiveWindow.DisplayWorkbookTabs = enabled
' Barre de formule
Application.DisplayFormulaBar = enabled
' barre d'état
Application.DisplayStatusBar = enabled
' entetes lignes et colonnes
ActiveWindow.DisplayHeadings = enabled
' ruban
If enabled Then
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",true)"
Else
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",false)"
End If
End Sub

Pouvez-vous m'aider svp

Je vous serais très reconnaissant

Cordialement

23classeur1.xlsm (815.15 Ko)

Bonjour,

Essaye comme cela

Private Sub UserForm_Initialize()
Dim dd As String
Dim ee As String
    dd = Date + 60
    ee = Date - Weekday(Date, 3)
    datedeb.Value = ee
    datefin.Value = dd
End Sub
Private Sub Valider_Click()
Dim DerCol As Integer, Col As Integer
    With Sheets("Stats repas")
        Application.ScreenUpdating = False
        .Cells.EntireColumn.Hidden = False
        DerCol = .Cells(55, .Columns.Count).End(xlToLeft).Column
        For Col = 5 To DerCol
            If .Cells(55, Col).Value < CDate(datedeb.Value) Or .Cells(55, Col).Value > CDate(datefin.Value) Then
                .Cells(55, Col).EntireColumn.Hidden = True
            End If
        Next Col
        .Cells(55, 2).EntireColumn.Hidden = False
        .Cells(55, 4).EntireColumn.Hidden = False
        .Columns(1).Hidden = False
        Application.ScreenUpdating = True
    End With
    Unload Me
End Sub

Cordialement.

C'est parfait

Merci beaucoup

Bon dimanche

Rechercher des sujets similaires à "dates userform"