Saisir une date 050711 pour donner automatiquement 05/07/2011

Amilo

XLDnaute Accro
Bonsoir le forum,

Pouvez-vous svp m'aider svp pour une saisie rapide des dates,

En plus de intitulé, vous trouverez davantage d'explications dans le fichier ci-joint.

Merci d'avance aux pros de VBA,

Cordialement
 

Pièces jointes

  • Format date VBA.xls
    35.5 KB · Affichages: 95

bérylion

XLDnaute Occasionnel
Re : Saisir une date 050711 pour donner automatiquement 05/07/2011

Bonsoir le forum,

Pouvez-vous svp m'aider svp pour une saisie rapide des dates,

En plus de intitulé, vous trouverez davantage d'explications dans le fichier ci-joint.

Merci d'avance aux pros de VBA,

Cordialement

Salut

ton bonheur ici :

tu créées un style "MaDate" que tu appliques aux cellules concernées et tu colles ce bout de code dans le module de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Count > 2 Or Target.Style <> "MaDate" Then Exit Sub
Select Case Len(Target.Text)
    Case 6: Target.Value = DateSerial(Mid(Target.Value, 5, 2), Mid(Target.Value, 3, 2), Mid(Target.Value, 1, 2))
    Case 7: Target.Value = DateSerial(Mid(Target.Value, 4, 4), Mid(Target.Value, 2, 2), Mid(Target.Value, 1, 1))
    Case 8: Target.Value = DateSerial(Mid(Target.Value, 5, 4), Mid(Target.Value, 3, 2), Mid(Target.Value, 1, 2))
End Select
End Sub

voir exemple
 

Pièces jointes

  • MaDate.xls
    48 KB · Affichages: 114

Hippolite

XLDnaute Accro
Re : Saisir une date 050711 pour donner automatiquement 05/07/2011

Bonsoir Amilo et Bérylion,
On peut aussi envisager une variante qui contrôle un nombre de chiffres :
Code:
If Target Like "######" Then Target.Value = DateSerial(Mid(Target.Value, 5, 2), Mid(Target.Value, 3, 2), Mid(Target.Value, 1, 2))
A+
 

Amilo

XLDnaute Accro
Re : Saisir une date 050711 pour donner automatiquement 05/07/2011

Bonsoir bérylion,

Merci pour votre réponse et votre solution,

ça fonctionne pas mal mais j'aurais souhaité une saisie à 6 ou 8 caractères de type 050711 ou 05072011 au lieu de 5 comme proposé,

Est-ce qu'il suffit pour cela de modifier certaines valeurs dans votre code ou bien c'est plus compliqué à réaliser ??

Merci encore à vous

Bonne soirée
 

Amilo

XLDnaute Accro
Re : Saisir une date 050711 pour donner automatiquement 05/07/2011

Bonsoir hippolite,

Merci également à vous,

Je vais tester votre solution, par contre je présume qu'il faille l'insérer quelque part dans le code à bérylion...!!!

Je vous donnerai un retour si je bloque

Merci beaucoup
 

Hippolite

XLDnaute Accro
Re : Saisir une date 050711 pour donner automatiquement 05/07/2011

Re,
Variante complète en fonction du post #4 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Count > 2 Or Target.Style <> "MaDate" Then Exit Sub
If Target Like "######" Then Target.Value = DateSerial(Mid(Target.Value, 5, 2), Mid(Target.Value, 3, 2), Mid(Target.Value, 1, 2))
If Target Like "########" Then Target.Value = DateSerial(Mid(Target.Value, 5, 4), Mid(Target.Value, 3, 2), Mid(Target.Value, 1, 2))
End Sub
A+
 
Dernière édition:

Hippolite

XLDnaute Accro
Re : Saisir une date 050711 pour donner automatiquement 05/07/2011

Re,
On peut aussi faire
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Count > 2 Or Target.Style <> "MaDate" Then Exit Sub
If Target Like "######" Then 
	Target.Value = DateSerial(Mid(Target.Value, 5, 2), Mid(Target.Value, 3, 2), Mid(Target.Value, 1, 2))
	exit sub
end if
If Target Like "########" Then
	Target.Value = DateSerial(Mid(Target.Value, 5, 4), Mid(Target.Value, 3, 2), Mid(Target.Value, 1, 2))
	exit sub
end if
Msgbox "Format de date incorrect"
End Sub

On peut compléter la présentation par une MFC avec la fonction ESTDATE.

A+
 
Dernière édition:

Amilo

XLDnaute Accro
Re : Saisir une date 050711 pour donner automatiquement 05/07/2011

Hippolite,

Je n'arrive pas à utiliser vos 2 codes, cela me donne malheureusement aucun résultat,

Dans votre 1er code, j'ai bien espacé le ThenTarget initialement sans espace,

Est ce que le copié/collé du code jouerait des mauvais tours ??

Merci
 

Hippolite

XLDnaute Accro
Re : Saisir une date 050711 pour donner automatiquement 05/07/2011

Re,
Il faut garder le style "Madate" comme demandé par Bérylion et ne garder qu'une seule des macros Private Sub Worksheet_Change
Si ça ne vient pas de là, joins ton fichier.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 508
Membres
103 236
dernier inscrit
Menni