XL 2013 Saisir date avec double click

susaita

XLDnaute Occasionnel
bonjour à tous
dans la feuille ci-jointe dans la cellule A1 j'ai une formule qui renvoie une date dont la première lettre est en majuscule =NOMPROPRE(TEXTE("01-06-2016";"mmmm-aaaa"))
ce que je souhaite faire c'est quand je double clique sur la cellule A1 un message s'affiche en me demandant de saisir une nouvelle date et si je mets par exemple 30-09-2016, il remplace 01-06-2016 dans l'ancienne formule par cette nouvelle date

Merci d'avance
 

Pièces jointes

  • doubleclick.xlsx
    8.2 KB · Affichages: 43

job75

XLDnaute Barbatruc
Bonjour susaita,

Je ne vois pas du tout l'intérêt d'avoir une formule en A1 !

Voyez le fichier joint et ces macros :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [A1]) Is Nothing Then Exit Sub
Dim dat$
Cancel = True
Do
  dat = InputBox("Entrez une nouvelle date :", , dat)
  If dat = "" Then Exit Sub
Loop Until IsDate(dat)
Application.EnableEvents = False
[A1] = Application.Proper(Format(dat, "mmmm-yyyy"))
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A1]) Is Nothing Then Exit Sub
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End Sub
La macro Worksheet_Change empêche une modification manuelle de la cellule.

A+
 

Pièces jointes

  • doubleclick(1).xlsm
    20.2 KB · Affichages: 52

job75

XLDnaute Barbatruc
Re,

Il faut noter que la solution précédente permet de créer des mois entre Janvier-0100 et Décembre-9999.

Si l'on veut que le texte en A1 puisse être converti en date dans la feuille de calcul il ne faut pas de mois antérieur à Janvier-1900 (calendrier 1900) ou à Janvier-1904 (calendrier 1904).

Dans ce cas on utilisera cette macro :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [A1]) Is Nothing Then Exit Sub
Dim dat$
Cancel = True
On Error Resume Next
1 dat = InputBox("Entrez une nouvelle date :", , dat)
If dat = "" Then Exit Sub
If CDate(dat) < IIf(ThisWorkbook.Date1904, 1462, 2) Then GoTo 1
Application.EnableEvents = False
[A1] = Application.Proper(Format(dat, "mmmm-yyyy"))
Application.EnableEvents = True
End Sub
Fichier (2).

A+
 

Pièces jointes

  • doubleclick(2).xlsm
    20.9 KB · Affichages: 44

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 453
Membres
103 546
dernier inscrit
mohamed tano