renvoyer fonction dans la meme cellule que la saisie

boudu

XLDnaute Occasionnel
Bonjour au forum
Je dois par faute de place sur la feuille de saisie faire en sorte que la saisie d'une date de naissance renvoie l'âge dans la meme cellule
J'ai trouvé la fonction qui me permet de faire l'operation souhaitée mais la difficulté est que je voudrais que le résultat apparaisse directement dans la cellule de saisie

Merci d'avance de me dire si cela vous semble possible
 

Pièces jointes

  • anneeanniv.xls
    18 KB · Affichages: 68

JNP

XLDnaute Barbatruc
Re : renvoyer fonction dans la meme cellule que la saisie

Bonjour Boudu :),
Uniquement par VBA, mais ça va être destructif, vu que tu vas perdre la date de naissance par la même occasion :rolleyes:...
Bonne suite :cool:
 

boudu

XLDnaute Occasionnel
Re : renvoyer fonction dans la meme cellule que la saisie

Bonjour Patrick, JNP
J'ai bien conscience que c'est destructif mais ça ne me dérange pas
j'ai bien conscience aussi que c'est en vba mais je ne sais pas faire
La fonction doit porter sur les cellules D2 à D10
Merci de m'indiquer la voie
 
Dernière édition:

boudu

XLDnaute Occasionnel
Re : renvoyer fonction dans la meme cellule que la saisie

Re Patrick, JNP, le forum
J'ai bien cette piste mais je n'arrive pas à syntaxer ma formule
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D2:D10")) Is Nothing Then
Application.EnableEvents = False
Target.Value = ????????????
Application.EnableEvents = True
End If
End Sub

Merci de votre aide
 

Luki

XLDnaute Accro
Re : renvoyer fonction dans la meme cellule que la saisie

Bonjour le forum,

Dommage que ce soit destructif car ça implique de ressaisir les dates de naissance lors d'une ouverture ultérieure du fichier pour être à jour....
On pourrait stocker ces dates dans une feuille cachée, dans une autre zone de la feuille ou encore dans des noms....
 

boudu

XLDnaute Occasionnel
Re : renvoyer fonction dans la meme cellule que la saisie

Bonjour Luki
Je n'ai vraiment pas de souci avec cette destruction car le fichier a une durée de vie tres ponctuelles
c'est vraiment juste cette fonction de renvoi année et mois qui me soucie
Merci
 

JNP

XLDnaute Barbatruc
Re : renvoyer fonction dans la meme cellule que la saisie

Re :),
A tester (quelques petites différences de résultat :rolleyes:)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 4 Then Exit Sub
If InStr(1, Target, "mois", vbTextCompare) = 0 And Target <> "" Then
Target = DateDiff("yyyy", Target, Now()) & " ans, " & _
    DateDiff("m", Target, Now()) Mod 12 & " mois"
End If
End Sub
Bonne suite :cool:
 

boudu

XLDnaute Occasionnel
Re : renvoyer fonction dans la meme cellule que la saisie

Re JNP, le forum
Merci pour cette proposition
ça a l'air de le faire
Je vais tester un peu plus pour voir ces differences dont tu parles
De plus, en fait la conversion doit porter sur D12 à D20 dans mon vrai fichier et je dois tester ça aussiparce que toute la colonne n'est pas concernée

Merci encore
 

boudu

XLDnaute Occasionnel
Re : renvoyer fonction dans la meme cellule que la saisie

Re JNP, le forum
Voici le code que j'ai mis sur la feuille concernée:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D12:D20")) Is Nothing Then
Application.EnableEvents = False
Target.Value = DateDiff("yyyy", Target, Now()) & " ans, " & _
DateDiff("m", Target, Now()) Mod 12 & " mois"
Application.EnableEvents = True
End If
End Sub

ça fonctionne mais lorsque je veux supprimer ou modifier la saisie (en cas d'erreur par exemple) excel me met un nombre de mois et d'années qui ne rime à rien ou m'envoie vers le debuggage
Peut-etre quelque chose qui ne va pas avec application.enableEvents???
Merci
 

JNP

XLDnaute Barbatruc
Re : renvoyer fonction dans la meme cellule que la saisie

Re :),
Tu as perdu un bout en route :rolleyes:
Code:
If InStr(1, Target, "mois", vbTextCompare) = 0 And Target <> "" Then
qui vérifie si la cellule n'est ni déjà transformée (avec "mois" dedans), ni vide :p.
Une précaution supplémentaire serait en début de Sub
Code:
If Target.Count > 1 Then Exit Sub
Bonne suite :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 220
Messages
2 086 381
Membres
103 198
dernier inscrit
CACCIATORE