Deux soucis sur une exportation de date vers outlook (voir dernier post)

Abardothe

XLDnaute Nouveau
Bonjour (ou re-bonjour) tout le monde ! :D

J'ai créé un fichier excel qui me permet d'obtenir les dates de mes futurs échéances pour de la maintenance. Et je voudrais que les dates ainsi obtenues soient exporter vers excel où elles me créront un rendez vous (de 1h à 08h00 par exemple).

Pour être plus concis, je voudrais que les dates présentes dans la colonne H de mon fichier soient exporter vers outlook.

J'ai trouvé deux codes différents sur internet mais je n'arrive pas à les adapter à mon fichier et je ne les comprend pas vraiment. Est-ce que vous pourriez me les expliquer ou créer un nouveau code en me l'expliquant ? Je vous remercie d'avance pour l'aide que vous apporter à MA VIE ;)

1er code :
Code:
Sub NouveauRDV_Calendrier()
 'nécéssite d'activer la référence Microsoft Outlook 10.0 Object Library
 Dim myOlApp As New Outlook.Application
 Dim MyItem As Outlook.AppointmentItem
  
 Set MyItem = myOlApp.CreateItem(olAppointmentItem)
  
 With MyItem
     .MeetingStatus = olMeeting
     .Subject = "le forum xld"
     .Body = "...description ...."
     .Location = "sur le chat"
     .Start = #8/7/2006 9:30:00 PM#     ' Attention : format mois/jours/année
     .Duration = 30 'minutes
     .Categories = "Amis"
     .Save
 End With
  
 Set myOlApp = Nothing
 End Sub

2ème code :

Code:
Sub Outlook()
Dim myOlApp As New Outlook.Application
Dim myItem As Outlook.AppointmentItem
Dim Cell As Range
Dim myConflicts As Outlook.Conflicts
 
For Each Cell In Range("h8:b" & Cells(Rows.Count, 7).End(xlUp).Row)
Set myItem = myOlApp.CreateItem(olAppointmentItem)
 
With myItem
.MeetingStatus = olNonMeeting
.Subject = Cells(17, 9) & " - " & Cell.Value & " krad"
.Start = Cell.Offset(0, 6) 'Format(Cell.Offset(0, 6), "MM/DD/YYYY") ' Attention : format mm/dd/yy
.Duration = Hour(Cell.Offset(0, 8)) * 60 + Minute(Cell.Offset(0, 8)) 'minutes
.Location = "test"
.ReminderMinutesBeforeStart = 60
.Save
End With
Set myItem = Nothing
Next Cell
End Sub
 

Pièces jointes

  • Classeur1.xlsm
    21.5 KB · Affichages: 53
  • Classeur1.xlsm
    21.5 KB · Affichages: 58
  • Classeur1.xlsm
    21.5 KB · Affichages: 70
Dernière édition:

Abardothe

XLDnaute Nouveau
Re : Exporter rdv vers outlook 2010

J'ai pas précisé, mais cela serait bien si c'était exporté dans le calendrier appelé "maintenance" et avec cela un rappel se faisant x jours avant l'échéance.

Merci :D

EDIT : Après quelques essais, j'utilise maintenant la macro suivante :

Code:
Sub NouveauRDV_Calendrier()
 'nécéssite d'activer la référence Microsoft Outlook 10.0 Object Library
 Dim myOlApp As New Outlook.Application
 Dim MyItem As Outlook.AppointmentItem
 Dim Cell As Range
 
For Each Cell In Range("i5:i" & Cells(Rows.Count, 7).End(xlUp).Row)
 Set MyItem = myOlApp.CreateItem(olAppointmentItem)

 With MyItem
 .MeetingStatus = olNonMeeting
 .Subject = Cell
 .Start = Cell.Offset(5, 9) ' Attention : format mm/dd/yy
 .Duration = Cell.Offset(5, 10) 'minutes
 .Location = Cell.Offset(5, 2)
 .Save
 End With

 Set MyItem = Nothing
 Next Cell
 
