excel vers calendrier outlook

YannC.

XLDnaute Occasionnel
Bonjour à tous,

Suite à votre aide et à mes recherches, j'ai réussi à faire un code complet qui permet d'envoyer des informations dans un calendrier perso d'outlook, en évitant les doublons.

Voici le code :
Private Sub calendrier_Click()
Dim DateDebut As String
Dim OutlItems As Outlook.Items
Dim OutlAppointment As Outlook.AppointmentItem
Dim myOlApp As New Outlook.Application
Dim MyCalendar As Outlook.Items
Dim MyItem As Outlook.AppointmentItem
Dim myNamespace As Outlook.Namespace
Dim Cell As Range
Dim cal As String

'plage de donnée
cal = Sheets("Menu").Range("P3")
For Each Cell In Sheets(cal).Range("E2:E60")
'fin de plage de donnée
If Cell <> "" Then 'recherche dans la plage si il existe des données à inscrire
DateDebut = Cell.Offset(0, -2) & " " & Cell.Offset(0, -1) 'date pour vérification de doublons
'verifie s'il y a des doublons
On Error Resume Next
Set OutlAppointment = OutlItems.Find("[Start] = '" & DateDebut & "'")
On Error GoTo 0
'fin vérification doublon

If OutlAppointment Is Nothing Then 's'il n'y a pas de doublons lancement du 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).Folders.Item(5).Folders.Item(1).Items 'choix calendrier perso
'Fin choix calendrier
Set MyItem = MyCalendar.Add(olAppointmentItem) 'Set MyItem = myOlApp.CreateItem(olAppointmentItem)
With MyItem 'inscription des données dans outlook
.MeetingStatus = olNonMeeting 'meeting
.ReminderSet = False ' S'il y a un rappel
.Subject = Cell.Offset(0, 2) 'Sujet
.start = Cell.Offset(0, -2) & " " & Cell.Offset(0, -1) ' Date plus heure. Attention : format mm/dd/yy
.AllDayEvent = False ' Toute la journée oui/non
.Duration = 105 'minutes"
.Location = Cell.Offset(0, 1) 'emplacement et body pour les commentaires ou sujets
.body = "N° : " & Cell.Offset(0, 0)
.Save
End With
Set MyItem = Nothing

Else: Next Cell 'si il y a deja un RDV alors retour vers date suivante
End If

Else: Cell = "" 'si la plage de donnée est vide on quitte le macro
Exit Sub

End If
Next Cell 'tant que les cellules de la plage est complete on relance le macro
End Sub

Mais voilà, depuis que j'ai rajouté la partie de code qui permet de choisir le calendrier, j'ai un probleme à la ligne
Else: Next Cell 'si il y a deja un RDV alors message
End If

Il me marque comme message
Next sans For
. Mais pourtant j'ai bien mon 'For en début de code.

Alors si vous pouviez m'aider à résoudre ce probleme, cela serait génial.

Merci

Le linuxien
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : excel vers calendrier outlook

bonjour

cette ligne n'est pas possible ******
Set MyItem = Nothing
Else: Next Cell 'si il y a deja un RDV alors message < ******
End If

en plus ça te fais deux next pour un for !

Code:
Private Sub calendrier_Click()
Dim DateDebut As String
Dim OutlItems As Outlook.Items
Dim OutlAppointment As Outlook.AppointmentItem
Dim myOlApp As New Outlook.Application
Dim MyCalendar As Outlook.Items
Dim MyItem As Outlook.AppointmentItem
Dim myNamespace As Outlook.Namespace
Dim Cell As Range
Dim cal As String

'plage de donnée
cal = Sheets("Menu").Range("P3")
For Each Cell In Sheets(cal).Range("E2:E60")
  'fin de plage de donnée
  If Cell <> "" Then 'recherche dans la plage si il existe des données à inscrire
     DateDebut = Cell.Offset(0, -2) & " " & Cell.Offset(0, -1) 'date pour vérification de doublons
     'verifie s'il y a des doublons
     On Error Resume Next
     Set OutlAppointment = OutlItems.Find("[Start] = '" & DateDebut & "'")
     On Error GoTo 0
     'fin vérification doublon

     If OutlAppointment Is Nothing Then 's'il n'y a pas de doublons lancement du 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).Folders.Item(5).Folders.Item(1).Items 'choix calendrier perso
        'Fin choix calendrier
        Set MyItem = MyCalendar.Add(olAppointmentItem) 'Set MyItem = myOlApp.CreateItem(olAppointmentItem)
        With MyItem 'inscription des données dans outlook
        .MeetingStatus = olNonMeeting 'meeting
        .ReminderSet = False ' S'il y a un rappel
        .Subject = Cell.Offset(0, 2) 'Sujet
        .Start = Cell.Offset(0, -2) & " " & Cell.Offset(0, -1) ' Date plus heure. Attention : format mm/dd/yy
        .AllDayEvent = False ' Toute la journée oui/non
        .Duration = 105 'minutes"
        .Location = Cell.Offset(0, 1) 'emplacement et body pour les commentaires ou sujets
        .body = "N° : " & Cell.Offset(0, 0)
        .Save
        End With
        Set MyItem = Nothing
     Else
        '****** TU METS alors message !? POURQUOI CE NEXT INUTILE !? ******
        'Next Cell 'si il y a deja un RDV alors message
     End If
  Else
     Cell = "" 'si la plage de donnée est vide on quitte le macro
     Exit Sub
  End If
