Pres62
Messages postés23Date d'inscriptionvendredi 27 avril 2012StatutMembreDernière intervention 2 juin 2012
-
1 juin 2012 à 13:36
Utilisateur anonyme -
3 juin 2012 à 00:55
Bonjour à tous,
Voilà j'ai vraiment besoin de vous pour m'éclairer .
Je vous explique.
Je suis sur access et ce que j'aimerai c'est créer un rdv outlook depuis access.
J'ai un formulaire qui contient un numéro de convention (Me.N°) et un sous formulaire avec comme champ:
date formation
heure début matin
heure fin matin
heure début am
heure fin am
Ce que j'aimerai c'est que pour chaque date de la convention (une convention peut se faire sur plusieurs date...), un rdv se créé.
Je vous donne une exemple.
N° de la convention = 1000
1ère date :
date formation = 01/06/2012
heure début matin = 8:30
heure fin matin = 12:30
heure début am = 14:00
heure fin am = 17:00
2ème date :
date formation = 02/06/2012
heure début matin = 8:30
heure fin matin = 12:30
heure début am = 00:00
heure fin am = 00:00
A partir de cet exemple, j'aimerai que des rdv se créent sur outlook.
Il y aurait donc sur le calendrier 2 jours réservés (01/06/2012 et 02/06/2012) avec les bonnes horaires.
J'ai fais pas mal de recherches et je suis tombée sur Recordset (en esperant que ce soit la bonne formule.... )
J'ai déjà fais une grosse partie du code.
Seulement, quand je fais ça, il boucle à l'infini.
J'ai donc une infinité de rdv qui se créent et seulement pour la première date c'est à dire 01/06/2012.
Private Sub Commande66_Click()
Dim db As Database
Dim Rst As Dao.Recordset
Dim objOutlook As New Outlook.Application
Dim objOutlookAppt As Outlook.AppointmentItem
Dim oEmail As Outlook.MailItem
Dim HTM, HTAM, DM, DAM As Date
Dim sql As String
sql "SELECT [date formation] FROM [dates et horaires Convention] WHERE [dates et horaires Convention]![N° Convention] " & Me.N° & ""
Set db = CurrentDb
Set Rst = CurrentDb.OpenRecordset(sql)
While Not Rst.EOF
Set HFAM = Forms![Formulaire_Modification_Conventions].Form![SSF Dates et horaires formation]![Heure Fin AM]
Set HDAM = Forms![Formulaire_Modification_Conventions].Form![SSF Dates et horaires formation]![Heure Début AM]
Set HFM = Forms![Formulaire_Modification_Conventions].Form![SSF Dates et horaires formation]![Heure Fin Matin]
Set HDM = Forms![Formulaire_Modification_Conventions].Form![SSF Dates et horaires formation]![Heure Début Matin]
Set dte = Forms![Formulaire_Modification_Conventions].Form![SSF Dates et horaires formation]![Date Formation]
Set objOutlookAppt = objOutlook.CreateItem(olAppointmentItem)
Set oEmail = objOutlook.CreateItem(olMailItem)
With objOutlookAppt
.MeetingStatus = olMeeting
.Recipients.Add "John Doe"
If HDM = "00:00" Then
.Start = dte & " " & HDAM
.End = dte & " " & HFAM
Else
If HDAM = "00:00" Then
.Start = dte & " " & HDM
.End = dte & " " & HFM
Else
.Start = dte & " " & HDM
.End = dte & " " & HFAM
End If
End If
.Subject = Me.Formation & " " & Me.Formateur
.Body = "Test"
.ReminderSet = False
.BusyStatus = olOutOfOffice
.Display
.Save
.Send
End With
Set objOutlookAppt = Nothing
Set objOutlook = Nothing
Wend
Rst.Close
End Sub
Pres62
Messages postés23Date d'inscriptionvendredi 27 avril 2012StatutMembreDernière intervention 2 juin 2012 2 juin 2012 à 15:51
Bonjour,
Merci de ta réponse rapide :)
Oui après quelques recherches je m'en suis rendu compte.
Je n'ai plus de boucles à l'infini et le nombre de boucle équivaut bien au nombre de dates.
Par exemple si j'ai 3 dates, et bien il effectue bien 3 boucles, et donc créé bien 3 rdv.
Mais il y a toujours un bug...
En effet il créé bien 3 rdv mais pas pour chaque date.
Il créé 3 rdv mais à la première date soit 01/06/2012.
Voici donc mon nouveau code :
Dim db As Database
Dim Rst As Dao.Recordset
Dim objOutlook As New Outlook.Application
Dim objOutlookAppt As Outlook.AppointmentItem
Dim oEmail As Outlook.MailItem
Dim HTM, HTAM, DM, DAM As Date
Dim sql As String
sql "SELECT [date formation] FROM [dates et horaires Convention] WHERE [dates et horaires Convention]![N° Convention] " & Me.N° & ""
Set db = CurrentDb
Set Rst = CurrentDb.OpenRecordset(sql)
While Not Rst.EOF
Set HFAM = Forms![Formulaire_Modification_Conventions].Form![SSF Dates et horaires formation]![Heure Fin AM]
Set HDAM = Forms![Formulaire_Modification_Conventions].Form![SSF Dates et horaires formation]![Heure Début AM]
Set HFM = Forms![Formulaire_Modification_Conventions].Form![SSF Dates et horaires formation]![Heure Fin Matin]
Set HDM = Forms![Formulaire_Modification_Conventions].Form![SSF Dates et horaires formation]![Heure Début Matin]
Set dte = Forms![Formulaire_Modification_Conventions].Form![SSF Dates et horaires formation]![Date Formation]
Set objOutlookAppt = objOutlook.CreateItem(olAppointmentItem)
Set oEmail = objOutlook.CreateItem(olMailItem)
With objOutlookAppt
.MeetingStatus = olMeeting
.Recipients.Add "John Doe"
If HDM = "00:00" Then
.Start = dte & " " & HDAM
.End = dte & " " & HFAM
Else
If HDAM = "00:00" Then
.Start = dte & " " & HDM
.End = dte & " " & HFM
Else
.Start = dte & " " & HDM
.End = dte & " " & HFAM
End If
End If
.Subject = Me.Formation & " " & Me.Formateur
.Body = "Test"
.ReminderSet = False
.BusyStatus = olOutOfOffice
.Display
.Save
.Send
End With
rst.movenext
Wend
Rst.Close
Set objOutlookAppt = Nothing
Set objOutlook = Nothing
End Sub
Sais tu pourquoi les rdv ne se créent que sur la première date ?
Je ne sais pas. Je n'ai pas le contenu de tes tables sous les yeux.
Sers toi du debugger. Exécute ton projet en pas à pas (F8) pour observer le comportement de ton code.
Met des points d'arrêts (F9) pour arrêter à un endroit précis.
Observe le comportement des objets, des variables en baladant ta souris au dessus. Lis ensuite les valeurs des propriétés, des variables(en développant les petits +).
Déplace la position de lecture du code (en remontant la flèche jaune de gauche) pour réexécuter une portion de code déjà exécutée.
Place des espions pour poser des conditions.
Sers toi aussi de la très pratique fenêtyre d'exécution (CTRL+G) pour lire ou modifier directement des valeurs de variables en pas à pas.