OVH Cloud OVH Cloud

Modifier un format dans macro

12 réponses
Avatar
DC
Bonsoir à Tous,

Dans une macro, qui me met la date du Jour, j'aimerais changer le format de
la date.

Pour éviter des explications trop compliquées, je vais indiquer en premier
la dite macro et ensuite une macro ou le format en question existe déja,
--------------------------------------------------
ActiveCell.Offset(0, 0).Range("A1").Select
Selection.NumberFormat = "d mmmm yyyy"
With Selection.Font
.Name = "Times New Roman"
.FontStyle = "Normal"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = Date
Calculate
ActiveCell.Offset(6, -5).Range("A1").Select
End With
End Sub
--------------------------------------------------------
Private Sub Worksheet_Change(ByVal zz As Range)
Dim MaDate As String

If zz.Column <> 12 Then Exit Sub
Application.EnableEvents = False
MaDate = Application.Proper(Format(Date, "dd mmmm yyyy"))
zz(1, 3).FormulaLocal = "=NOMPROPRE(""" & MaDate & """)"
Application.EnableEvents = True

End Sub
---------------------------------------------------------
Salutations.!.........Merci d'avance...........DC

2 réponses

1 2
Avatar
DC
Bonjour à Tous................Bonjour michdenis,

Difficile à cerner!.......( c'est vrais que je complique tout )

je voudrais simplement dans la cellule K9, y mettre le curseur et en
éxécutant une macro, avoir la date du jour qui s'inscrive sous cette forme :
30 Août 2005, c'est tout!

Salutations!.......Toutes mes excuses............Merci!

DC


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

Ce que tu veux est difficile à cerner :

Cette macro va insérer la "date du jour" sur toute la plage de données. Si
tu veux autre chose, tu n'as qu'à renseigner cette
variable comme il te convient :

MaDate = Format(date, "dd mmmm yyyy") ou le format de ton choix

'--------------------------------
Dim MaDate as string
Dim rg As Range
With Worksheets("Feuil1")
Set rg = .Range("D1:D" & .Range("D65536").End(xlUp).Row)
End With
MaDate = Format(date, "dd mmmm yyyy") ou le format de ton choix.
For Each c In rg
c.FormulaLocal = "=NOMPROPRE(""" & MaDate & """)"
End If
Next
'--------------------------------



Salutations!





"DC" a écrit dans le message de news:
43133b00$0$27410$
Bonsoir à Tous...........Bonsoir michdenis,

C'est presque ça!

La partie concernant le format doit bien fonctionner, par contre c'est la
mise à la date du jour qui ne fonctionne pas,

Je m'explique : si dans la cellule, j'ai déjà une ancienne date, le format
qui était 12 janvier 2005 devient 12 Janvier 2005, la majuscule du mois
apparait, par contre la date ne change pas

Et si la cellule est vierge, j'ai l'impression que rien ne se passe à
l'éxécution de la macro

Salutations!........j'ai le sentiment d'abuser........Merci!

DC


"michdenis" a écrit dans le message de news:
%
Bonjour DC,

Pour un format particulier, tu as la réponse dans le premier message que
je te faisais, il y a de ça quelques jours :

'---------------------------
Dim MaDate as string
Dim rg As Range
With Worksheets("Feuil1")
Set rg = .Range("D1:D" & .Range("D65536").End(xlUp).Row)
End With
For Each c In rg
If IsDate(c) Then
MaDate = Format(C, "dd mmmm yyyy") ou le format de ton choix.
c.FormulaLocal = "=NOMPROPRE(""" & MaDate & """)"
End If
Next
'---------------------------


Salutations!







"DC" a écrit dans le message de news:
4312ba42$0$17210$
Bonjour à Tous.................Bonjour michdenis,

Sans modifier la ligne j'obtient : 29 août 2005

En modifiant la ligne j'obtient : 29/08/05

Salutations!...........Merci d'avance..........DC


"michdenis" a écrit dans le message de news:
%23mjJLp$
Bonjour DC,

Tu modifies cette ligne : c.Value = CDate(c)

Par

c.FormulaLocal = "=NOMPROPRE(""" & CDate(c) & """)"


Salutations!



"DC" a écrit dans le message de news:
4311ed8e$0$17203$
Bonsoir à Tous.............Bonsoir michdenis,

Ta macro fonctionne très bien, juste un mot sur la fonction NOMPROPRE(),
c'est AV qui me la introduite dans une autre macro et ça permet de
mettre
une majuscule au nom du mois : 27 Août 2005 et çà fonctionne
parfaitement.

Aussi je ne sais pas si c'est possible dans le cas présent, car jobtient
:
27 août 2005 et ça fonctionne aussi parfaitement, mais la différence
c'est
le "A" masjuscule.

Bien sûr on peux s'en passer, mais impossible n'est pas une bonne
devise,
n'est-ce pas!....Bon j'ai encore dû mal m'exprimer, mais c'est vrai que
ce
n'est pas forcément facile non plus.................!

Salutations!.............Merci d'avance............DC


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

Bonjour DC,

Je pensais que ta préoccupation était d'avoir une variable en vba
contenant une date dans un format particulier.

Si ta question était : Comment modifier le format des dates de cellules
contenant ceci :
=NOMPROPRE("12 septembre 2005")

A ) La date est entrée dans la cellule comme une chaîne de caractère.
Observe les guillemets qui l'entourent. La fonction
NOMPROPRE() ajoute une majuscule à chaque mot de la chaîne. Aucun
formatage issu de la commande format / cellules n'aura d'effet sur
ce que retourne la cellule.

B ) Pour pouvoir transformer le contenu de tes cellules en vrai date,
tu
peux utiliser ceci en adaptant le nom de la feuille et ta
plage de cellules.

Dim rg As Range
With Worksheets("Feuil1")
Set rg = .Range("D1:D" & .Range("D65536").End(xlUp).Row)
End With
For Each c In rg
If IsDate(c) Then
'Si tu veux afficher un format particulier
c.numberformat = "dd mmm yy"
c.Value = CDate(c)
End If
Next


Salutations!




"DC" a écrit dans le message de news:
431186f8$0$27421$
Bonjour à Tous..............Bonjour michdenis,

Jai beau insister, rien ni fait! c'est vrai que le fait de ne pas
savoir
faire, ne peut pas être remplacé par du "peut-ètre que";
..........Enfin
bon!.................

J'espére que quelqu'un me trouvera une solution.........?

Salutation!.............Merci d'avance...........DC


"DC" a écrit dans le message de news:
4310b4c2$0$27419$
Bonsoir à Tous...........Bonsoir michdenis,

Je suis navré de te le dire, mais je suis vraiment incapable de
construire
ce que tu me propose,

Peut-être que toi, si tu le veux bien, tu pourrais me le construire,
( A
toi de voir.!......)

Salutation.!..........Merci d'avance...........DC


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

Bonjour DC,

Si tu définis le type de ta variable "As Date" , peu importe le
format
que tu utiliseras avec la fonction "Format", le format
retourné sera toujours celui définit par défaut dans le panneau de
configuration de Windows

Utilise le Type String

Dim MaDate as String

MaDate = Format(Date, "dd mmmm yyyy") ou le format de ton choix.

Et si tu veux transformer MaDate en "vrai" date

Myvar = cdate(Madate)


Salutations!



"DC" a écrit dans le message de news:
43109a85$0$1717$
Bonsoir à Tous,

Dans une macro, qui me met la date du Jour, j'aimerais changer le
format
de
la date.

Pour éviter des explications trop compliquées, je vais indiquer en
premier
la dite macro et ensuite une macro ou le format en question existe
déja,
--------------------------------------------------
ActiveCell.Offset(0, 0).Range("A1").Select
Selection.NumberFormat = "d mmmm yyyy"
With Selection.Font
.Name = "Times New Roman"
.FontStyle = "Normal"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = Date
Calculate
ActiveCell.Offset(6, -5).Range("A1").Select
End With
End Sub
--------------------------------------------------------
Private Sub Worksheet_Change(ByVal zz As Range)
Dim MaDate As String

If zz.Column <> 12 Then Exit Sub
Application.EnableEvents = False
MaDate = Application.Proper(Format(Date, "dd mmmm yyyy"))
zz(1, 3).FormulaLocal = "=NOMPROPRE(""" & MaDate & """)"
Application.EnableEvents = True

End Sub
---------------------------------------------------------
Salutations.!.........Merci d'avance...........DC































Avatar
Ange Ounis
Code à copier/coller dans le module de la feuille où se trouve la cellule K9 qui
t'intéresse (clic droit sur l'onglet puis Visualiser le code) :

''''''''''''''''
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address(0, 0) = "K9" Then
With Target
.FormulaLocal = _
"=nompropre(texte(""" & Date & """;""jj mmmm aaaa""))"
.Value = .Value
End With
End If
End Sub
''''''''''''''''

----------
Ange Ounis
----------

Bonjour à Tous................Bonjour michdenis,

Difficile à cerner!.......( c'est vrais que je complique tout )

je voudrais simplement dans la cellule K9, y mettre le curseur et en
éxécutant une macro, avoir la date du jour qui s'inscrive sous cette forme :
30 Août 2005, c'est tout!

Salutations!.......Toutes mes excuses............Merci!

DC


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


Ce que tu veux est difficile à cerner :

Cette macro va insérer la "date du jour" sur toute la plage de données. Si
tu veux autre chose, tu n'as qu'à renseigner cette
variable comme il te convient :

MaDate = Format(date, "dd mmmm yyyy") ou le format de ton choix

'--------------------------------
Dim MaDate as string
Dim rg As Range
With Worksheets("Feuil1")
Set rg = .Range("D1:D" & .Range("D65536").End(xlUp).Row)
End With
MaDate = Format(date, "dd mmmm yyyy") ou le format de ton choix.
For Each c In rg
c.FormulaLocal = "=NOMPROPRE(""" & MaDate & """)"
End If
Next
'--------------------------------



Salutations!





"DC" a écrit dans le message de news:
43133b00$0$27410$
Bonsoir à Tous...........Bonsoir michdenis,

C'est presque ça!

La partie concernant le format doit bien fonctionner, par contre c'est la
mise à la date du jour qui ne fonctionne pas,

Je m'explique : si dans la cellule, j'ai déjà une ancienne date, le format
qui était 12 janvier 2005 devient 12 Janvier 2005, la majuscule du mois
apparait, par contre la date ne change pas

Et si la cellule est vierge, j'ai l'impression que rien ne se passe à
l'éxécution de la macro

Salutations!........j'ai le sentiment d'abuser........Merci!

DC


"michdenis" a écrit dans le message de news:
%

Bonjour DC,

Pour un format particulier, tu as la réponse dans le premier message que
je te faisais, il y a de ça quelques jours :

'---------------------------
Dim MaDate as string
Dim rg As Range
With Worksheets("Feuil1")
Set rg = .Range("D1:D" & .Range("D65536").End(xlUp).Row)
End With
For Each c In rg
If IsDate(c) Then
MaDate = Format(C, "dd mmmm yyyy") ou le format de ton choix.
c.FormulaLocal = "=NOMPROPRE(""" & MaDate & """)"
End If
Next
'---------------------------


Salutations!







"DC" a écrit dans le message de news:
4312ba42$0$17210$
Bonjour à Tous.................Bonjour michdenis,

Sans modifier la ligne j'obtient : 29 août 2005

En modifiant la ligne j'obtient : 29/08/05

Salutations!...........Merci d'avance..........DC


"michdenis" a écrit dans le message de news:
%23mjJLp$

Bonjour DC,

Tu modifies cette ligne : c.Value = CDate(c)

Par

c.FormulaLocal = "=NOMPROPRE(""" & CDate(c) & """)"


Salutations!



"DC" a écrit dans le message de news:
4311ed8e$0$17203$
Bonsoir à Tous.............Bonsoir michdenis,

Ta macro fonctionne très bien, juste un mot sur la fonction NOMPROPRE(),
c'est AV qui me la introduite dans une autre macro et ça permet de
mettre
une majuscule au nom du mois : 27 Août 2005 et çà fonctionne
parfaitement.

Aussi je ne sais pas si c'est possible dans le cas présent, car jobtient
:
27 août 2005 et ça fonctionne aussi parfaitement, mais la différence
c'est
le "A" masjuscule.

Bien sûr on peux s'en passer, mais impossible n'est pas une bonne
devise,
n'est-ce pas!....Bon j'ai encore dû mal m'exprimer, mais c'est vrai que
ce
n'est pas forcément facile non plus.................!

Salutations!.............Merci d'avance............DC


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


Bonjour DC,

Je pensais que ta préoccupation était d'avoir une variable en vba
contenant une date dans un format particulier.

Si ta question était : Comment modifier le format des dates de cellules
contenant ceci :
=NOMPROPRE("12 septembre 2005")

A ) La date est entrée dans la cellule comme une chaîne de caractère.
Observe les guillemets qui l'entourent. La fonction
NOMPROPRE() ajoute une majuscule à chaque mot de la chaîne. Aucun
formatage issu de la commande format / cellules n'aura d'effet sur
ce que retourne la cellule.

B ) Pour pouvoir transformer le contenu de tes cellules en vrai date,
tu
peux utiliser ceci en adaptant le nom de la feuille et ta
plage de cellules.

Dim rg As Range
With Worksheets("Feuil1")
Set rg = .Range("D1:D" & .Range("D65536").End(xlUp).Row)
End With
For Each c In rg
If IsDate(c) Then
'Si tu veux afficher un format particulier
c.numberformat = "dd mmm yy"
c.Value = CDate(c)
End If
Next


Salutations!




"DC" a écrit dans le message de news:
431186f8$0$27421$
Bonjour à Tous..............Bonjour michdenis,

Jai beau insister, rien ni fait! c'est vrai que le fait de ne pas
savoir
faire, ne peut pas être remplacé par du "peut-ètre que";
..........Enfin
bon!.................

J'espére que quelqu'un me trouvera une solution.........?

Salutation!.............Merci d'avance...........DC


"DC" a écrit dans le message de news:
4310b4c2$0$27419$

Bonsoir à Tous...........Bonsoir michdenis,

Je suis navré de te le dire, mais je suis vraiment incapable de
construire
ce que tu me propose,

Peut-être que toi, si tu le veux bien, tu pourrais me le construire,
( A
toi de voir.!......)

Salutation.!..........Merci d'avance...........DC


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


Bonjour DC,

Si tu définis le type de ta variable "As Date" , peu importe le
format
que tu utiliseras avec la fonction "Format", le format
retourné sera toujours celui définit par défaut dans le panneau de
configuration de Windows

Utilise le Type String

Dim MaDate as String

MaDate = Format(Date, "dd mmmm yyyy") ou le format de ton choix.

Et si tu veux transformer MaDate en "vrai" date

Myvar = cdate(Madate)


Salutations!



"DC" a écrit dans le message de news:
43109a85$0$1717$
Bonsoir à Tous,

Dans une macro, qui me met la date du Jour, j'aimerais changer le
format
de
la date.

Pour éviter des explications trop compliquées, je vais indiquer en
premier
la dite macro et ensuite une macro ou le format en question existe
déja,
--------------------------------------------------
ActiveCell.Offset(0, 0).Range("A1").Select
Selection.NumberFormat = "d mmmm yyyy"
With Selection.Font
.Name = "Times New Roman"
.FontStyle = "Normal"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = Date
Calculate
ActiveCell.Offset(6, -5).Range("A1").Select
End With
End Sub
--------------------------------------------------------
Private Sub Worksheet_Change(ByVal zz As Range)
Dim MaDate As String

If zz.Column <> 12 Then Exit Sub
Application.EnableEvents = False
MaDate = Application.Proper(Format(Date, "dd mmmm yyyy"))
zz(1, 3).FormulaLocal = "=NOMPROPRE(""" & MaDate & """)"
Application.EnableEvents = True

End Sub
---------------------------------------------------------
Salutations.!.........Merci d'avance...........DC































1 2