Bonjour ArTcOhh, CB60,
Comme a dit mon collègue, il nous faudrait un peu plus d'info sur ton fichier...
Dans les images que tu as fournis, il y a un tableau avec ONSIGHT / FLASH / REDPOINT / TOPROPE / TOTAL | Dans ton fichier il nous faudrait ce tableau pour réaliser l'histogramme. Fais-en un avec des données fictives
À noter quand j'ai ouvert ton fichier : Il n'y a pas de liste de côte, je ne sais pas si c'est fait exprès mais ça serai plus sympa pour l'utilisateur.
Pour optimiser ta TexTBox contenant la date, je te propose de rajouter ces trois codes :
1/
Private Sub TextBoxdate_change()
'On autorise la saisie de 10 caractères maximum
TextBoxdate.MaxLength = 10
End Sub
2/
Private Sub TextBoxdate_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'On autorise uniquement la saisie des caractères "0123456789"
If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
3/
Private Sub TextBoxdate_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim Valeur As Byte
'Si l'utilisateur presse la touche "Suppr" ou la touche "Del" (<-) alors quitte la procédure
If KeyCode = 8 Or KeyCode = 46 Then
Exit Sub
Else
Valeur = Len(TextBoxdate)
'Si le jour ou le mois est inscrit, alors ajoute un "/" automatiquement
If Valeur = 2 Then
TextBoxdate = TextBoxdate & "/"
ElseIf Valeur = 5 Then
TextBoxdate = TextBoxdate & "/20"
End If
'Si la date inscrite contient 8 caractères
If Valeur = 10 Then
'Si le jour est compris entre [1;31] et le mois entre [1;12] alors
If (Mid(TextBoxdate.Value, 1, 2) >= 1 And Mid(TextBoxdate.Value, 1, 2) < 32) And (Mid(TextBoxdate.Value, 4, 2) >= 1 And Mid(TextBoxdate.Value, 4, 2) < 13) Then
'On va étudier les cas des différents mois
Select Case Mid(TextBoxdate.Value, 4, 2)
'Pour les mois d'Avril, Juin, Octobre et Novembre
Case 4, 6, 9, 11
'Si le jour est supérieur à 30 alors va à DateNonExistante
If Mid(TextBoxdate.Value, 1, 2) > 30 Then
GoTo DateNonExistante
End If
'Pour le mois de Février
Case 2
On Error GoTo DateNonExistante 'Permet de gérer les années non bissextiles inférieures à l'année 2000
'Si l'année n'est pas bissextile mais que le jour rentré est 29 alors va à DateNonExistante
If Not Day(DateSerial(Year(TextBoxdate.Value), 3, 1 - 1)) = 29 And Mid(TextBoxdate.Value, 1, 2) = 29 Then
GoTo DateNonExistante
End If
End Select
Else
DateNonExistante:
MsgBox "Veuillez entrer une date valide."
TextBoxdate.Value = ""
End If
End If
End If
End Sub
Et de supprimer celui-ci :
Private Sub TextBoxdate_AfterUpdate()
On Error GoTo messagerreur
TextBoxdate = Format(TextBoxdate, "short date")
Exit Sub
messagerreur:
MsgBox ("le format introduit n'est pas valide")
TextBoxdate = Empty
End Sub
Ton fichier avec modifs :
Bonne soirée,
Baboutz