Bonsoir le Forum.
Je sèche sur une histoire de saisie de dates dans un formulaire.
J'ai un "Tableau1": Colonnes "Noms", "Date d’entrée", "Date de sortie"
Un bouton "Filtrer" qui masque les lignes dont la date d’entrée est antérieure a Aujourd'hui.
J'ai aussi un formulaire qui me permet de modifier les enregistrements de mon tableau.
Si les dates sont saisies dans la feuille, le filtrage se fait correctement
Si je modifie une date d’entrée en utilisant le formulaire (ou simplement, si j'affiche un enregistrement et que je valide le formulaire), lors du filtrage, l'enregistrement sera masque, même si la date d’entrée est postérieure a aujourd'hui.
Seul moyen de retrouver une situation normale: double cliquer sur la cellule de date, et sortir de la cellule.
Sans doute est ce du au fait que le formulaire passe la date en format texte?
J'ai essaye avec la fonction CDate, mais mon soucis, c'est que les cellules concernées peuvent aussi contenir le texte "N/A" et que je ne sais pas comment intégrer cette fonction dans la boucle du formulaire.
Ci-joint, mon fichier exemple, et ci-dessous, le code du formulaire.
Merci pour votre aide.
Je sèche sur une histoire de saisie de dates dans un formulaire.
J'ai un "Tableau1": Colonnes "Noms", "Date d’entrée", "Date de sortie"
Un bouton "Filtrer" qui masque les lignes dont la date d’entrée est antérieure a Aujourd'hui.
J'ai aussi un formulaire qui me permet de modifier les enregistrements de mon tableau.
Si les dates sont saisies dans la feuille, le filtrage se fait correctement
Si je modifie une date d’entrée en utilisant le formulaire (ou simplement, si j'affiche un enregistrement et que je valide le formulaire), lors du filtrage, l'enregistrement sera masque, même si la date d’entrée est postérieure a aujourd'hui.
Seul moyen de retrouver une situation normale: double cliquer sur la cellule de date, et sortir de la cellule.
Sans doute est ce du au fait que le formulaire passe la date en format texte?
J'ai essaye avec la fonction CDate, mais mon soucis, c'est que les cellules concernées peuvent aussi contenir le texte "N/A" et que je ne sais pas comment intégrer cette fonction dans la boucle du formulaire.
Ci-joint, mon fichier exemple, et ci-dessous, le code du formulaire.
Merci pour votre aide.
Option Explicit
Dim Ligne As Long
Private Sub ComboBox1_Change()
Dim Ctrl As Control
Dim Colonne As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
With Sheets("Feuil1")
Ligne = Me.ComboBox1.ListIndex + 5 'Debut de la premiere ligne de donnees?
For Each Ctrl In Me.Controls
Colonne = Val(Ctrl.Tag)
If Colonne > 0 Then Ctrl = .Cells(Ligne, Colonne)
Next Ctrl
End With
End Sub
Private Sub CommandButton1_Click()
' Bouton VALIDATE
Dim dDate As Date
Dim Ctrl As Control
Dim Colonne As Integer
Dim Ligne As Long
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 5 'Debut de la premiere ligne de donnees
With Sheets("Feuil1")
For Each Ctrl In Me.Controls
Colonne = Val(Ctrl.Tag)
If Colonne > 0 Then .Cells(Ligne, Colonne) = Ctrl
'Formater Dates
TextBox1.Value = Format(TextBox1, "[$-409]d/mmm/yyyy;@")
TextBox2.Value = Format(TextBox2, "[$-409]d/mmm/yyyy;@")
Next Ctrl
End With
End Sub
Private Sub UserForm_Initialize()
Dim J As Long
With Sheets("Feuil1")
For J = 5 To .Range("A" & Rows.Count).End(xlUp).Row ' 5 = Debut de la premiere ligne de donnees
Me.ComboBox1.AddItem .Range("A" & J)
Next J
End With
End Sub
Pièces jointes
Dernière édition: