Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Problème avec macro pour créer des taches dans Outlook

449 views
Skip to first unread message

géjoun.

unread,
Aug 23, 2004, 4:48:20 AM8/23/04
to
Bonjour,

Dans les archives, j'ai trouvé cette macro proposé par Pierre Fauconnier
pour créer des taches dans Outlook à partir d'Excel (message original
http://minilien.com/?RlD9dH7sQ3).


Sub Creer_TacheOutlook()
' Dimensionner l'objet Outlook
Dim oOutlook As Outlook.Application
' Dimensionner la tâche
Dim oTache As TaskItem

' Initialiser l'objet Outlook
Set oOutlook = CreateObject("Outlook.Application")
' Créer la tâche
Set oTache = oOutlook.CreateItem(olTaskItem)
' Affecter les propriétés à la tâche
With oTache
.DueDate = Range("a1") ' Echéance
.Subject = Range("b1") ' Objet
.Body = Range("c1") ' texte explicatif
.Save ' Enregistrer la nouvelle tâche
End With
' vider les objets pour libérer la mémoire
Set oTache = Nothing
Set oOutlook = Nothing
End Sub


Et apparement, la personne qui cherchait le moyen de faire ça y est arrivé
avec cette macro; alors que moi, dès que j'essaie de l'exécuter, ça
m'affiche une erreur de compilation 'Type défini par l'utilisateur non
défini' avec en surbrillance cette ligne 'oOutlook As Outlook.Application';
et lorsque je clique sur 'OK', ça me fait apparaitre la première ligne 'Sub
Creer TacheOutlook()' en surbrillance...

Petites précisons... Je suis sous office XP, j'ai bien rajouté à mes
références dans l'éditeur VBE 'Microsoft Office 10.0 Object Library'; et,
par contre, comparé à la macro originale, j'ai rajouté un underscore _ entre
Creer et TacheOutlook à la 1ère ligne, parce qu'autrement, excel me détecte
pas la macro (il m'affiche la 1ère ligne en rouge; mais j'y connais pas
grand chose en VBA non plus, alors c'est peut être une boulette de faire
ça); et pour finir, mais je suppose que là, j'ai quand même juste, c'est
dans un module standard que j'ai collé la macro.

Si quelqu'un peut éclairer ma lanterne...

Merci!

--
__________________________
Géjoun.
dam-ma...@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Nicolas B.

unread,
Aug 23, 2004, 4:59:58 AM8/23/04
to
Salut géjoun,

Cocher la référence Office ne suiffit pas. Il faut aussi cocher :
Microsoft Outlook N Object Library


A+
Nicolas B.

géjoun.

unread,
Aug 23, 2004, 5:36:38 AM8/23/04
to
De ces petits doigts, Nicolas B. [nicola...@adresse.bidon.invalid] a
tapoté:

OK, tu m'as devancé, mais à force de chercher, je m'en suis aperçu, et j'ai
aussi coché l'autre, et là, la macro fonctionne!
Par contre, je n'arrive pas à trouver (si c'est possible???) comment
affecter 2 cellules pour l'objet dans la macro.
Par exemple, je voudrais que la ligne objet me renvoie le contenu de la
cellule B1 et le contenu de la cellule D4 aussi, avec un espace entre les 2
si possible.
J'ai essayé en tapant ça dans la macro

Subject = Range("b1"&""&"d4") ' Objet

mais ça ne fonctionne pas, alors, est ce possible en VBA? (sur le même
principe que dans excel, on peut renvoyer le contenu de plusieurs cellules
dans la même en faisant ="b1"&""&"d4"

De plus, j'ai trouvé comment activer le rappel (par la ligne .ReminderSet =
True) mais je ne sais pas comment définir le jour du rappel et son heure,
alors si on pouvait me renseigner sur ça...

Merci!


--
__________________________
Géjoun.
dam-ma...@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

|| Salut géjoun,

Nicolas B.

unread,
Aug 23, 2004, 5:38:53 AM8/23/04
to
Pour la première question, il suffit de manipuler les chaînes de
caractères :
Subject = Range("b1") & " " & range("d4")


A+
Nicolas B.

ru-th

unread,
Aug 23, 2004, 5:40:42 AM8/23/04
to
Salut

pas testé

Subject = Range("b1").text & " " & range("d4").text
ou
Subject = [b1] & " " & [d4]

a+
rural thierry
géjoun." <dam-ma...@ifrance.com> a écrit dans le message de news:
#Ge0hQPi...@TK2MSFTNGP10.phx.gbl...

Philippe.R

unread,
Aug 23, 2004, 5:42:39 AM8/23/04
to
Bonjour,
Essaye :
Subject = Range("b1").value & " " & Range("d4").value
ou
Subject = [b1] & " " & [d4]
--
Amicales Salutations
Retirer A_S_ pour répondre.
XL 97 / 2000 / 2002

"géjoun." <dam-ma...@ifrance.com> a écrit dans le message de

news:%23Ge0hQP...@TK2MSFTNGP10.phx.gbl...

Nicolas B.

unread,
Aug 23, 2004, 5:44:06 AM8/23/04
to
Et pour le reminder, les dates sont à affecter à ReminderTime sous forme
de numérique comme dans Excel. Exemple pour déclencher l'alerte une
heure après la création de la tâche :
.ReminderTime = Now + 1 / 24
.ReminderSet = True


A+
Nicolas B.

géjoun.

unread,
Aug 23, 2004, 6:20:20 AM8/23/04
to
De ces petits doigts, Nicolas B. [nicola...@adresse.bidon.invalid] a
tapoté:

OK, merci à tous pour ces précisions, ça fonctionne!
Encore un dernier détail, est-ce possible dans le texte explicatif de
renvoyer une zone de cellules comme dans excel on peut faire a1:a12?
Par exemple:

.Body = Range("c1:c20") ' texte explicatif

Merci!

--
__________________________
Géjoun.
dam-ma...@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

géjoun.

unread,
Aug 24, 2004, 5:06:13 AM8/24/04
to
De ces petits doigts, géjoun. [dam-ma...@ifrance.com] a tapoté:


Personne ne sait si c'est possible de définir une plage de cellules plutôt
qu'une ou plusieurs cellules?

JpPradier

unread,
Aug 24, 2004, 5:10:57 AM8/24/04
to
Bonjour Géjoun

Il doit y avoir un exemple sur excelabo :

www.excelabo.net

j-p

JpPradier

unread,
Aug 24, 2004, 5:15:38 AM8/24/04
to

géjoun.

unread,
Aug 24, 2004, 10:32:19 AM8/24/04
to
De ces petits doigts, JpPradier [jp.pradier.J...@wanadoo.fr] a
tapoté:

Salut!

Merci pour le lien, j'ai bien regardé tous les codes qui parlent d'export
vers outlook, et c'est vrai qu'il y en a bien un ou 2 qui doit correspondre,
mais de la à l'adapter dans la macro que j'utilise...donc je crois que je
vais garder ce qui fonctionne déja si ça doit être aussi compliqué.

--
__________________________
Géjoun.
dam-ma...@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

géjoun.

unread,
Aug 25, 2004, 5:48:32 AM8/25/04
to
De ces petits doigts, géjoun. [dam-ma...@ifrance.com] a tapoté:

Alors, j'ai essayé plein de trucs à partir des codes d'excel labo (et de
messages des archives) pour arriver à définir une plage de cellules en tant
que corps de la tache (.body = ??????), mais là, j'y arrive vraiment pas!
Par contre, j'ai bien fait fumer le débogueur! :-))

