OVH Cloud OVH Cloud

Excel et Word

6 réponses
Avatar
gabrielle chabot-giroux
Bonjour à tous,

je vous explique ce que je veux faire:
Je voudrais calculé une date d'échéance ("=aujourdhui() + 30" par
exemple), mais à partir de Word car tout le reste de ma macro est dans Word
(c'est pour automatiser une lettre).

1- Est-ce possible de faire calculer ça directement par VBA (Word)?

2- Comment faire pour aller faire calculer ça dans Excel et le faire écrire
dans mon doc Word? Probablement en me servant de codes de ce genre:
Set xl = CreateObject("EXCEL.SHEET")
Echeance = xl.Application.Worksheet.Function. ????????????? (ça marche
si on se sert de function du genre Somme... mais avec "Aujourdhui + 30", je
ne sais pas comment l'écrire. J'ai essayé plein de syntaxes différentes...
rien à faire, je suis coinçée)

Si vous avez une idée, merci de m'en faire part!

Gabrielle

6 réponses

Avatar
Patrick Fredin
Bonjour,

As-tu essayé de mettre un champ Date dans Word avec la date du jour et d'y
ajouter 30 ?

--
Patrick


"gabrielle chabot-giroux" wrote:

Bonjour à tous,

je vous explique ce que je veux faire:
Je voudrais calculé une date d'échéance ("=aujourdhui() + 30" par
exemple), mais à partir de Word car tout le reste de ma macro est dans Word
(c'est pour automatiser une lettre).

1- Est-ce possible de faire calculer ça directement par VBA (Word)?

2- Comment faire pour aller faire calculer ça dans Excel et le faire écrire
dans mon doc Word? Probablement en me servant de codes de ce genre:
Set xl = CreateObject("EXCEL.SHEET")
Echeance = xl.Application.Worksheet.Function. ????????????? (ça marche
si on se sert de function du genre Somme... mais avec "Aujourdhui + 30", je
ne sais pas comment l'écrire. J'ai essayé plein de syntaxes différentes...
rien à faire, je suis coinçée)

Si vous avez une idée, merci de m'en faire part!

Gabrielle





Avatar
JLuc
*Bonjour gabrielle chabot-giroux*,


Bonjour à tous,

je vous explique ce que je veux faire:
Je voudrais calculé une date d'échéance ("=aujourdhui() + 30" par
exemple), mais à partir de Word car tout le reste de ma macro est dans Word
(c'est pour automatiser une lettre).

1- Est-ce possible de faire calculer ça directement par VBA (Word)?
Oui, et je crois que c'est le mieux :

Echeance = Now() + 30 'Excel vba parle anglais

2- Comment faire pour aller faire calculer ça dans Excel et le faire écrire
dans mon doc Word? Probablement en me servant de codes de ce genre:
Set xl = CreateObject("EXCEL.SHEET")
Echeance = xl.Application.Worksheet.Function. ????????????? (ça marche si
on se sert de function du genre Somme... mais avec "Aujourdhui + 30", je ne
sais pas comment l'écrire. J'ai essayé plein de syntaxes différentes... rien
à faire, je suis coinçée)

Si vous avez une idée, merci de m'en faire part!

Gabrielle


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
gabrielle chabot-giroux
Merci pour ton idée Patrick, mais ça n'a pas l'air de marcher....

À force de taponner, j'ai réussi à me pondre une macro qui a de l'allure...

Ce n'est pas encore tout à fait au point, mais j'y travaille encore pour
m'assurer que toutes les possibilités sont traitées. Si jamais quelqu'un a
envie de la tester (dans Word) et de comparer les résultats avec ce que
donnerait Excel (ajouter 30 à une cellule contenant une date), je serais
contente de corriger les détails qui ne fonctionnent pas...

Sub Echeance()
Dim DateAbonnement As String, Echeance As String, Echeance2 As String
Dim Annee As String, Mois As String, Jour As String

DateAbonnement = Val(InputBox("Entrez une date."))
'Transforme la date en nombre

Echeance = DateAbonnement + 30 '20060161
Annee = Left(Echeance, 4)
Mois = Mid(Echeance, 5, 2)
Jour = Right(Echeance, 2)

If Mois = 1 And Jour > 58 And Right(Annee / 4 * 10, 1) <> 0 Then
Mois = Mois + 2
Jour = Jour - 58
'Si on passe de janvier à mars (comme février n'a que 28 jours)
ElseIf Mois = 1 And Jour > 59 And Right(Annee / 4 * 10, 1) = 0 Then
Mois = Mois + 2
Jour = Jour - 59
'même chose, mais dans une année bisextile (ex 2004/4*10 = 5010, donc
finit par 0)
ElseIf Mois = 12 And Jour >= 32 And Jour <= 61 Then
Jour = Jour - 31
Mois = Mois - 11
Annee = Annee + 1
'Si on doit changer l'année (ex: 2000 12 15 +30 = 2000 12 45 => 2001 01
15)
ElseIf Jour > 31 And (Mois = 1 Or Mois = 3 Or Mois = 5 Or Mois = 7 Or Mois =
8 _
Or Mois = 10 Or Mois = 12) Then
Jour = Jour - 31
Mois = Mois + 1
'Si on doit changer le mois - mois de 31 jours (ex: résultat de
20060740)
ElseIf (Mois = 4 Or Mois = 6 Or Mois = 9 Or Mois = 11) And Jour > 30 Then
Jour = Jour - 30
Mois = Mois + 1
'Si on doit changer le mois - mois de 30 jours (ex: résultat de 20060640
ElseIf Mois = 2 And Right(Annee / 4 * 10, 1) = 0 And Jour > 29 Then
Jour = Jour - 29
Mois = Mois + 1
'Mois de février BISSEXTILE (ex 2004/4*10 = 5010, donc finit par 0)
ElseIf Mois = 2 And Right(Annee / 4 * 10, 1) <> 0 And Jour > 28 Then
Jour = Jour - 28
Mois = Mois + 1
'Mois de février NORMAL (ex 2006/4*10 = 5015, donc ne finit pas par 0)

End If

Echeance2 = Annee & " " & Mois & " " & Jour

MsgBox Left(DateAbonnement, 4) & " " & Mid(DateAbonnement, 5, 2) & " " _
& Right(DateAbonnement, 2) & Chr(10) & Echeance2

End Sub




"Patrick Fredin" a écrit dans le message
de news:
Bonjour,

As-tu essayé de mettre un champ Date dans Word avec la date du jour et d'y
ajouter 30 ?

--
Patrick


"gabrielle chabot-giroux" wrote:

Bonjour à tous,

je vous explique ce que je veux faire:
Je voudrais calculé une date d'échéance ("=aujourdhui() + 30" par
exemple), mais à partir de Word car tout le reste de ma macro est dans
Word
(c'est pour automatiser une lettre).

1- Est-ce possible de faire calculer ça directement par VBA (Word)?

2- Comment faire pour aller faire calculer ça dans Excel et le faire
écrire
dans mon doc Word? Probablement en me servant de codes de ce genre:
Set xl = CreateObject("EXCEL.SHEET")
Echeance = xl.Application.Worksheet.Function. ????????????? (ça
marche
si on se sert de function du genre Somme... mais avec "Aujourdhui + 30",
je
ne sais pas comment l'écrire. J'ai essayé plein de syntaxes
différentes...
rien à faire, je suis coinçée)

Si vous avez une idée, merci de m'en faire part!

Gabrielle







Avatar
Ange Ounis
1- Est-ce possible de faire calculer ça directement par VBA (Word)?


Par exemple avec ce genre de code (mais je ne suis pas sûr d'avoir compris ce
que tu souhaites comme résultat pour une date de départ comme 30 janvier 2006 :
1er mars 2006 ? 28 février 2006 ?) :

''''''''''''''''''''
Sub CalculEcheance()
Dim S, DateEcheance, Annee, Mois, Jour

S = InputBox("Entrez une date sous la forme aaaa-mm-jj :")

' Transforme la date en nombre
Annee = Split(S, "-")(0)
Mois = Split(S, "-")(1)
Jour = Split(S, "-")(2) + 30
DateEcheance = DateSerial(Annee, Mois, Jour)
MsgBox DateEcheance

End Sub
''''''''''''''''''''

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

Bonjour à tous,

je vous explique ce que je veux faire:
Je voudrais calculé une date d'échéance ("=aujourdhui() + 30" par
exemple), mais à partir de Word car tout le reste de ma macro est dans Word
(c'est pour automatiser une lettre).

1- Est-ce possible de faire calculer ça directement par VBA (Word)?

2- Comment faire pour aller faire calculer ça dans Excel et le faire écrire
dans mon doc Word? Probablement en me servant de codes de ce genre:
Set xl = CreateObject("EXCEL.SHEET")
Echeance = xl.Application.Worksheet.Function. ????????????? (ça marche
si on se sert de function du genre Somme... mais avec "Aujourdhui + 30", je
ne sais pas comment l'écrire. J'ai essayé plein de syntaxes différentes...
rien à faire, je suis coinçée)

Si vous avez une idée, merci de m'en faire part!

Gabrielle




Avatar
gabrielle chabot-giroux
Merci... c'est pas mal plus simple comme ça lol

"Ange Ounis" a écrit dans le message de news:

1- Est-ce possible de faire calculer ça directement par VBA (Word)?


Par exemple avec ce genre de code (mais je ne suis pas sûr d'avoir compris
ce que tu souhaites comme résultat pour une date de départ comme 30
janvier 2006 : 1er mars 2006 ? 28 février 2006 ?) :

''''''''''''''''''''
Sub CalculEcheance()
Dim S, DateEcheance, Annee, Mois, Jour

S = InputBox("Entrez une date sous la forme aaaa-mm-jj :")

' Transforme la date en nombre
Annee = Split(S, "-")(0)
Mois = Split(S, "-")(1)
Jour = Split(S, "-")(2) + 30
DateEcheance = DateSerial(Annee, Mois, Jour)
MsgBox DateEcheance

End Sub
''''''''''''''''''''

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

Bonjour à tous,

je vous explique ce que je veux faire:
Je voudrais calculé une date d'échéance ("=aujourdhui() + 30" par
exemple), mais à partir de Word car tout le reste de ma macro est dans
Word (c'est pour automatiser une lettre).

1- Est-ce possible de faire calculer ça directement par VBA (Word)?

2- Comment faire pour aller faire calculer ça dans Excel et le faire
écrire dans mon doc Word? Probablement en me servant de codes de ce
genre:
Set xl = CreateObject("EXCEL.SHEET")
Echeance = xl.Application.Worksheet.Function. ????????????? (ça
marche si on se sert de function du genre Somme... mais avec "Aujourdhui
+ 30", je ne sais pas comment l'écrire. J'ai essayé plein de syntaxes
différentes... rien à faire, je suis coinçée)

Si vous avez une idée, merci de m'en faire part!

Gabrielle




Avatar
docm
Bonjour..

Peut-être en utilisant la fonction DateAdd comme ceci:

Sub Echeance()
Dim DateAbonnement As String, Echeance As String, Echeance2 As String
Dim Annee As String, Mois As String, Jour As String

DateAbonnement = InputBox("Entrez une date.")

Echeance = DateAdd("d", 30, DateAbonnement)
Annee = Year(Echeance)
Mois = Month(Echeance)
Jour = Day(Echeance)

Echeance2 = Annee & " " & Mois & " " & Jour

MsgBox Echeance & Chr(10) & Echeance2

End Sub

docm


"gabrielle chabot-giroux" wrote in
message news:
Merci pour ton idée Patrick, mais ça n'a pas l'air de marcher....

À force de taponner, j'ai réussi à me pondre une macro qui a de
l'allure...


Ce n'est pas encore tout à fait au point, mais j'y travaille encore pour
m'assurer que toutes les possibilités sont traitées. Si jamais quelqu'un a
envie de la tester (dans Word) et de comparer les résultats avec ce que
donnerait Excel (ajouter 30 à une cellule contenant une date), je serais
contente de corriger les détails qui ne fonctionnent pas...

Sub Echeance()
Dim DateAbonnement As String, Echeance As String, Echeance2 As String
Dim Annee As String, Mois As String, Jour As String

DateAbonnement = Val(InputBox("Entrez une date."))
'Transforme la date en nombre

Echeance = DateAbonnement + 30 '20060161
Annee = Left(Echeance, 4)
Mois = Mid(Echeance, 5, 2)
Jour = Right(Echeance, 2)

If Mois = 1 And Jour > 58 And Right(Annee / 4 * 10, 1) <> 0 Then
Mois = Mois + 2
Jour = Jour - 58
'Si on passe de janvier à mars (comme février n'a que 28 jours)
ElseIf Mois = 1 And Jour > 59 And Right(Annee / 4 * 10, 1) = 0 Then
Mois = Mois + 2
Jour = Jour - 59
'même chose, mais dans une année bisextile (ex 2004/4*10 = 5010, donc
finit par 0)
ElseIf Mois = 12 And Jour >= 32 And Jour <= 61 Then
Jour = Jour - 31
Mois = Mois - 11
Annee = Annee + 1
'Si on doit changer l'année (ex: 2000 12 15 +30 = 2000 12 45 => 2001
01

15)
ElseIf Jour > 31 And (Mois = 1 Or Mois = 3 Or Mois = 5 Or Mois = 7 Or Mois
8 _
Or Mois = 10 Or Mois = 12) Then
Jour = Jour - 31
Mois = Mois + 1
'Si on doit changer le mois - mois de 31 jours (ex: résultat de
20060740)
ElseIf (Mois = 4 Or Mois = 6 Or Mois = 9 Or Mois = 11) And Jour > 30 Then
Jour = Jour - 30
Mois = Mois + 1
'Si on doit changer le mois - mois de 30 jours (ex: résultat de
20060640

