VBA : mettre une textbox au format date : de yyyymmdd a dd-mmm-yyyy ..

BeninBkk

XLDnaute Nouveau
Bonjour le forum,

Débutant Excel et VBA... premier message sur le forum... c'est parti :D

Voila, je récupère une date au format yyyymmdd a la suite d'une requête sur une base de donnée firebird.
Je la stock dans une variable appelle "datefacture" (qui est déclaré as String).

Ensuite je fais afficher cette date dans une textbox mais je n'arrive pas a changer le format de cette textbox (ou de la chaîne de caractères) en dd-mmm-yyyy.

Voici les 2 parties qui concerne ce problème dans le code :

1. la requete (qui fonctionne tres bien.. pas de probleme)
Code:
'Requete pour recuperer les infos client
sSQL_Datacustomer = "SELECT ECCTCODE, ECCTNOM, ECCTRUE1, ECCTRUE2, ECCTCP, ECCTVILLE, ECCTPAYS, ECCTNOMLIV, ECCTRUE1LI, ECCTRUE2LI, ECCTCPLIV, ECCTVILLIV, ECCTPAYSLI, ECCTDERBL, ECCJCRE FROM EEXPCLI WHERE ECKTSOC='999' AND ECCTDERFA='" & NumeroDeFacture & "'"
'Lancement de la requete vers le server (execution)
Rst_Datacustomer.CursorLocation = adUseClient
Rst_Datacustomer.Open sSQL_Datacustomer, Connection_Base, adOpenStatic, adLockOptimistic, adCmdText

numcli = Rst_Datacustomer(0)
nomduclient = Rst_Datacustomer(1)
AddressCli1 = Rst_Datacustomer(2)
AddressCli2 = Rst_Datacustomer(3)
PostalCodeCli = Rst_Datacustomer(4)
CityCli = Rst_Datacustomer(5)
CountryCli = Rst_Datacustomer(6)
NomLiv = Rst_Datacustomer(7)
Adresse1Liv = Rst_Datacustomer(8)
Adresse2Liv = Rst_Datacustomer(9)
CodePostaleLiv = Rst_Datacustomer(10)
VilleLiv = Rst_Datacustomer(11)
CountryLiv = Rst_Datacustomer(12)
NumBL = Rst_Datacustomer(13)
DateFacture = Rst_Datacustomer(14)

Ici je récupère la date dans "DateFacture".. no problem

2. L'ecriture dans la textBox.
Code:
Worksheets("PAGE " & i).Shapes("Date").TextFrame.Characters.Text = DateFacture
pas de probleme non plus.. ca fonctionne..

Maintenant, j'aimerai que cette date soit au format dd-mmm-yyyy plustot que yyyymmdd.. mais je bloque..

Help ...
 

Staple1600

XLDnaute Barbatruc
Re : VBA : mettre une textbox au format date : de yyyymmdd a dd-mmm-yyyy ..

Bonjour et bienvenue sur XLD

Tout bon débutant se doit de faire illico presto: ALT+F11 puis F1 ;)
et là aller voir ce qu'on dit sur: Format

