Bonjour ,
Voici donc un exemple
pour voir le code : Clic Droit sur l'onglet feuil1, puis visualiser le code
Ici donc , le format est surveillé à l'intérieur de la grille,
Si s/o alors devient S/O , le format cellule est forcé en mode texte
Si date 1/1/11 devient 01/01/2011, le format cellule est forcé en mode date
si autre chose alors message donnant la consigne de saisie et force en saisie la date du jour
voilà, après l'on peut toujours adapter mais le principe est là
voilà , c'est tout pour le moment
Pour pouvoir réagir en temps réél par rapport au saisie clavier, on utilise l'évenementiel de la feuil1 se déclenchant lorsqu'un changement est détecté dans la feuille.
Voici le code
Private Sub Worksheet_Change(ByVal Target As Range)
Dim inter As Variant
'passage uniquement si une cellule est sélectionnée
If Target.Count = 1 Then
'Là, prise en compte des lignes 3 à 26
If Target.Row > 2 And Target.Row < 27 Then
'Là on ne prendra en compte que les colonnes B, C et D
If InStr(1, "2,3,4", Target.Column) > 0 Then
'Mémorise la valeur avant transformation du type de cellule
inter = Target.Text
'Si date détectée
If IsDate(Target.Text) Then
Target.NumberFormat = "dd/mm/yyyy"
Target = inter
'Texte ="S/O" détecté
ElseIf UCase(Target.Text) = "S/O" Then
Target.NumberFormat = "@"
Target = UCase(inter)
'Valeur NC alors message
Else
MsgBox "Valeurs autorisées : Date sous format : jj/mm/aaaa ou annotation S/O"
Target.NumberFormat = "dd/mm/yyyy"
Target = Date
End If
End If
End If
End If
End Sub
et voici le fichier , en excel2003Fr