End Sub

Le soucis c'est que cela me cré des rappels et non des rendez-vous et que cela cré des rendez vous là où les cases sont vides.. Sauriez-vous solutionner le soucis ?
 
Dernière édition:

Abardothe

XLDnaute Nouveau
Re : Exporter rdv vers outlook 2010

J'ai réussi à faire quelque chose de plutôt bien, voir pièce jointe (j'ai beaucoup modifié mon fichier pour m'adapter à une macro péché d'ici)

Mais j'ai deux soucis :

-quand je met une heure de rendez vous (ex : '"08:00") cela me fait un bug

-je ne sais pas comment spécifier un calendrier particulier, le sauriez-vous ?

le code utilisé :
Code:
Option Explicit

Sub AjoutRV()
  Dim DLig As Long, Lig As Long
  Dim OutObj As Outlook.Application
  Dim OutAppt As Outlook.AppointmentItem
  Dim DateRdv As Date, FlgRdv As Boolean

  ' Créer une instance d'Outlook
  Set OutObj = CreateObject("outlook.application")
  ' Avec la feuille
  With Sheets("Suivi")
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    ' Pour chaque ligne
    For Lig = 6 To DLig
      ' Vérifier si pas déjà fait
      If .Range("D" & Lig) <> "" Then
      Else
        FlgRdv = True
      End If
      ' Si le FLAG est à vrai on créé le RDV
      If FlgRdv Then
        DateRdv = Range("B" & Lig)
        Set OutAppt = OutObj.CreateItem(olAppointmentItem)
        With OutAppt
          .Subject = "Maintenance " & Sheets("Suivi").Range("A" & Lig) & " pour le suivi " & Sheets("Suivi").Range("C" & Lig)
          .Start = DateRdv
          .Duration = 60
          .ReminderSet = True
          .Save
        End With
        ' Créer le commentaire et inscrire Oui
        On Error Resume Next
        .Range("D" & Lig).Comment.Delete
        .Range("D" & Lig) = "Oui"
        On Error GoTo 0
      End If
    Next Lig
  End With
  Set OutAppt = Nothing
End Sub
 

Pièces jointes

  • Version finale.xlsm
    26.5 KB · Affichages: 45
  • Version finale.xlsm
    26.5 KB · Affichages: 63
  • Version finale.xlsm
    26.5 KB · Affichages: 54

Abardothe

XLDnaute Nouveau
Re : Deux soucis sur une exportation de date vers outlook (voir dernier post)

J'ai trouvé la solution de mon premier soucis, je devais mettre :

Code:
.Start = DateRdv & " 8:00 "
avec un espace

Mais je comprend pas comment il faut faire pour spécifier un calendrier particulier
 

Abardothe

XLDnaute Nouveau
Re : Deux soucis sur une exportation de date vers outlook (voir dernier post)

Reup,


J'ai vu qu'il fallait utiliser quelque chose de ce genre pour choisir le calendrier de destination :

Code:
'On choisi le calendrier
 Set myOlApp = CreateObject("Outlook.Application")
 'Concernant la ligne suivante après le ("MAPI")
 ' Folders.Item(1) : correspond au dossier Personnel
 ' Folders.Item(5) : correspond au dossier Calendrier standard
 ' Folders.Item(1) : correspond au sous calendrier, s'il y en a d'autre remplacer par le n° d'index...
 Set MyCalendar = myOlApp.GetNamespace("MAPI").Folders.Item(1).Folde rs.Item(5).Folders.Item(1).Items 'choix calendrier perso
 'Fin choix calendrier

Mais je ne comprend pas comment l'utiliser, vous pouvez m'aider ?
 

Abardothe

XLDnaute Nouveau
Re : Deux soucis sur une exportation de date vers outlook (voir dernier post)

Oui j'étais déjà tombé dessus, mais je n'arrivais pas à l'utiliser donc j'avais laissé tombé, je sais pas par quoi il faut remplacer le PCalendrier.

Merci de ton aide, je continuerai lundi, le WE on relâche tout :D
 
G

Guest

Guest
Re : Deux soucis sur une exportation de date vers outlook (voir dernier post)

Bonjour,


Chercher dans outlook l'emplacement de ton calendrier, par click-droit sur son nom puis 'propriétés'.

Dans l'exemple ci-dessous le calendrier est dans le dossier "Dossiers personnels".
Code:
Sub MonCalendrier()
    'Pas obligatoire Constante contenant le nom du calendrier
    Const strCalendrier As String = "Calendrier de Hasco" 'Nom du calendrier dans le dossier personnel
    
    Dim olns As Outlook.Namespace
    Dim MyCalendarFolder As Outlook.MAPIFolder
    
    'si outlook est référencé dans outils/référence
    'pas besoin de CreateObject, la ligne ci-dessous suffit à créer l'objet Outlook.Application
    Dim objOutlook As New Outlook.Application
    
    'initialisation du NameSpace
    Set olns = objOutlook.GetNamespace("MAPI")
    
    'Optention du calendrier en utilisant la constante (sinon mettre le nom du calendrier entre guillemets)
    Set MyCalendarFolder = olns.Folders("Dossiers personnels").Folders(strCalendrier)
    
    '--------------------------------------------------------------------------------
    '  TODO: Suite du travail sur l'objet MyCalendarFolder (Création de RDV etc.)
    '--------------------------------------------------------------------------------
    
    'Ne pas oublier de nettoyer les variables
    Set MyCalendarFolder = Nothing
    Set olns = Nothing
    Set objOutlook = Nothing
    
End Sub

Pour le TODO je pense que tu as tout ce dont tu as besoin.

Et petit plus pour lister les folders Outlook dans une feuille de calcul.
Attention, les variables objOutlook et olNs sont déplacées en tête de module
Ajouté: une macro d'initialisation de ces deux variables et une macro de nettoyage

Code:
 Option Explicit
'Référencer la librairie Outlook dans menu Outils/Référence
Dim objOutlook As Outlook.Application
Dim olNs As Outlook.Namespace
Sub initOutlook()
    Set objOutlook = New Outlook.Application
    Set olNs = objOutlook.GetNamespace("MAPI")
End Sub
Sub ListerFolders(Cellule As Range, Optional ParentFolders As Outlook.Folders)
 Dim Folder As Outlook.MAPIFolder
 
 If objOutlook Is Nothing Then initOutlook
 If ParentFolder Is Nothing Then Set ParentFolder = olNs.Folders
 
 For Each Folder In ParentFolder
    Cellule = Folder.FolderPath
    Set Cellule = Cellule.Offset(1)
    If Folder.Folders.Count > 0 Then ListerFolders Cellule, Folder.Folders
 Next
 nettoieOutlook
End Sub
Sub nettoieOutlook()
    Set olNs = nohting
    Set objOutlook= Nothing
End Sub

A+
 
Dernière modification par un modérateur:

Abardothe

XLDnaute Nouveau
Re : Deux soucis sur une exportation de date vers outlook (voir dernier post)

Bonjour,

je prend un exemple, avec un calendrier que j'ai créé sur mon ordi perso. (par contre j'ai outlook 2013 dessus, donc je sais pas si cela change). Le calendrier s'appel essai et est dans le groupe de calendrier "test". Et quand je fais clik-droit propriété, je trouve ceci :