Pourtant, dans tous les codes, il y en a un de particulièrement intéressant
car il met dans le corps du message simplement les données sans formules ni
formats http://www.excelabo.net/xl/sortir.php#tableaumail (celui que je mets
en dessous); mais j'arrive pas à l'adapter à ma macro! :-(
Je ne vois pas quoi mettre pour seulement reporter la plage de cellules dans
le corps du message (en enlevant toutes les instructions qui concernent la
création du message)

Si une personne peut m'aider...

Merci!

*Le code trouvé:*
Envoyer un tableau par mail
Je voudrais envoyer une zone de cellules par e-mail et uniquement les
valeurs et non pas les
formules de ces dernières. Cette procédure envoie une plage de données :
A ) sans formule
B ) Sans format
C ) La plage d'origine se retrouve à partir de la cellule A1 dans la feuille
du fichier envoyé.
D ) Renomme la feuille et la plage de cellule selon ton application.
E) Enlève les objets de la feuille envoyée,
F) Enlève le code de la feuille envoyée s'il existe

-----------------------
Sub EnvoiPlageDonnéeParCourriel()

Dim Plage As Range, T As Variant, A As Long
Dim Shap As Object, B As Integer

Application.ScreenUpdating = False
With Worksheets("Feuil1")
Set Plage = Worksheets("feuil1").Range("A1:A10")
T = Plage
.Copy
End With

A = Plage.Rows.Count
B = Plage.Columns.Count

With ActiveWorkbook
With .VBProject.VBComponents(ActiveSheet.Name).CodeModule
.deletelines 1, .countoflines
End With
With .ActiveSheet
.Cells.Clear
.Range(Cells(1, 1), Cells(A, B)) = T
For Each Shap In .Shapes
Shap.Select Replace:=False
Next
Selection.Delete
End With
SendKeys "(%{E})", False
.SendMail Recipients:="Destinataire@Serveur", Subject:="Test"
.Close savechanges:=False
End With
Set Plage = Nothing: Set Shap = Nothing

End Sub --

JpPradier

unread,
Aug 25, 2004, 8:43:16 AM8/25/04
to
Bonjour Géjoun

Cette macro copie ta plage dans un classeur neuf pour l'envoyer en piece jointe. Comme tu voulais la
plage dans le corpps du message, voici une macro de J Walkenbach un peu adaptée à ton cas :

j-p

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Sub SendEMail()
Dim Email As String, Subj As String
Dim Msg As String

Set Plage = Worksheets("feuil1").Range("A1:B10")


A = Plage.Rows.Count
B = Plage.Columns.Count

' Get the email address
Email = "Géjo...@test.fr"

' Message subject
Subj = "Test pour Géjoun"

' Compose the message
Msg = ""
Msg = Msg & "Cher Géjoun," & vbCrLf & vbCrLf
Msg = Msg & "Voici un message avec les cellules en corps"
For A = 0 To A
For B = 0 To B
Msg = Msg & Range("A1").Offset(A, B).Value
Next
Msg = Msg & vbCrLf
Next
Msg = Msg & "Géjoun" & vbCrLf

' Replace spaces with %20 (hex)
Subj = Application.WorksheetFunction.Substitute(Subj, " ", "%20")
Msg = Application.WorksheetFunction.Substitute(Msg, " ", "%20")

' Replace carriage returns with %0D%0A (hex)
Msg = Application.WorksheetFunction.Substitute(Msg, vbCrLf, "%0D%0A")
' Create the URL
URL = "mailto:" & Email & "?subject=" & Subj & "&body=" & Msg

' Execute the URL (start the email client)
ShellExecute 0&, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus

' Wait two seconds before sending keystrokes
Application.Wait (Now + TimeValue("0:00:02"))
Application.SendKeys "%s"

End Sub

JièL Goubert

unread,
Aug 25, 2004, 9:55:20 AM8/25/04
to
Bonjoir(c) JpPradier et Géjoun

