Rendez-vous dans un sous calendrier Outlook

DanPhenix Messages postés 4 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 23 novembre 2009 - 16 nov. 2009 à 16:38
DanPhenix Messages postés 4 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 23 novembre 2009 - 23 nov. 2009 à 16:34
Bonjour,

Cela fait des semaines (merci kro$oft, et cela ne risque pas de changer depuis le temps) que je recherche des infos pour créer des rendez-vous dans un ‘sous-calendrier’ d’Outlook (par exemple ‘MonCalendrier’) que j’ai précédemment créé.

J’ai bien vu un code en VB, mais ne vois pas comment y faire en C#.

Le code VB trouvé :
Public Function CreerRDV(Deb As String, Duree As Integer, Sujet As String, Corps As String, Salle As Integer)
      
    On Error GoTo AddAppt_Err
        
    Dim outobj As Outlook.Application
    Dim outappt As Outlook.AppointmentItem
    Dim MyCalendar As Outlook.Items
    
    Set outobj = CreateObject("outlook.application")
    Set MyCalendar = 

outobj.GetNamespace("MAPI").GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders.Item(8).Folders.Item(Sa

lle).Items
    'MsgBox outobj.GetNamespace("MAPI").GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders.Item(8).Folders.Item(1)
    
    Rem IL FAUDRAIT AUSSI VERIFIER SI IL N'Y A PAS DEJA UN RENDEZ-VOUS
    
    'Ajout au calendrier d'un nouveau "Rendez-Vous"
    Set outappt = MyCalendar.Add(olAppointmentItem)
    With outappt
            .Start = Deb 'Debut de la reservation
            .DURATION = Duree 'En minute
            .SUBJECT = Sujet 'Le sujet
            .BODY = Corps 'Le texte de la reservation
            .Location = "" 'Emplacement
            .AllDayEvent = False ' Toute la journée oui/non
            .ReminderSet = False ' S'il y a un rappel
            .Save
    End With
    Set outobj = Nothing ' Retire de la mémoire les objets créer
    CreerRDV = True
    Exit Function
  
AddAppt_Err:
        MsgBox "Error " & Err.Number & vbCrLf & Err.Description
        CreerRDV = False
    Exit Function

End Function


C’est le

“Set MyCalendar = outobj.GetNamespace("MAPI").GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders.Item(8).Folders.Item(Salle).Items”


Et le
Set outappt = MyCalendar.Add(olAppointmentItem)

Que je n’arrive pas en transposer.

Merci d'avance

Daniel

4 réponses

PROTEUS91 Messages postés 156 Date d'inscription mardi 4 novembre 2003 Statut Membre Dernière intervention 28 décembre 2010
16 nov. 2009 à 20:35
Bien le bonjour a toi, je viens de me trouver une nouvelle fonction Traducteur :p ^^

Alors en 1 tu declares tes objets :

        
Microsoft.Office.Interop.Outlook.Application OutLookApplication;
Microsoft.Office.Interop.Outlook.AppointmentItem OutLookAppointMent;
Microsoft.Office.Interop.Outlook.Items MyCalendar;


Ensuite tu les affectes :

OutLookApplication = new Microsoft.Office.Interop.Outlook.Application();
MyCalendar = OutLookApplication.GetNamespace("MAPI").GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders).Folders[8].Folders["salle"].Items;


Et en dernier tu crées ton rendez vous.

        
        private void CreationRendezVous()
        {
            OutLookAppointMent = MyCalendar.Add(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem);
            OutLookAppointMent.Start = "Debut";
            OutLookAppointMent.Duration = "Duree";
            OutLookAppointMent.Subject = "Sujet";
            OutLookAppointMent.Body = "Body";
            OutLookAppointMent.Location = "Location";
            OutLookAppointMent.AllDayEvent = false;
            OutLookAppointMent.ReminderSet = false;
            OutLookAppointMent.Save();
        }


Je te laisse remplacer les elements entre "" par les elements qui vont bien. Mais je pense qu'en gros ca doit etre ca :)

J'ai pas tester mais normalement ca devrai marcher :)

A pelluche :)

PROTEUS
0
DanPhenix Messages postés 4 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 23 novembre 2009
17 nov. 2009 à 14:27
Grand merci Proteus,

je vais essayer.

Daniel
0
DanPhenix Messages postés 4 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 23 novembre 2009
23 nov. 2009 à 16:29
En fait, j'étais en C++ et non en C# - on s'y perd entre tous les langages que l'on doit maintenant connaître...).

Et en C++, j'en suis arrivé à peu près au même point:

CApplication olApp;
   COleException e;
   if(!olApp.CreateDispatch(_T("Outlook.Application"), &e)) {
      CString str;
  str="CreateDispatch() failed ";
      AfxMessageBox(str, MB_SETFOREGROUND);
      return;
   }

   // Logon. 
CNameSpace olNs(olApp.GetNamespace(_T("MAPI")));
   COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
   olNs.Logon(covOptional, covOptional, covOptional, covOptional);



CMAPIFolder oFolder = olNs.GetDefaultFolder(9);

CItems myItems = oFolder.get_Items();
CItems myItems2 = myItems.GetNext();
CMAPIFolder oFolder2 = myItems.GetNext();
CItems MyCalendrier = oFolder2.get_Items();

CAppointmentItem olAppt = MyCalendrier.Add((CAppointmentItem*)olApp.CreateItem(1));



Evidemment, le "MyCalendrier.Add((CAppointmentItem)olApp.CreateItem(1));" il ne l'accepte pas, et je tourne en rond.

Je veux donc atteindre le 3eme calendrier pour y introduire un Rdv.
La seule manière que j'ai trouvé jusqu'ici pour accéder à ce 3e calendrier, est d'utiliser 'GetNext()' deux fois à partir du calendrier principal.
Cela devrait marcher (!).

Mais après, comment faire un CAppointmentItem ?

On ne peut pas dire qu'il y ait beaucoup de doc en C++/Mfc.

Je tourne en rond là dessus depuis 2 semaines.
Que de temps perdu pour si peu !
On ne remerciera jamais assez Kro$oft pour ces temps perdus, où en fin de journée, on a une tête pleine de riens.
Enfin pas grand chose, et un bon mal de tête.
0
DanPhenix Messages postés 4 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 23 novembre 2009
23 nov. 2009 à 16:34
ps: je me suis trompé dans la retranscription dans une ligne :

CMAPIFolder oFolder2 = myItems2.GetNext();


'myItems2', et non 'myItems'.
0
Rejoignez-nous