- Reaction score
- 112
- EasyCred
- 3,814
Objectif
Créer une macro VBA Outlook qui exporte toutes les données d'un planning (calendrier), sélectionné vers une feuille Excel tout en permettant de choisir une période.
Avant d'exécuter ce code, assurez-vous d'avoir installé Excel sur votre système et que vous avez un accès approprié à Outlook via VBA.
Étapes pour créer la macro :
1. Ouvrez Outlook.
2. Appuyez sur `ALT + F11` pour ouvrir l'éditeur VBA.
3. Dans le menu, allez à `Insertion > Module` pour créer un nouveau module.
4. Copiez le code ci-dessous dans le module créé.
Code VBA :
[syntax=vbscript]Sub ExporterCalendrierVersExcel()
Dim olApp As Outlook.Application
Dim olNamespace As Outlook.Namespace
Dim olCalendar As Outlook.Folder
Dim olAppointment As Outlook.AppointmentItem
Dim olApptItems As Outlook.Items
Dim startDate As Date
Dim endDate As Date
Dim ws As Object
Dim i As Integer
' Initialiser Outlook
Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")
Set olCalendar = olNamespace.GetDefaultFolder(olFolderCalendar)
' Demander à l'utilisateur d'entrer la période
startDate = InputBox("Entrez la date de début (format JJ/MM/AAAA):", "Date de début")
endDate = InputBox("Entrez la date de fin (format JJ/MM/AAAA):", "Date de fin")
' Filtrer les éléments du calendrier selon la date sélectionnée
Set olApptItems = olCalendar.Items
olApptItems.Sort "[Start]"
olApptItems.IncludeRecurrences = True
' Créer une nouvelle feuille Excel
Set ws = CreateObject("Excel.Application")
ws.Visible = True
ws.Workbooks.Add
' En-têtes de colonnes
ws.Cells(1, 1).Value = "Titre"
ws.Cells(1, 2).Value = "Début"
ws.Cells(1, 3).Value = "Fin"
ws.Cells(1, 4).Value = "Lieu"
ws.Cells(1, 5).Value = "Description"
' Exporter les rendez-vous dans la feuille Excel
i = 2 ' Commencer à la deuxième ligne
For Each olAppointment In olApptItems
If olAppointment.Start >= startDate And olAppointment.Start <= endDate Then
ws.Cells(i, 1).Value = olAppointment.Subject
ws.Cells(i, 2).Value = olAppointment.Start
ws.Cells(i, 3).Value = olAppointment.End
ws.Cells(i, 4).Value = olAppointment.Location
ws.Cells(i, 5).Value = olAppointment.Body
i = i + 1
End If
Next olAppointment
' Formatage de la feuille Excel
ws.Columns("A:E").AutoFit
ws.Cells(1, 1).EntireRow.Font.Bold = True
ws.Cells(1, 1).AutoFilter
' Nettoyer
Set olAppointment = Nothing
Set olApptItems = Nothing
Set olCalendar = Nothing
Set olNamespace = Nothing
Set olApp = Nothing
End Sub[syntax]
Comment utiliser cette macro :
1. Après avoir collé le code, fermez l'éditeur VBA.
2. De retour dans Outlook, allez dans l'onglet "Développeur", puis cliquez sur "Macros".
3. Sélectionnez `ExporterCalendrierVersExcel` dans la liste et cliquez sur "Exécuter".
4. Suivez les instructions pour saisir la date de début et la date de fin.
5. Les données seront exportées vers une nouvelle feuille Excel.
Remarques :
- Assurez-vous d'avoir les permissions nécessaires pour accéder aux données de calendrier.
- Le format des dates doit être respecté (JJ/MM/AAAA) pour que la fonction `InputBox` fonctionne correctement.
- Si votre Outlook est configuré dans une autre langue ou paramètre de région, vérifiez que les formats de date et autres sont appropriés à votre configuration.
Enjoy Coding
Créer une macro VBA Outlook qui exporte toutes les données d'un planning (calendrier), sélectionné vers une feuille Excel tout en permettant de choisir une période.
Avant d'exécuter ce code, assurez-vous d'avoir installé Excel sur votre système et que vous avez un accès approprié à Outlook via VBA.
Étapes pour créer la macro :
1. Ouvrez Outlook.
2. Appuyez sur `ALT + F11` pour ouvrir l'éditeur VBA.
3. Dans le menu, allez à `Insertion > Module` pour créer un nouveau module.
4. Copiez le code ci-dessous dans le module créé.
Code VBA :
[syntax=vbscript]Sub ExporterCalendrierVersExcel()
Dim olApp As Outlook.Application
Dim olNamespace As Outlook.Namespace
Dim olCalendar As Outlook.Folder
Dim olAppointment As Outlook.AppointmentItem
Dim olApptItems As Outlook.Items
Dim startDate As Date
Dim endDate As Date
Dim ws As Object
Dim i As Integer
' Initialiser Outlook
Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")
Set olCalendar = olNamespace.GetDefaultFolder(olFolderCalendar)
' Demander à l'utilisateur d'entrer la période
startDate = InputBox("Entrez la date de début (format JJ/MM/AAAA):", "Date de début")
endDate = InputBox("Entrez la date de fin (format JJ/MM/AAAA):", "Date de fin")
' Filtrer les éléments du calendrier selon la date sélectionnée
Set olApptItems = olCalendar.Items
olApptItems.Sort "[Start]"
olApptItems.IncludeRecurrences = True
' Créer une nouvelle feuille Excel
Set ws = CreateObject("Excel.Application")
ws.Visible = True
ws.Workbooks.Add
' En-têtes de colonnes
ws.Cells(1, 1).Value = "Titre"
ws.Cells(1, 2).Value = "Début"
ws.Cells(1, 3).Value = "Fin"
ws.Cells(1, 4).Value = "Lieu"
ws.Cells(1, 5).Value = "Description"
' Exporter les rendez-vous dans la feuille Excel
i = 2 ' Commencer à la deuxième ligne
For Each olAppointment In olApptItems
If olAppointment.Start >= startDate And olAppointment.Start <= endDate Then
ws.Cells(i, 1).Value = olAppointment.Subject
ws.Cells(i, 2).Value = olAppointment.Start
ws.Cells(i, 3).Value = olAppointment.End
ws.Cells(i, 4).Value = olAppointment.Location
ws.Cells(i, 5).Value = olAppointment.Body
i = i + 1
End If
Next olAppointment
' Formatage de la feuille Excel
ws.Columns("A:E").AutoFit
ws.Cells(1, 1).EntireRow.Font.Bold = True
ws.Cells(1, 1).AutoFilter
' Nettoyer
Set olAppointment = Nothing
Set olApptItems = Nothing
Set olCalendar = Nothing
Set olNamespace = Nothing
Set olApp = Nothing
End Sub[syntax]
Comment utiliser cette macro :
1. Après avoir collé le code, fermez l'éditeur VBA.
2. De retour dans Outlook, allez dans l'onglet "Développeur", puis cliquez sur "Macros".
3. Sélectionnez `ExporterCalendrierVersExcel` dans la liste et cliquez sur "Exécuter".
4. Suivez les instructions pour saisir la date de début et la date de fin.
5. Les données seront exportées vers une nouvelle feuille Excel.
Remarques :
- Assurez-vous d'avoir les permissions nécessaires pour accéder aux données de calendrier.
- Le format des dates doit être respecté (JJ/MM/AAAA) pour que la fonction `InputBox` fonctionne correctement.
- Si votre Outlook est configuré dans une autre langue ou paramètre de région, vérifiez que les formats de date et autres sont appropriés à votre configuration.
Enjoy Coding