EDITION: allez, je te facilite la tâche ;) (extrait de l'aide VBA ci-dessous)
Format, fonction, exemple
Cet exemple montre diverses utilisations de la fonction Format pour mettre des valeurs au format choisi sur la base de formats nommés ou de formats définis par l'utilisateur.
Pour ce qui concerne le séparateur de date (/), d'heure (:) et le littéral AM/PM, la sortie formatée réellement affichée par votre système dépend des paramètres régionaux avec lesquels le code s'exécute.
Lorsque les heures et les dates sont affichées dans l'environnement de développement, ce sont les formats heure et date raccourcis des paramètres régionaux qui sont utilisés.
Lorsqu'ils s'affichent par exécution du code, les formats heure et date raccourcis utilisés sont ceux des paramètres système, qui peuvent différer des paramètres régionaux.
Pour cet exemple, les paramètres Français-France sont utilisés.
MyTime et MyDate s'affichent dans l'environnement de développement dans les formats heure et date raccourcis définis par le paramétrage actuel du système.

Dim MyTime, MyDate, MyStr
MyTime = #17:04:23#
MyDate = #Janvier 27, 1993#
MyStr = Format(Time, "Heure, complet")' Renvoie l'heure système courante dans le format long défini par le 'système
MyStr = Format(Date, "Date, abrégé")'Renvoie la date système courante dans le format long défini par le 'système.
MyStr = Format(MyTime, "h:m:s")' Renvoie "17:4:23".
MyStr = Format(MyTime, "hh:mm:ss AMPM")' Renvoie "05:04:23 PM".
MyStr = Format(MyDate, "jjjj j mmm yyyy") 'Renvoie "Vendredi 27 janvier '1993"
MyStr = Format(23)' Renvoie "23"
Formats définis par l'utilisateur.
MyStr = Format(5459.4, "##,##0.00") ' Renvoie "5 459,40"
MyStr = Format(334.9, "###0.00") ' Renvoie "334,90".
MyStr = Format(5, "0.00%")' Renvoie "500,00%".
MyStr = Format("BONJOUR", "<") ' Renvoie "bonjour".
MyStr = Format("Et voilà!", ">")' Renvoie "ET VOILÀ!".
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : VBA : mettre une textbox au format date : de yyyymmdd a dd-mmm-yyyy ..

Re

Avec un exemple ce sera plus parlant
Code:
Sub ExemplesFormat()
Dim ALAUBEDECEJOURNAISSANT, X, li$
ALAUBEDECEJOURNAISSANT = Date
X = ALAUBEDECEJOURNAISSANT
li = Format(X, "yyyymmdd") & vbCrLf
li = li & Format(X, "dd-mm-yyyy") & vbCrLf
li = li & "Nous sommes le " & Format(X, "dddd d-mm-yyyy")
MsgBox li, vbInformation + vbOKOnly, "Exemples fonction Format"
End Sub
 

BeninBkk

XLDnaute Nouveau
Re : VBA : mettre une textbox au format date : de yyyymmdd a dd-mmm-yyyy ..

Bonjour JM,

Merci pour la réponse rapide !
En bon débutant, je passe une bonne partie de mon temps dans l'aide. (d'ailleurs l'aide de 2007 est bien complique je trouve...):confused:

Bref, j'ai teste différentes choses pour régler mon problème, qui n'ont pas fonctionne (overflow souvent) et un ami m'a propose de faire comme ceci :

Code:
MyYear = Left(DateFacture, 4) 
MyMonth = Mid(DateFacture, 5, 2)
MyDay = Right(DateFacture, 2)

Worksheets("PAGE " & i).Shapes("Date").TextFrame.Characters.Text = Format(DateSerial(MyYear, MyMonth, MyDay), "DD-MMM-YY")

ca marche nikel !

En tout cas, je te remercie d'avoir pris le temps pour me filer un coup de main..

Bonne journee
Ben
 

Staple1600

XLDnaute Barbatruc
Re : VBA : mettre une textbox au format date : de yyyymmdd a dd-mmm-yyyy ..

Re


Si ta date est autant Date que je suis Géméaux alors tu peux aussi faire ;)
MyYear = Year(DateFacture)
MyMonth =Month(DateFacture)
MyDay = Day(DateFacture)

Autrement si...
VB:
'Si ta date lorgne plutôt du côté du String, tu peux alors faire
Sub test_illustratif()
Dim DateFacture$, MaDate, MaDadaTe
DateFacture = "19/07/2012"
MaDate = Split(DateFacture, "/")
MaDadaTe = Join(MaDate, "/")
MsgBox Year(MaDadaTe) & vbCrLf & Month(MaDadaTe) & vbCrLf & Day(MaDadaTe)
'ou plus simplemnt ;-)
MsgBox StrConv(Format(DateValue(DateFacture), "dddd d mmmm yyyy"), vbProperCase)
'Tu vois comment adapter à ta problématique ?
End Sub
 
Dernière édition:

BeninBkk

XLDnaute Nouveau
Re : VBA : mettre une textbox au format date : de yyyymmdd a dd-mmm-yyyy ..

Salut,

C'est nickel !
Je vais pouvoir adapter ça pour d'autres situations du même genre maintenant ;)

Merci pour ton aide. Désolé si ma question n’était pas très claire.
Avec le temps, je prendrai le temps de tourner mon problème dans tous les sens avant de venir poster un message sur le forum :)

Bonne journée.
Ben
 

Discussions similaires

Réponses
3
Affichages
2 K

Statistiques des forums

Discussions
312 223
Messages
2 086 403
Membres
103 201
dernier inscrit
centrale vet