Next Cell 'tant que les cellules de la plage est complete on relance le macro
End Sub
 
Dernière édition:

YannC.

XLDnaute Occasionnel
Re : excel vers calendrier outlook

Merci pour ta réponse Roland_M,


Else
'****** TU METS alors message !? POURQUOI CE NEXT INUTILE !? ******
'Next Cell 'si il y a deja un RDV alors message
End If
Else
Cell = "" 'si la plage de donnée est vide on quitte le macro
Exit Sub
End If
Next Cell 'tant que les cellules de la plage est complete on relance le macro
End Sub]

Pour la ligne
Else
'****** TU METS alors message !? POURQUOI CE NEXT INUTILE !? ******
'Next Cell 'si il y a deja un RDV alors message
End If
J'ai mis alors message car au début pour teste je faisait apparaitre un message qui me disait qu'il y avait doublons, et il poursuivait ensuite sur le RDV suivant.
Donc maintenant que cela fonctionnait je voulais si doublons ne plus avoir de message mais le renvoyer au début pour qu'il continu avec les dates suivantes.

Mais existe t il un code autre que next pour le faire reparti vers le for lorsqu'il trouve un doublon.

Merci
 

Roland_M

XLDnaute Barbatruc
Re : excel vers calendrier outlook

re

tu peux, pour faire simple, le diriger sur le next ! exemple à cet endroit <******

Code:
        Set MyItem = Nothing
     Else
        Goto Passe'< ****** RAJOUTE CECI
     End If
  Else
     Cell = "" 'si la plage de donnée est vide on quitte le macro
     Exit Sub
  End If
Passe: '< ****** RAJOUTE CECI
Next Cell 'tant que les cellules de la plage est complete on relance le macro
End Sub
 

YannC.

XLDnaute Occasionnel
Re : excel vers calendrier outlook

Merci Roland_M,

Effectivement cela fonctionne parfaitement.

Je met la pièce jointe completement fonctionnelle pour ceux qui sont interressé.

Encore merci et bonne journée

Le linuxien
 

Pièces jointes

  • calendrier.xlsm
    24.7 KB · Affichages: 519
  • calendrier.xlsm
    24.7 KB · Affichages: 459
  • calendrier.xlsm
    24.7 KB · Affichages: 459
  • calendrier.zip
    16.1 KB · Affichages: 223
  • calendrier.zip
    16.1 KB · Affichages: 236
  • calendrier.zip
    16.1 KB · Affichages: 244

julienplan

XLDnaute Nouveau
Re : excel vers calendrier outlook

super !

Voilà je ne comprend pas pourquoi il ne fonctionne pas,Est-ce que je l'ai mal installé ?
J'ai copié/collé le calendrier sur le bureau, résultat quand j'appuis sur le bouton dans le menu:"Problème de compilation.Projet ou bibliothèque introuvable". est-ce un problème de version excel ou version outlook? il semble qu'il ne reconnaisse pas certaines références.
Doit-on installer le code dans outlook ou bien importer le fichier dans outlook? J'ai essayé sans y parvenir.
je cherche ce type de programme depuis un moment, je suis sur qu'il ne me manque pas grand chose pour qu'il fonctionne.merci davance pour votre aide:)
 

YannC.

XLDnaute Occasionnel
Re : excel vers calendrier outlook

Bonjour Julien,

Pour le 'référence manquante' c'est normale. Dans les références tu devrais avoir ce qui est afficher dans la capture d'ecran en P.J.

Sinon, selectionne deja tous ce qui appartient à outlook.

Tiens moi alerté

Le linuxien

P.S. : Pour voir les références allez dans VB de Excel (Touche F11) -> Outils -> Référence.
 

Pièces jointes

  • sshot-1.jpg
    sshot-1.jpg
    34.6 KB · Affichages: 344

YannC.

XLDnaute Occasionnel
Re : excel vers calendrier outlook

Bonsoir Julienplan,

Effectivement en lisant ce que tu viens te marquer je me suis rappelé d'un détails.

Regarde dans des références si 'Microsoft Outlook 11 Object library' est bien coché. Il faut que cette réf. corresponde exactement à ta version d'outlook.

@+
 

jeanpierre

Nous a quitté
Repose en paix
Re : excel vers calendrier outlook

Bonjour julienplan, lelinuxien,

Sous Outlook, tu dois avoir un point d'intérrogation "?", clic et de là, tu dois avoir "A propos de outlook", tu vas avoir la version.

Cela fera-t'il avancer la chose ?

Bonne fin d'après-midi.

Jean-Pierre
 

Discussions similaires

Réponses
49
Affichages
986
Réponses
1
Affichages
384

Membres actuellement en ligne

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 107
dernier inscrit
cdel