OVH Cloud OVH Cloud

Convertir des champs int en date

4 réponses
Avatar
Nicolas
Bonjour, je travaille sur une feuille excel avec du code VBA

J'aimerais convertir 3 cellules integer (Jour, mois, année) sur une première
feuille en 1 cellules date sur une deuxième feuille.

Merci

4 réponses

Avatar
X
Bonsoir,

Pas tout comprendre, je présume que tu as posé ta question en sens
inverse

Tu veux mettre une variable date dans 3 cellules integer (2 byte + 1
integer iraient)...

Je ne sais pas en VBa si c'est différent, mais le principe, il doit y
avoir plusieurs possibilités:
dim ladate as string
dim jj as byte
dim mm as byte
dim aaaa as integer
ladate = ma_variable_date
jj = val(mid(ma_variable_date,1,2)) ' jour : JJ/mm/aaaa
mm = val(mid(ma_variable_date,4,2)) ' jour : jj/MM/aaaa
aaaa = val(mid(ma_variable_date,7,4)) ' jour : jj/mm/AAAA


------
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
------------------------------------------------------------------------------------
"Nicolas" a écrit dans le message de
news:
Bonjour, je travaille sur une feuille excel avec du code VBA

J'aimerais convertir 3 cellules integer (Jour, mois, année) sur une
première
feuille en 1 cellules date sur une deuxième feuille.

Merci




Avatar
Fred
dans : news:
Nicolas disait :
Bonjour, je travaille sur une feuille excel avec du code VBA

J'aimerais convertir 3 cellules integer (Jour, mois, année) sur une
première feuille en 1 cellules date sur une deuxième feuille.



Bonjour,

Sans chercher la petite bête, ceci fonctionne (sur un système français)
:

Sub test()
Dim f1 As Worksheet
Dim f2 As Worksheet
Set f1 = ActiveWorkbook.Worksheets("Feuil1")
Set f2 = ActiveWorkbook.Worksheets("Feuil2")
f2.Cells(1, 1) = CDate(f1.Cells(1, 1) & "/" & f1.Cells(1, 2) & "/" &
f1.Cells(1, 3))
End Sub

La cellule cible prend automatiquement le format date.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
FL
Bonjour,

Petite précision, il faut faire attention avec la fonction CDate car, en
fonction des formats de date définis dans l'OS, elle ne renvoie pas toujours
le bon résultat.
Pour ma part, je préfère utiliser la fonction DateSerial. Elle ne laisse pas
d'ambiguité possible entre les jours et les mois.


"Fred" a écrit dans le message de news:

dans : news:
Nicolas disait :
> Bonjour, je travaille sur une feuille excel avec du code VBA
>
> J'aimerais convertir 3 cellules integer (Jour, mois, année) sur une
> première feuille en 1 cellules date sur une deuxième feuille.

Bonjour,

Sans chercher la petite bête, ceci fonctionne (sur un système français)
:

Sub test()
Dim f1 As Worksheet
Dim f2 As Worksheet
Set f1 = ActiveWorkbook.Worksheets("Feuil1")
Set f2 = ActiveWorkbook.Worksheets("Feuil2")
f2.Cells(1, 1) = CDate(f1.Cells(1, 1) & "/" & f1.Cells(1, 2) & "/" &
f1.Cells(1, 3))
End Sub

La cellule cible prend automatiquement le format date.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT



Avatar
Fred
Dans : news:
FL écrit :
Bonjour,



Bonjour,

Petite précision, il faut faire attention avec la fonction CDate car,
en fonction des formats de date définis dans l'OS, elle ne renvoie
pas toujours le bon résultat.
Pour ma part, je préfère utiliser la fonction DateSerial. Elle ne
laisse pas d'ambiguité possible entre les jours et les mois.



Oui, d'où ma précision concernant le système français.
J'avais oublié le DateSerial.
Je corrige ci-dessous la procédure.

Sub test()
Dim f1 As Worksheet
Dim f2 As Worksheet
Set f1 = ActiveWorkbook.Worksheets("Feuil1")
Set f2 = ActiveWorkbook.Worksheets("Feuil2")





f2.Cells(2,1)ÚteSerial(f1.Cells(1,3),f1.Cells(1,2),f1.Cells(1,1))

End Sub






La cellule cible prend automatiquement le format date.





Ça, c'est toujours vrai avec DateSerial

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT