Bonjour à tous,
J'ai bien fouillé le forum avant de m'inscrire et poster ma demande.
Je souhaite faciliter la saisie de données dans plusieurs colonnes.
Colonne E et G : l'utilisateur n'a pas à saisir les slash pour les dates (format jj/mm/aaaa)
Colonne F et H : l'utilisateur n'a pas à saisir les " : " pour les heures (format souhaité hh:mm)
J'ai trouvé les codes qui font le travail, seulement impossible en les triturant de les faire fonctionner tous les deux sur la même feuille, séparément ils fonctionnent.
Je vous remercie par avance.
Cordialement.
Le code : (je n'ai pas trouvé de menu permettant de le mettre plus en forme pour le forum :s)
J'ai bien fouillé le forum avant de m'inscrire et poster ma demande.
Je souhaite faciliter la saisie de données dans plusieurs colonnes.
Colonne E et G : l'utilisateur n'a pas à saisir les slash pour les dates (format jj/mm/aaaa)
Colonne F et H : l'utilisateur n'a pas à saisir les " : " pour les heures (format souhaité hh:mm)
J'ai trouvé les codes qui font le travail, seulement impossible en les triturant de les faire fonctionner tous les deux sur la même feuille, séparément ils fonctionnent.
Je vous remercie par avance.
Cordialement.
Le code : (je n'ai pas trouvé de menu permettant de le mettre plus en forme pour le forum :s)
- Option Explicit
- Private Sub Worksheet_Change(ByVal Target As Excel.Range)
- Dim DateStr As String
- 'On Error GoTo EndMacro
- 'On Error GoTo HeureMauvaise
- If Target.Cells.Count > 1 Then Exit Sub
- If Target.Value = "" Then Exit Sub
- If Application.Intersect(Target, Union(Range("E7:E100"), Range("G7:G100"))) Is Nothing Then
- Application.EnableEvents = False
- Target.NumberFormat = "General"
- If Target.HasFormula = False Then
- Select Case Len(Target.Formula)
- Case 5
- DateStr = Left(Target.Formula, 1) & "/" & Mid(Target.Formula, 2, 2) & "/" & Right(Target.Formula, 2)
- Case 6
- DateStr = Left(Target.Formula, 2) & "/" & Mid(Target.Formula, 3, 2) & "/" & Right(Target.Formula, 2)
- Case Else
- Err.Raise 0
- End Select
- Target.Formula = DateValue(DateStr)
- Target.NumberFormat = "dd/mm/yyyy"
- End If
- Application.EnableEvents = True
- End If
- If Not Intersect(Target, Union(Range("F7:F100"), Range("H7:H100"))) Is Nothing Then
- Application.EnableEvents = False
- Select Case Len(Target)
- Case 1, 2
- Target = CDate("0:" & Target)
- Target.NumberFormat = "hh:mm;@"
- Case 3
- Target = CDate(Left(Target, 1) & ":" & Mid(Target, 2))
- Target.NumberFormat = "hh:mm;@"
- Case 4
- Target = CDate(Left(Target, 2) & ":" & Mid(Target, 3))
- Target.NumberFormat = "hh:mm;@"
- End Select
- Application.EnableEvents = True
- End If
- End Sub
- 'EndMacro:
- 'Target.ClearContents
- 'Target.Select
- 'MsgBox "En " & Replace(Target.Address, "$", "") & ", il faut saisir une date valide" & Chr(10) & Chr(10) & " avec un format: jmmaa ou jjmmaa"
- 'Application.EnableEvents = True
- 'HeureMauvaise:
- 'Target.ClearContents
- 'Target.Select
- 'MsgBox "En " & Replace(Target.Address, "$", "") & ", il faut saisir une heure valide" & Chr(10) & Chr(10) & " avec un format: hhmm"
- 'Application.EnableEvents = True