Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
'Déclarations des variables et objets
Public objApply As Outlook.Application
Public objNameSpace As Outlook.NameSpace
Public objFolder As Outlook.MAPIFolder
 
'flux texte qui sera recopié dans le fichier excel
'correspond à une ligne dans excel
Public strStream As String
 
'fichier en sortie, lisible par excel (séparation par point virgule)
Public objFSO As New Scripting.FileSystemObject
Public fsoFichier As Scripting.TextStream
 
' objet dans le calendrier : rendez-vous ou réunion
Public objCalendrier As Outlook.AppointmentItem
 
'permet de récupérer les propriétés personnelles rajoutées dans le formulaire créé spécialement pour ce projet
Public unobjet As Outlook.UserProperty
Public uneActivite As Outlook.UserProperty
 
'entier pour "compter" les éléments dans le calendrier
Public intNbr As Integer
 
'plage à traiter
Public Datedebut As Variant
Public datefin As Variant
 
Public dateDEB As Date
Public dateFN As Date
 
Sub Export_CalendrierCSV()
'---------------------------------------------------------------------------------------
' Procédure : Export_CalendrierCSV
' Auteur    :
' Date      : 16/06/2009
' Détail    : Permet d'exporter le calendrier sous forme CSV (séparation avec des point virgule)
'---------------------------------------------------------------------------------------
'
 
' dates limites pour la reprise des données
Datedebut = InputBox(" DATE DE DEBUT ? ", _
    "date de début", DateAdd("m", -1, Date))
 
'contrôle de la saisie des dates (bon format et renseignée)
If Not (TestValidDate(Datedebut)) Then
    MsgBox "traitement non effectué, date invalide, veuillez recommencer"
    Exit Sub
Else
'    dateDEB = DateAdd("d", -1, Datedebut)
    dateDEB = Datedebut
End If
 
 
datefin = InputBox("DATE DE FIN ? ", _
    "date de fin", Date)
 
'contrôle de la saisie des dates (bon format et renseignée)
If Not (TestValidDate(datefin)) Then
    MsgBox "traitement non effectué, date invalide, veuillez recommencer"
    Exit Sub
Else
    dateFN = DateAdd("d", 1, datefin)
End If
 
 
 
'Instance et création du fichier texte
Set fsoFichier = objFSO.CreateTextFile("T:\SuiviActivite.csv", True)
 
' - Création des entêtes de colonnes.
strStream = "Ressource;Date;Duree;Sujet;Projet;activité projet;"
'Ecriture dans le fichier de l'entête
fsoFichier.WriteLine (strStream)
 
'Instance des objets Outlook
Set objApply = Outlook.Application
Set objNameSpace = objApply.GetNamespace("MAPI")
Set objFolder = objNameSpace.GetDefaultFolder(olFolderCalendar)
 
    Call TraitementRendezVousPlusPeriodiques
 
'Fermeture du fichier
fsoFichier.Close
'Message de fin d'export
MsgBox "Export terminé"
 
End Sub


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub TraitementRendezVousPlusPeriodiques()
 
    Dim myAppointments As Outlook.Items
 
    Set myAppointments = objNameSpace.GetDefaultFolder(olFolderCalendar).Items
    myAppointments.Sort "[Start]"
    myAppointments.IncludeRecurrences = True
    Set objCalendrier = myAppointments.Find("[Start] >= """ & dateDEB & """ and [Start] < """ & dateFN & """")
 
'   on exclut les congés pour le rapport d'activités
'    If InStr(1, objCalendrier.Categories, "Congé", vbTextCompare) = 0 Then
 
    While TypeName(objCalendrier) <> "Nothing"
        'si ce n'est pas un rendez-vous privé, on continue la sélection
        If objCalendrier.Sensitivity <> olPrivate Then
            Call ecr_fichier
        End If
        Set objCalendrier = myAppointments.FindNext
    Wend
 
End Sub


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Sub ecr_fichier()
    'récupération du propriétaire du calendrier
     strStream = objNameSpace.CurrentUser & ";"
        If objCalendrier.AllDayEvent = True Then
            'si sur 1 journée
            strStream = strStream & Format(objCalendrier.Start, "dd/mm/yyyy") & ";" & 8 & ";"
 
        Else
    'pas sur 1 journée
            strStream = strStream & Format(objCalendrier.Start, "dd/mm/yyyy") & ";" _
                        & objCalendrier.Duration / 60 & ";"
        End If
 
 
        strStream = strStream & objCalendrier.Subject & ";"
 
        Set unobjet = objCalendrier.UserProperties.Find("identifiant projet")
        If TypeName(unobjet) <> "Nothing" Then
           If unobjet.Value <> "" Then
                strStream = strStream & unobjet.Value & ";"
                Set uneActivite = objCalendrier.UserProperties.Find("activite projet")
                If TypeName(uneActivite) <> "Nothing" Then
                      strStream = strStream & uneActivite.Value & ";"
                Else
                    strStream = strStream & ";"
                End If
            End If
        End If
 
 
        Set unobjet = objCalendrier.UserProperties.Find("identifiant application")
        If TypeName(unobjet) <> "Nothing" Then
            If unobjet.Value <> "" Then
                strStream = strStream & unobjet.Value & ";"
                Set uneActivite = objCalendrier.UserProperties.Find("activite application")
                If TypeName(uneActivite) <> "Nothing" Then
                      strStream = strStream & uneActivite.Value & ";"
                Else
                    strStream = strStream & ";"
                End If
            End If
        End If
 
        Set unobjet = objCalendrier.UserProperties.Find("activite cyclique")
        If TypeName(unobjet) <> "Nothing" Then
            If unobjet.Value <> "" Then
                strStream = strStream & ";" & unobjet.Value & ";"
'        Else
'            strStream = strStream & ";;"
            End If
        End If
 
 
        'Ecriture dans le fichier
        fsoFichier.WriteLine (strStream)
        Set unobjet = Nothing
        Set uneActivite = Nothing
End Sub

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Function TestValidDate(ByVal DDay As Variant) As Boolean
If DDay <> "" Then
        If Not IsDate(DDay) Then
            MsgBox "La date saisie n'est pas valide"
            TestValidDate = False
        Else
            TestValidDate = True
        End If
Else
    TestValidDate = False
End If
End Function