Création rdv outlook via access

Pres62 Messages postés 23 Date d'inscription vendredi 27 avril 2012 Statut Membre Derniè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



Voici mon code.

Quelqu'un peut-il m'indiquer comment faire ????

Merci de votre aide.

3 réponses

Utilisateur anonyme
2 juin 2012 à 15:12
Bonjour,
Je ne vois aucun Rst.movenext dans ton code pour passer au suivant.
0
Pres62 Messages postés 23 Date d'inscription vendredi 27 avril 2012 Statut Membre Derniè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 ?

Merci de ton aide :)
0
Utilisateur anonyme
3 juin 2012 à 00:55
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.

A bientôt.
0
Rejoignez-nous