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

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 !

BeninBkk

XLDnaute Nouveau
Bonjour le forum,

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

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

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
 
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:
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
 
- 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
6
Affichages
157
Retour