non testé, juste un vague souvenir : il me semble que la ligne mailto: ne
supporte pas plus de 255 caractères... a confirmer

de plus, le message ne partira pas seul, il faudra ouvrir Outlook et fair un
envoyer/recevoir. De plus Outlook va afficher une alerte disant qu'on essaye
de l'utiliser à l'insu de son plein gré...
Et pour terminer, je dirais que ça ne créer pas de tâche, ce qui etait la
question de départ si j'ai bien compris...

Un petit tour sur le site d'Arnaud, y'a surement des trucs à adapter qui font ça
http://memoaccess.free.fr/outlook.htm

--
La FAQ Outlook est la : http://faq.outlook.free.fr
JièL / Jean-Louis GOUBERT
Co-auteur de "Internet + de 1 000 trucs de pros" chez Micro Application
http://faq.outlook.free.fr/livreMA/internet_plus_de_1000_trucs_de_pros.htm

géjoun.

unread,
Aug 25, 2004, 11:38:29 AM8/25/04
to
De ces petits doigts, JièL Goubert [NoSpam_Ji...@LaPoste-Net.Nospam]
a tapoté:

Et oui, j'ai pas encore eu le temps d'essayer de bidouiller le code de
JpPradier (d'ailleurs, merci!), mais c'est vrai que ma question initiale
(même si apparement c'est pas loin d'être similaire dans la façon de
procéder); c'était de reporter une plage de cellules en corps de messages
(.body = ????) dans une TACHE, et non dans un email.
Et d'ailleurs, si une fois de plus j'ai tout faux, et que ça n'a rien à voir
au niveau similitude, ce serait sympa de me le dire avant que je latte
allègrement mon PC :o)

--
__________________________
Géjoun.
dam-ma...@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

|| Bonjoir(c) JpPradier et Géjoun

géjoun.

unread,
Aug 25, 2004, 11:53:12 AM8/25/04
to
De ces petits doigts, géjoun. [dam-ma...@ifrance.com] a tapoté:

Par contre JpPardier, je viens d'essayer ta macro, et même si c'est pas
exactement ce que je demande, elle fonctionne au poil! Bravo! ;-)

géjoun.

unread,
Aug 25, 2004, 12:04:16 PM8/25/04
to
De ces petits doigts, géjoun. [dam-ma...@ifrance.com] a tapoté:

Et re-par contre, apparement, c'est beaucoup moins évident qu'elle
fonctionne au poil avec une tache la macro! :(

JpPradier

unread,
Aug 25, 2004, 1:04:28 PM8/25/04
to
Bonsoir

Ben oui, j'ai loupé une marche : je n'avais pas vu qu'il était question de tache et non d'e-mail :-(
Désolé, mais comme je n'utilise pas Outlook, je ne pourrais pas plus t'aider.

j-p

géjoun.

unread,
Aug 26, 2004, 2:15:51 AM8/26/04
to
De ces petits doigts, JpPradier [jp.pradier.J...@wanadoo.fr] a
tapoté:

Aïe! :-( C'est donc pas si similaire que ça?
Un VBiste pour m'aider?

--
__________________________
Géjoun.
dam-ma...@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

géjoun.

unread,
Sep 1, 2004, 12:14:04 PM9/1/04
to
De ces petits doigts, géjoun. [dam-ma...@ifrance.com] a tapoté:

Existe t'il un moyen pour pouvoir reporter plusieurs lignes en corps de
taches au moins?
Dans le 'style':

.Body = Range("c17") & "." & Range("d17") & " - " & Range("j17")
Range("c18") & "." & Range("d18") & " - " & Range("j18")

Mais de sorte à ce que ça fonctione, car en faisant ça, ça ne me renvoie que
la 1ère ligne.
Comment faut-il organiser le code? Est-ce qu'il faut rajouter .Body= avant
aussi sur la 2ème ligne?

Merci!

JpPradier

unread,
Sep 1, 2004, 12:31:05 PM9/1/04
to
Bonjour Géjoun

essaye avec & vbnewline & ou & vbcrlf & :

.Body = Range("c17") & "." & Range("d17") & " - " & Range("j17") & vbnewline &


Range("c18") & "." & Range("d18") & " - " & Range("j18")


j-p

géjoun.

unread,
Sep 2, 2004, 5:21:25 AM9/2/04
to
De ces petits doigts, JpPradier [jp.pradier.J...@wanadoo.fr] a
tapoté:

Bon, j'ai tenté, mais vu que j'ai 51 lignes à reporté de cette sorte, ça
veut pas me prendre la totalité, ça bloque surement par rapport à la
longueur de la ligne...
Un aperçu de la ligne que ça fait...(c'est quand même une longue ligne...
:-)

.Body = Range("c16") & " . " & Range("d16") & " - " & Range("j16") & " €" &
vbNewLine &Range("c17") & " . " & Range("d17") & " - " & Range("j17") & " €"
& vbNewLine &Range("c18") & " . " & Range("d18") & " - " & Range("j18") & "
€" & vbNewLine &Range("c19") & " . " & Range("d19") & " - " & Range("j19") &
" €" & vbNewLine &Range("c20") & " . " & Range("d20") & " - " & Range("j20")
& " €" & vbNewLine &Range("c21") & " . " & Range("d21") & " - " &
Range("j21") & " €" & vbNewLine &Range("c22") & " . " & Range("d22") & " - "
& Range("j22") & " €" & vbNewLine &Range("c23") & " . " & Range("d23") & " -
" & Range("j23") & " €" & vbNewLine &Range("c24") & " . " & Range("d24") &
" - " & Range("j24") & " €" & vbNewLine &Range("c25") & " . " & Range("d25")
& " - " & Range("j25") & " €" & vbNewLine &Range("c26") & " . " &
Range("d26") & " - " & Range("j26") & " €" & vbNewLine &Range("c27") & " . "
& Range("d27") & " - " & Range("j27") & " €" & vbNewLine &Range("c28") & " .
" & Range("d28") & " - " & Range("j28") & " €" & vbNewLine &Range("c29") & "
. " & Range("d29") & " - " & Range("j29") & " €" & vbNewLine &Range("c30") &
" . " & Range("d30") & " - " & Range("j30") & " €" & vbNewLine &Range("c31")
& " . " & Range("d31") & " - " & Range("j31") & " €" & vbNewLine
&Range("c32") & " . " & Range("d32") & " - " & Range("j32") & " €" &
vbNewLine &Range("c33") & " . " & Range("d33") & " - " & Range("j33") & " €"
& vbNewLine &Range("c34") & " . " & Range("d34") & " - " & Range("j34") & "
€" & vbNewLine &Range("c35") & " . " & Range("d35") & " - " & Range("j35") &
" €" & vbNewLine &Range("c36") & " . " & Range("d36") & " - " & Range("j36")
& " €" & vbNewLine &Range("c37") & " . " & Range("d37") & " - " &
Range("j37") & " €" & vbNewLine &Range("c38") & " . " & Range("d38") & " - "
& Range("j38") & " €" & vbNewLine &Range("c39") & " . " & Range("d39") & " -
" & Range("j39") & " €" & vbNewLine &Range("c40") & " . " & Range("d40") &
" - " & Range("j40") & " €" & vbNewLine &Range("c41") & " . " & Range("d41")
& " - " & Range("j41") & " €" & vbNewLine &Range("c42") & " . " &
Range("d42") & " - " & Range("j42") & " €" & vbNewLine &Range("c43") & " . "
& Range("d43") & " - " & Range("j43") & " €" & vbNewLine &Range("c44") & " .
" & Range("d44") & " - " & Range("j44") & " €" & vbNewLine &Range("c45") & "
. " & Range("d45") & " - " & Range("j45") & " €" & vbNewLine &Range("c46") &
" . " & Range("d46") & " - " & Range("j46") & " €" & vbNewLine &Range("c47")
& " . " & Range("d47") & " - " & Range("j47") & " €" & vbNewLine
&Range("c48") & " . " & Range("d48") & " - " & Range("j48") & " €" &
vbNewLine &Range("c49") & " . " & Range("d49") & " - " & Range("j49") & " €"
& vbNewLine &Range("c50") & " . " & Range("d50") & " - " & Range("j50") & "
€" & vbNewLine &Range("c51") & " . " & Range("d51") & " - " & Range("j51") &
" €" & vbNewLine &Range("c52") & " . " & Range("d52") & " - " & Range("j52")
& " €" & vbNewLine &Range("c53") & " . " & Range("d53") & " - " &
Range("j53") & " €" & vbNewLine &Range("c54") & " . " & Range("d54") & " - "
& Range("j54") & " €" & vbNewLine &Range("c55") & " . " & Range("d55") & " -
" & Range("j55") & " €" & vbNewLine &Range("c56") & " . " & Range("d56") &
" - " & Range("j56") & " €" & vbNewLine &Range("c57") & " . " & Range("d57")
& " - " & Range("j57") & " €" & vbNewLine &Range("c58") & " . " &
Range("d58") & " - " & Range("j58") & " €" & vbNewLine &Range("c59") & " . "
& Range("d59") & " - " & Range("j59") & " €" & vbNewLine &Range("c60") & " .
" & Range("d60") & " - " & Range("j60") & " €" & vbNewLine &Range("c61") & "
. " & Range("d61") & " - " & Range("j61") & " €" & vbNewLine &Range("c62") &
" . " & Range("d62") & " - " & Range("j62") & " €" & vbNewLine &Range("c63")
& " . " & Range("d63") & " - " & Range("j63") & " €" & vbNewLine
&Range("c64") & " . " & Range("d64") & " - " & Range("j64") & " €" &
vbNewLine &Range("c65") & " . " & Range("d65") & " - " & Range("j65") & " €"
& vbNewLine &Range("c66") & " . " & Range("d66") & " - " & Range("j66") & "
€" & vbNewLine &Range("c67") & " . " & Range("d67") & " - " & Range("j67") &
" €"


--
__________________________
Géjoun.
dam-ma...@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

|| Bonjour Géjoun

JpPradier

unread,
Sep 2, 2004, 5:53:04 AM9/2/04
to
Tu peux peut-etre passer par un for next :

LeTexte=""
For i=16 to 67
LeTexte=LeTexte & Range("c" & i) & "." & Range("d" & i) & " - " & range("j" & i) & " €" &
vbnewline
next
.Body=LeTexte

C'est plus court non ? ;-))

j-p

géjoun.

unread,
Sep 2, 2004, 9:11:24 AM9/2/04
to
De ces petits doigts, JpPradier [jp.pradier.J...@wanadoo.fr] a
tapoté:

Ah oui, c'est clair que c'est plus court ça!
Et en plus, ça marche mieux! :-))

Il reste juste un petit détail qui serait le top, ce serait d'avoir le moyen
que ça ne renvoie que les lignes ou il y a des données, et que ça ne
m'affiche pas les
. - €

. - €

. - €

. - €

sur toute la hauteur de la tache.

C'est possible en rajoutant une ligne en quelque part ça?

Sinon, merci!


--
__________________________
Géjoun.
dam-ma...@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

|| Tu peux peut-etre passer par un for next :

JpPradier

unread,
Sep 2, 2004, 10:46:43 AM9/2/04
to
Oui !
;-)

