Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA - le format d'une date 01/12/2005 pour garder 01

16 réponses
Avatar
twinley
Bonjour,


Je cherche en VBA le format d'une date 01/12/2005 pour garder uniquement à
l'affichage le jour 01.
Avec ce qui suit, ça passe pas, la date est modifiée

NDD = 3
Sheets(1).Cells(2, NDD) = CDate(DateSerial(2005, 12, 01))
Sheets(1).Cells(2, NDD) = Sheets(1).Cells(2, NDD).Format(Cells(2, NDD),
"dd")

alors que l'enregistreur donne :
Range("C2").Select
Selection.NumberFormat = "dd"

mais j'aimerai éviter le select. Il y a un défaut sur la paire cells et
format ?

Merci pour l'aide

a+twinley

10 réponses

1 2
Avatar
michdenis
la fonction "Format" n'existe qu'en VBA .... elle ne peut appliquer un format aux cellules de la feuille de calcul. Pour
ce faire tu dois utiliser la méthode "NumberFormat" ou "NumberFormatLocal" de l'objet "Range" (cells). Tu obtiendras une
ligne de code semblable à celle-ci :

Range("A1").NumberFormat = "DD" 'Anglais
Range("A1").Value = CDate(DateSerial(2005, 12, 01))


OU

Range("A1").NumberFormatLocal = "JJ" 'Français ( paramètre linguistique tu système d'exploitation.)
Range("A1").Value = CDate(DateSerial(2005, 12, 01))



Salutations!




"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:
Bonjour,


Je cherche en VBA le format d'une date 01/12/2005 pour garder uniquement à
l'affichage le jour 01.
Avec ce qui suit, ça passe pas, la date est modifiée

NDD = 3
Sheets(1).Cells(2, NDD) = CDate(DateSerial(2005, 12, 01))
Sheets(1).Cells(2, NDD) = Sheets(1).Cells(2, NDD).Format(Cells(2, NDD),
"dd")

alors que l'enregistreur donne :
Range("C2").Select
Selection.NumberFormat = "dd"

mais j'aimerai éviter le select. Il y a un défaut sur la paire cells et
format ?

Merci pour l'aide

a+twinley
Avatar
Jean-Claude
Sa lut,
Mettre la cellule concernée au format Texte
Puis utiliser le code suivant


NDD = 3
Sheets(1).Cells(2, NDD) = Format(CDate(DateSerial(2005, 12, 1)), "dd")

A+
Jc
Avatar
twinley
Ouf, sauvé

merci à vous deux

--
à+twinley
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de
news:
Bonjour,


Je cherche en VBA le format d'une date 01/12/2005 pour garder uniquement à
l'affichage le jour 01.
Avec ce qui suit, ça passe pas, la date est modifiée

NDD = 3
Sheets(1).Cells(2, NDD) = CDate(DateSerial(2005, 12, 01))
Sheets(1).Cells(2, NDD) = Sheets(1).Cells(2, NDD).Format(Cells(2, NDD),
"dd")

alors que l'enregistreur donne :
Range("C2").Select
Selection.NumberFormat = "dd"

mais j'aimerai éviter le select. Il y a un défaut sur la paire cells et
format ?

Merci pour l'aide

a+twinley




Avatar
michdenis
Bonjour Jean-Claude,

Sheets(1).Cells(2, NDD) = Format(CDate(DateSerial(2005, 12, 1)), "dd")

Si juste à voir, on voit bien que la cellule affiche 1 , n'oublie pas que la cellule est au format "Standard" et non à
un format personnalisé "date" et la résultante est si tu fais référence à cette cellule dans une autre formule comme
ceci = Mois(A1) , je te laisse découvrir le résultat que tu obtiendras et cela ne devrait pas être 12.

;-)


Salutations!



"Jean-Claude" a écrit dans le message de news:
Sa lut,
Mettre la cellule concernée au format Texte
Puis utiliser le code suivant


NDD = 3
Sheets(1).Cells(2, NDD) = Format(CDate(DateSerial(2005, 12, 1)), "dd")

A+
Jc
Avatar
twinley
exact michdenis, le passage du format standard au format date me fais
basculer en 1900. Cela donne un calendrier juste à l'affichage mais on ne
peux pas faire de calcul de date vraie sauf si on la reconstruit depuis le
texte.
Belle leçon, merci
C'est quand même un casse-tête ces dates.
--
à+twinley
"michdenis" a écrit dans le message de
news:
Bonjour Jean-Claude,

Sheets(1).Cells(2, NDD) = Format(CDate(DateSerial(2005, 12, 1)), "dd")

Si juste à voir, on voit bien que la cellule affiche 1 , n'oublie pas que
la cellule est au format "Standard" et non à

un format personnalisé "date" et la résultante est si tu fais référence à
cette cellule dans une autre formule comme

ceci = Mois(A1) , je te laisse découvrir le résultat que tu obtiendras et
cela ne devrait pas être 12.


;-)


Salutations!



"Jean-Claude" a écrit dans le message de news:


Sa lut,
Mettre la cellule concernée au format Texte
Puis utiliser le code suivant


NDD = 3
Sheets(1).Cells(2, NDD) = Format(CDate(DateSerial(2005, 12, 1)), "dd")

A+
Jc





Avatar
Frédéric Sigonneau
Bonjour,

Autre approche possible :

Sub test()
NDD = 3
Sheets(1).Cells(2, NDD) = Day(DateSerial(2005, 12, 1))
Sheets(1).Cells(2, NDD).NumberFormat = "00"
End Sub

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Bonjour,