ElseIf Mois = 2 And Right(Annee / 4 * 10, 1) = 0 And Jour > 29 Then
Jour = Jour - 29
Mois = Mois + 1
'Mois de février BISSEXTILE (ex 2004/4*10 = 5010, donc finit par 0)
ElseIf Mois = 2 And Right(Annee / 4 * 10, 1) <> 0 And Jour > 28 Then
Jour = Jour - 28
Mois = Mois + 1
'Mois de février NORMAL (ex 2006/4*10 = 5015, donc ne finit pas par 0)

End If

Echeance2 = Annee & " " & Mois & " " & Jour

MsgBox Left(DateAbonnement, 4) & " " & Mid(DateAbonnement, 5, 2) & " " _
& Right(DateAbonnement, 2) & Chr(10) & Echeance2

End Sub




"Patrick Fredin" a écrit dans le
message

de news:
Bonjour,

As-tu essayé de mettre un champ Date dans Word avec la date du jour et
d'y


ajouter 30 ?

--
Patrick


"gabrielle chabot-giroux" wrote:

Bonjour à tous,

je vous explique ce que je veux faire:
Je voudrais calculé une date d'échéance ("=aujourdhui() + 30" par
exemple), mais à partir de Word car tout le reste de ma macro est dans
Word
(c'est pour automatiser une lettre).

1- Est-ce possible de faire calculer ça directement par VBA (Word)?

2- Comment faire pour aller faire calculer ça dans Excel et le faire
écrire
dans mon doc Word? Probablement en me servant de codes de ce genre:
Set xl = CreateObject("EXCEL.SHEET")
Echeance = xl.Application.Worksheet.Function. ????????????? (ça
marche
si on se sert de function du genre Somme... mais avec "Aujourdhui +
30",



je
ne sais pas comment l'écrire. J'ai essayé plein de syntaxes
différentes...
rien à faire, je suis coinçée)

Si vous avez une idée, merci de m'en faire part!

Gabrielle