Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Format date dans un Userform

bouldi59

XLDnaute Nouveau
Bonjour à tous,

Je me suis initié au VBA il y a quelques jours pour créer une application destinée à mon job.
J'ai pu d'ailleurs avancer plutôt rapidement grâce aux nombreuses astuces que j'ai trouvé sur ce forum. Merci.

Par contre là je bloque ..lol

J'ai un userform qui comportent des textboxs allant rechercher des valeurs dans une feuille Excel en fonction d'un champ saisie via un Vlookup.
Jusqu'ici tout va bien. ça marche
Le problème vient d'un champ date que le formulaire récupère (champ date Facture dans le formulaire ci-dessous). L'importation fonctionne mais le format s'importe en nombre et non en Date (alors qu'il est bien en date dans l'Excel)

Voici la ligne de code :
.
ZT_DATEFACT = Application.WorksheetFunction.VLookup(CStr(Me.Box_BL), Sheets("FICLIV").Range("base"), 37, 0)

Voici le Form :



Si vous pouvez m'aiguiller , merci d'avance !!
 
Solution
re
bonjour
la première chose à apprendre avec les dates et excel c'est que les dates dans les cellules sont des numéros de serie des dates et non ce que tu vois
il te faut donc convertir
VB:
.ZT_DATEFACT = cdate(Application.WorksheetFunction.VLookup(CStr(Me.Box_BL), Sheets("FICLIV").Range("base"), 37, 0))

bouldi59

XLDnaute Nouveau
Merci pour ton retour Dudu2

J'avais bien trouvé cette fonction mais je ne vois pas où la positionner.
Par rapport à ta réponse , je l'ai testé en début de ligne (Le nom de champ qui reprend la date est "ZT_DATEFACT") mais ça ne marche pas non plus

Ci dessous macro complète


Merci
 

Pièces jointes

  • 1695122163403.png
    56.7 KB · Affichages: 8

patricktoulon

XLDnaute Barbatruc
re
bonjour
la première chose à apprendre avec les dates et excel c'est que les dates dans les cellules sont des numéros de serie des dates et non ce que tu vois
il te faut donc convertir
VB:
.ZT_DATEFACT = cdate(Application.WorksheetFunction.VLookup(CStr(Me.Box_BL), Sheets("FICLIV").Range("base"), 37, 0))
 

patricktoulon

XLDnaute Barbatruc
Bonjour,
Si la valeur est correct dans excel je t'invite à utiliser la propriété texte de l'objet range
Bonjour robert
textboxX.value=cells(x).text te donnera la date tel qu'elle est formatée dans la cellule)
ou
textboxX.value=cdate(cells(x).value) te donnera la date dans toute les circonstances a partir du moment ou la valeur texte ou numérique est valide

alors étonnamment dans excel en FR ;
c'est la date FR qui est reconnue dans le minimales(- de 12/- de 12/année)
par exemple
le 01/05/2023 avec cdate sera reconnue comme le premier mai 2023
par contre si je fait 25/05/2023 ou 05/25/2023 cdate me sortira toujours 25/05/2023
alors je ne sais pas si c'est le patch FR ou si les américain auraient eu envie(pour une fois que ce n'est l'inverse) de nous copier
 

patricktoulon

XLDnaute Barbatruc
re
je m'explique autrement
en A1 j'ai "05/09/2023" que ce soit en texte réel ou le format de cette date (45174)(quel qu'il soit)
cdate([A1].value te donnera ta date
d'ailleurs il est conseillée de ne pas utiliser le format texte car entre une version FR et US le mois/jour seraient inversé automatiquement dans les minimales (- de 12)
voila voila
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…