Je cherche en VBA le format d'une date 01/12/2005 pour garder uniquement à
l'affichage le jour 01.
Avec ce qui suit, ça passe pas, la date est modifiée

NDD = 3
Sheets(1).Cells(2, NDD) = CDate(DateSerial(2005, 12, 01))
Sheets(1).Cells(2, NDD) = Sheets(1).Cells(2, NDD).Format(Cells(2, NDD),
"dd")

alors que l'enregistreur donne :
Range("C2").Select
Selection.NumberFormat = "dd"

mais j'aimerai éviter le select. Il y a un défaut sur la paire cells et
format ?

Merci pour l'aide

a+twinley




Avatar
twinley
choli....
Merci Frédéric Sigonneau
--
à+twinley
"Frédéric Sigonneau" a écrit dans le message de
news:%
Bonjour,

Autre approche possible :

Sub test()
NDD = 3
Sheets(1).Cells(2, NDD) = Day(DateSerial(2005, 12, 1))
Sheets(1).Cells(2, NDD).NumberFormat = "00"
End Sub

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Bonjour,


Je cherche en VBA le format d'une date 01/12/2005 pour garder uniquement
à


l'affichage le jour 01.
Avec ce qui suit, ça passe pas, la date est modifiée

NDD = 3
Sheets(1).Cells(2, NDD) = CDate(DateSerial(2005, 12, 01))
Sheets(1).Cells(2, NDD) = Sheets(1).Cells(2, NDD).Format(Cells(2, NDD),
"dd")

alors que l'enregistreur donne :
Range("C2").Select
Selection.NumberFormat = "dd"

mais j'aimerai éviter le select. Il y a un défaut sur la paire cells et
format ?

Merci pour l'aide

a+twinley






Avatar
michdenis
Sheets(1).Cells(2, NDD) = Day(DateSerial(2005, 12, 1))
Sheets(1).Cells(2, NDD).NumberFormat = "00"


Et oui, elle a cependant le même défaut que l'approche à Jean-Claude ....


Salutations!





"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news: OiU$
choli....
Merci Frédéric Sigonneau
--
à+twinley
"Frédéric Sigonneau" a écrit dans le message de
news:%
Bonjour,

Autre approche possible :

Sub test()
NDD = 3
Sheets(1).Cells(2, NDD) = Day(DateSerial(2005, 12, 1))
Sheets(1).Cells(2, NDD).NumberFormat = "00"
End Sub

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Bonjour,


Je cherche en VBA le format d'une date 01/12/2005 pour garder uniquement
à


l'affichage le jour 01.
Avec ce qui suit, ça passe pas, la date est modifiée

NDD = 3
Sheets(1).Cells(2, NDD) = CDate(DateSerial(2005, 12, 01))
Sheets(1).Cells(2, NDD) = Sheets(1).Cells(2, NDD).Format(Cells(2, NDD),
"dd")

alors que l'enregistreur donne :
Range("C2").Select
Selection.NumberFormat = "dd"

mais j'aimerai éviter le select. Il y a un défaut sur la paire cells et
format ?

Merci pour l'aide

a+twinley






Avatar
michdenis
Si tu utilises ceci :

Sheets(1).Cells(2, NDD) = Format(CDate(DateSerial(2005, 12, 1)), "dd")

la cellule affichera : 01 .. et son contenu ne sera pas directement disponible pour usage de d'autre formule ....!

Cependant, si tu vas modifier son format : Barre des menus / format / cellules / En format date, tu t'apercevras qu'elle
contient bien la date insérée mais que son format "Standard" t'empêche de l'utiliser dans une autre formule comme =
Mois(a1)

D'où mon affirmation du début... la fonction "Format" en vba ne s'applique pas si on désire appliquer une format à une
cellule !

Au même titre que si tu fais cela :
Range("B5") = Format(1250.25, "# ##0.00 $")

La cellule sera au format standard, affichera le "bon format" mais la saisie sera à gauche de la cellule car perçu comme
du texte et non une valeur numérique.


Salutations!



"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news: %
exact michdenis, le passage du format standard au format date me fais
basculer en 1900. Cela donne un calendrier juste à l'affichage mais on ne
peux pas faire de calcul de date vraie sauf si on la reconstruit depuis le
texte.
Belle leçon, merci
C'est quand même un casse-tête ces dates.
--
à+twinley
"michdenis" a écrit dans le message de
news:
Bonjour Jean-Claude,

Sheets(1).Cells(2, NDD) = Format(CDate(DateSerial(2005, 12, 1)), "dd")

Si juste à voir, on voit bien que la cellule affiche 1 , n'oublie pas que
la cellule est au format "Standard" et non à

un format personnalisé "date" et la résultante est si tu fais référence à
cette cellule dans une autre formule comme

ceci = Mois(A1) , je te laisse découvrir le résultat que tu obtiendras et
cela ne devrait pas être 12.


;-)


Salutations!



"Jean-Claude" a écrit dans le message de news:


Sa lut,
Mettre la cellule concernée au format Texte
Puis utiliser le code suivant


NDD = 3
Sheets(1).Cells(2, NDD) = Format(CDate(DateSerial(2005, 12, 1)), "dd")

A+
Jc





Avatar
Daniel.M
Salut Denis,

Range("A1").NumberFormat = "DD" 'Anglais
Range("A1").Value = CDate(DateSerial(2005, 12, 01))


Je crois que DateSerial() suffit.

Range("A1").NumberFormat = "DD" 'Anglais
Range("A1").Value = DateSerial(2005, 12, 01)

Salutations,

Daniel M.

1 2