OVH Cloud OVH Cloud

Fonction VB eomonth

4 réponses
Avatar
bernard
Bonjour =E0 tous,
Je voudrais savoir pourquoi=20
DateMoins6Mois=3D [eomonth(A1,-6)] ou DateMoins6Mois=3D=20
[eomonth($A$1,-6)] ou [eomonth("24/5/2003",-6)] ou=20
DateMoins6Mois =3D [eomonth(toto, -6)] (avec "toto" le nom=20
d'une cellule) ou [eomonth('Feuil1'!$A$1, -6)]=20
fonctionnent mais DateMoins6Mois =3D [eomonth(activecell,-
6)] ou DateMoins6Mois =3D [eomonth(range("A1"),-6)] ou=20
[eomonth(CelluleTrait=E9e.Address,-6)] ou DateMoins6Mois =3D=20
[eomonth(" & "24/5/2003" & ",-6)] ou DateMoins6Mois =3D=20
[eomonth(Cells(1, 1),-6)] ou DateMoins6Mois =3D [eomonth
([A1],-6)] ou DateMoins6Mois =3D [eomonth
(CelluleTrait=E9e.Value, -6)] etc .ne fonctionnent pas.
Je vois bien que lorsque je l'=E9cris VB ne transforme pas=20
mes minuscules en majuscules des premi=E8res lettres, preuve=20
qu'il ne reconna=EEt pas les mots VB mais je n'arrive pas =E0=20
trouver le principe pour passer dans cette fonction une=20
adresse connue qu'au moment du traitement de la cellule et=20
le tout en VB bien s=FBr
D'avance merci beaucoup
Bernard

4 réponses

Avatar
AV
C'est mieux de rester dans le fil initial....

...ou DateMoins6Mois = [eomonth(CelluleTraitée.Value, -6)]
etc .ne fonctionnent pas.


Si tu veux intégrer des variables, la méthode Evaluate ne peut pas se satisfaire
de la formulation courte []
Tu as une foultitude d'exemples dans le lien que je t'ai précédemment donné..
Pour ton exemple qques syntaxes diverses possibles (non limitatif !) :
MsgBox Evaluate("eomonth(" & Range("A1").Value2 & ",-6)")
MsgBox Evaluate("eomonth(" & Range("A1") * 1 & ",-6)")
MsgBox Evaluate("eomonth(" & Cells(1, 1) * 1 & ",-6)")
MsgBox Evaluate("eomonth(" & DateValue("24/5/2003") * 1 & ",-6)")

AV

"bernard" a écrit dans le message news:
04ab01c35441$cb4044a0$
Bonjour à tous,
Je voudrais savoir pourquoi
DateMoins6Mois= [eomonth(A1,-6)] ou DateMoins6Mois [eomonth($A$1,-6)] ou [eomonth("24/5/2003",-6)] ou
DateMoins6Mois = [eomonth(toto, -6)] (avec "toto" le nom
d'une cellule) ou [eomonth('Feuil1'!$A$1, -6)]
fonctionnent mais DateMoins6Mois = [eomonth(activecell,-
6)] ou DateMoins6Mois = [eomonth(range("A1"),-6)] ou
[eomonth(CelluleTraitée.Address,-6)] ou DateMoins6Mois [eomonth(" & "24/5/2003" & ",-6)] ou DateMoins6Mois [eomonth(Cells(1, 1),-6)] ou DateMoins6Mois = [eomonth
([A1],-6)] ou DateMoins6Mois = [eomonth
(CelluleTraitée.Value, -6)] etc .ne fonctionnent pas.
Je vois bien que lorsque je l'écris VB ne transforme pas
mes minuscules en majuscules des premières lettres, preuve
qu'il ne reconnaît pas les mots VB mais je n'arrive pas à
trouver le principe pour passer dans cette fonction une
adresse connue qu'au moment du traitement de la cellule et
le tout en VB bien sûr
D'avance merci beaucoup
Bernard

Avatar
Daniel.M
Salut Bernard,

Comme Alain te l'a dit, la formulation courte d'Evaluate (i.e. celle avec
des crochets) ne fonctionne pas avec des variables d'un programme VBA.

EOMONTH faisant partie des macros complémentaires, son utilisation crée une
dépendance de ton code avec la disponibilité (installées/actives) de
celles-ci (c'est toi qui sait si c'est OK).

Tu obtiendrais ce que tu veux facilement avec:

NlleDateÚteSerial(Year(UneDate), Month(UneDate)+1-6,0)

comme FxM te l'a proposé.

Salutations,

Daniel M.
Avatar
bernard
Merci beaucoup de votre gentillese
Bernard
Avatar
Bernard
merci de votre gentillesse et bravo pour vos connaissances
Bernard