Quelque chose du genre :

LeTexte=""
For i=16 to 67

if range("c" & i) <> "" then LeTexte=LeTexte & Range("c" & i) & "." & Range("d" & i) & " - " &


range("j" & i) & " €" &
vbnewline
next
.Body=LeTexte


j-p

géjoun.

unread,
Sep 2, 2004, 11:49:37 AM9/2/04
to
De ces petits doigts, JpPradier [jp.pradier.J...@wanadoo.fr] a
tapoté:

Yeeeeeeeeeeeeeeeessssss!
Ca marche impeccable!
Finalement, tu vois que tu t'y connais en transfert vers Outlook, même si tu
l'utilises pas! ;-)

Merci! :-)

--
__________________________
Géjoun.
dam-ma...@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

JpPradier

unread,
Sep 2, 2004, 1:10:17 PM9/2/04
to
:-)))

j-p

géjoun.

unread,
Sep 8, 2004, 2:47:43 AM9/8/04
to
De ses petits doigts, JpPradier [jp.pradier.J...@wanadoo.fr] a
tapoté:

Re!

Encore une petite chose...

J'ai affecté cette macro à un 'bouton à cocher' de la barre d'outils
formulaires :

Sub Creer_TacheOutlook()
' Dimensionner l'objet Outlook
Dim oOutlook As Outlook.Application
' Dimensionner la tâche
Dim oTache As TaskItem