\\nico***.piag****@cegetel.net\Calendrier (uniquement cet ordinateur)

Du coup je pense que l'emplacement du calendrier est "Calendrier" le code doit donc être écrit comme cela :
Code:
Sub MonCalendrier()
     'Pas obligatoire Constante contenant le nom du calendrier
     Const strCalendrier As String = "essai" 'Nom du calendrier dans le dossier personnel
     
     Dim olns As Outlook.Namespace
     Dim MyCalendarFolder As Outlook.MAPIFolder
     
     'si outlook est référencé dans outils/référence
     'pas besoin de CreateObject, la ligne ci-dessous suffit à créer l'objet Outlook.Application
     Dim objOutlook As New Outlook.Application
     
     'initialisation du NameSpace
     Set olns = objOutlook.GetNamespace("MAPI")
     
     'Optention du calendrier en utilisant la constante (sinon mettre le nom du calendrier entre guillemets)
     Set MyCalendarFolder = olns.Folders("Calendrier").Folders(strCalendrier)
     
     '--------------------------------------------------------------------------------
     '  TODO: Suite du travail sur l'objet MyCalendarFolder (Création de RDV etc.)
     '--------------------------------------------------------------------------------
     
     'Ne pas oublier de nettoyer les variables
     Set MyCalendarFolder = Nothing
     Set olns = Nothing
     Set objOutlook = Nothing
     
 End Sub
