XL 2019 saisie de date dans une listbox

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

micpid62

XLDnaute Occasionnel
bonsoir à tous
Je vous expose mon problème : je suis en charge de la gestion d'un cimetière (pas gaie mais intéressant) dont j'ai une base de donnée pour gérer les emplacements.
Pour cela j'ai une formulaire(FrmSaisie) pour géré l'ajout de concessions et une autre (Database) pour modifier ou supprimer.
Dans ma base(source) je fait le calcul de la durée de concession(date de début et date de fin)
Lorsque que je saisie à l'aide du formulaire (FrmSaisie) le calcule se fait correctement mais lorsque je veux modifier la date de début j'obtiens dans la cellule date de fin le résultat TEXTE
Je ne sais pas si je me suis bien expliqué mais je joint le fichier pour plus de compréhension
D'avance je vous remercie pour votre aide
MP
 

Pièces jointes

Bonjour,
après avoir traiter la date ... tu n'as pas traiter la durée => tu la remets dans ton tableau mais sous forme de texte. alors que tu a besoin d'un numérique pour la formule de calcul de ta date de fin.

---

1660896942432.png


---

1660897042561.png

---

1660897180490.png


C'est ta fonction DateFin qui te met "texte" au lieu de tenter de modifier la chaine de caractère en un chiffre pour faire le calcul.

Je crois que c'est la cause 🙂
 
Je vous recommanderai de réécrire comme ça votre fonction :
VB:
Option Explicit
Function DateFin(ByVal DtDéb, ByVal Durée)
   Dim TSp() As String
   If TypeOf DtDéb Is Range Then DtDéb = DtDéb.Value
   If TypeOf Durée Is Range Then Durée = Durée.Value
   If VarType(Durée) = vbString Then
      If IsNumeric(Durée) Then Durée = CDbl(Durée)
      End If
   If VarType(Durée) = vbDouble Then
      If VarType(DtDéb) = vbDate Then
         DateFin = DateSerial(Year(DtDéb) + Durée, Month(DtDéb), Day(DtDéb))
      ElseIf DtDéb Like "*/*/*" Then
         TSp = Split(DtDéb, "/")
         TSp(2) = TSp(2) + Durée
         DateFin = Join(TSp, "/")
         If TSp(2) >= 1900 Then DateFin = CDate(DateFin)
      Else
         DateFin = CVErr(xlErrValue)
         End If
   Else
      DateFin = "Perpétuité"
      End If
   End Function
 
Par ailleurs je propose d'habitude une solution avec un seul UserForm de consultation et mise à jour basé sur le modèle joint.
Quelles seraient les infos d'identification et/ou de recherche, dans l'hypothèse ou chacune devrait être saisie dans une ComboBox ? Je l'adapterai peut être pour votre besoin …
 

Pièces jointes

En attendant sa réponse ...
pour la modif => son champ de recherche vérifie dans la colonne "Recherches" où il a concaténé toutes les données de la ligne ... => recherche full texte 🙂
et ensuite il double clique sur la ligne qu'il veut modifier parmi les résultats qui correspondent à la recherche.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
16
Affichages
832
Réponses
14
Affichages
836
Réponses
1
Affichages
237
Retour