' Initialiser l'objet Outlook
Set oOutlook = CreateObject("Outlook.Application")
' Créer la tâche
Set oTache = oOutlook.CreateItem(olTaskItem)
' Affecter les propriétés à la tâche
With oTache
.DueDate = Range("o3") ' Echéance
.Subject = Range("j2") & " - " & Range("b10") & " " & Range("h7") '
Objet
LeTexte = ""
For i = 16 To 67
If Range("c" & i) <> "" Then LeTexte = LeTexte & Range("c" & i) & "
" & Range("d" & i) & " -> " & Range("j" & i) & " €" & vbNewLine
Next
.Body = LeTexte & vbNewLine & Range("j68") & " " & Range("k68") & "
€" ' texte explicatif
.ReminderSet = True
.Save ' Enregistrer la nouvelle tâche
End With
' vider les objets pour libérer la mémoire
Set oTache = Nothing
Set oOutlook = Nothing
End Sub


Et j'ai remarqué que lorsque je choisis de cocher mon bouton, ça me créé la
tâche dans outlook, jusque là, rien d'extraordinaire, mais si je choisis de
le décocher, ça m'en recréer une deuxième à l'identique!
N'y a t'il pas quelque chose à faire contre ça? Pour que la tâche se crée
juste lorsque je choisis de cocher le bouton, et pas lorsque je le décoche?

Merci!

--
__________________________
Géjoun.
dam-ma...@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

|| :-)))
||
|| j-p

JpPradier

unread,
Sep 8, 2004, 3:24:21 AM9/8/04
to
Bonjour Géjoun

En cliquant droit sur ta case à cocher, tu choisis format de controle et dans cellule liée, tu
choisis une cellule. Cette cellule aura la valeur Vrai si la case est cochée et Faux si elle ne
l'est pas. Il ne te reste plus qu'à tester cette cellule au début de ta macro.

j-p

géjoun.

unread,
Sep 8, 2004, 4:57:45 AM9/8/04
to
De ses petits doigts, JpPradier [jp.pradier.J...@wanadoo.fr] a
tapoté:

Ok ok, donc pour la cellule liée, c'est fait (N12), et du coup, dans la
macro, il faudrait que je rajoute avant et au début une ligne de code pour
dire que si la valeur de N12 est 'FAUX', alors rien, sinon, 'exécuter la
macro', c'est bien ça?

--
__________________________
Géjoun.
dam-ma...@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

JpPradier

unread,
Sep 8, 2004, 5:02:13 AM9/8/04
to
Absolument ;-)

j-p

géjoun.

unread,
Sep 13, 2004, 5:37:40 AM9/13/04
to
De ses petits doigts, JpPradier [jp.pradier.J...@wanadoo.fr] a
tapoté:

Bonjour,

Bon, vu que je suis toujours pas assez doué pour écrire directement les
macros comme ça, je suis passé par l'enregistreur de macro, et bien entendu,
j'arrive à rien, même pour ça!
Donc si une personnne peut me dépanner...

Merci!


--
__________________________
Géjoun.
dam-ma...@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯


|| Absolument ;-)
||
|| j-p


JpPradier

unread,
Sep 13, 2004, 5:44:52 AM9/13/04
to
Bonjour Géjoun

C'est encore moi ;-))

En considérant que ta case à cocher est liée avec la cellule D1, la macro devrait se présenter comme
ci-dessous. J'ai rajouté 2 lignes :
'If Range("D1") then'
et End if


j-p

Sub Creer_TacheOutlook()
' Dimensionner l'objet Outlook
Dim oOutlook As Outlook.Application
' Dimensionner la tâche
Dim oTache As TaskItem

If Range("D1") then


' Initialiser l'objet Outlook
Set oOutlook = CreateObject("Outlook.Application")
' Créer la tâche
Set oTache = oOutlook.CreateItem(olTaskItem)
' Affecter les propriétés à la tâche
With oTache
.DueDate = Range("o3") ' Echéance
.Subject = Range("j2") & " - " & Range("b10") & " " & Range("h7") '
Objet
LeTexte = ""
For i = 16 To 67
If Range("c" & i) <> "" Then LeTexte = LeTexte & Range("c" & i) & "
" & Range("d" & i) & " -> " & Range("j" & i) & " €" & vbNewLine
Next
.Body = LeTexte & vbNewLine & Range("j68") & " " & Range("k68") & "
€" ' texte explicatif
.ReminderSet = True
.Save ' Enregistrer la nouvelle tâche
End With
' vider les objets pour libérer la mémoire
Set oTache = Nothing
Set oOutlook = Nothing

end if
End Sub

géjoun.

unread,
Sep 13, 2004, 9:59:14 AM9/13/04
to
De ses petits doigts, JpPradier [jp.pradier.J...@wanadoo.fr] a
tapoté:

Adopté!

Ca fonctionne à merveille! :-)))

--
__________________________
Géjoun.
dam-ma...@ifrance.com
····················································
Enlevez l'année pour répondre...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

pierre3401

unread,
Jan 17, 2012, 2:54:35 AM1/17/12
to
Bonjour,

Je dois avouer que cet article ma très bien servi, un grand merci !

J'ai à mon tour une question: pour ma part, j'ai utilisé ce code pour créer une
serie de tâches successives pour un même projet, je reçois ainsi des rappels à
intervalles réguliers entre la date de début de mon projet et sa date de
clôture.
Mon problème, est que j'ai une dizaine de projets en gestion, et je dois donc
créer des folders au sein de Task, existe-t"il un code qui me permettrais de
créer un nouveau folder pour ensuite y rassembler toutes les tâches créées par
la macro ?

Merci d'avance

DanielCo

unread,
Jan 17, 2012, 3:32:46 PM1/17/12
to
Bonjour,
Peut-être ce code, en changeant l'adresse mail et le nom du
sous-dossier :
Sub AjoutTache()
Dim olApp As New Outlook.Application
Dim ObjTask As TaskItem, c As Range
Dim Rg As Range, objNS As Namespace, objFolder As Folder
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set objFolder =
objNS.Folders("m...@free.fr").Folders("Tâches").Folders("test")
Set ObjTask = olApp.CreateItem(olTaskItem)
With ObjTask
txt = "toto"
.Subject = txt
.ReminderTime = Sheets("Feuil2").Cells(1, 1) +
TimeValue("08:00:00")
.ReminderSet = True
.Close olSave
.Move objFolder
End With
Set ObjTask = Nothing
Set olApp = Nothing
End Sub

Cordialement.
Daniel
0 new messages