C'est bien cela ?

Et cela fait quoi si on ne nettoie pas les variable ?

Merci beaucoup et bonne soirée :D
 
G

Guest

Guest
Re : Deux soucis sur une exportation de date vers outlook (voir dernier post)

Re,

Non ton calendrier est dans

Set MyCalendarFolder = olns.Folders("nico***.piag****@cegetel.net").Folders("Calendrier (uniquement cet ordinateur)").folders("essai")

Il faut bien comprendre que Outlook est organisé hierarchiquement dans des Dossiers (folders) et que si tu as créé un calendrier nommé essai dans "Calendrier", essai est un sous dossier de "Calendrier"
La racine des dossiers commençe par "\\"

A+
 
Dernière modification par un modérateur:

Abardothe

XLDnaute Nouveau
Re : Deux soucis sur une exportation de date vers outlook (voir dernier post)

D'accord !
Merci beaucoup pour ton aide, normalement j'aurai tour ce qu'il faut. Je viens de voir que je peux pas le tester à la maison car les macros ne sont pas disponible sur Windows RT...
Donc je te mettrai un petit message si j'ai réussi lundi.

Encore un grand merci pour ton aide (très) précieuse.

Passe un bon WE.
A+
 
G

Guest

Guest
Re : Deux soucis sur une exportation de date vers outlook (voir dernier post)

Bonjour,

Dans le petit module de listage des dossiers OutLook donné plus haut j'ai laissé, quelque erreurs de nommage de variables en les adaptant à ta macro existante. voici donc corrigé:
Code:
Sub initOutlook()
    Set objOutlook = New Outlook.Application
    Set olNs = objOutlook.GetNamespace("MAPI")
End Sub
Sub ListerFolders(Cellule As Range, Optional ParentFolders As Outlook.Folders)
    Dim Folder As Outlook.MAPIFolder
    If objOutlook Is Nothing Then initOutlook
    If ParentFolders Is Nothing Then Set ParentFolders = olNs.Folders
    For Each Folder In ParentFolders
        Cellule = Folder.FolderPath
        Set Cellule = Cellule.Offset(1)
        If Folder.Folders.Count > 0 Then ListerFolders Cellule, Folder.Folders
    Next
    nettoieOutlook
End Sub
Sub nettoieOutlook()
    Set olNs = Nothing
    Set objOutlook = Nothing
End Sub

A+
 

Staple1600

XLDnaute Barbatruc
Re : Deux soucis sur une exportation de date vers outlook (voir dernier post)

Bonjour à tous

Juste de passage pour saluer Hasco
et pour découvrir que celui-ci est plutôt enclin à Ce lien n'existe plus ;)
Et il a raison le bougre (bien que par fainéantise je fasse le contraire)
 

Discussions similaires

Réponses
2
Affichages
110

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa