Besoin de récupérer une vue complète d’un calendrier d’équipe Teams dans Excel ? L’interface n’exporte que quelques semaines, mais plusieurs méthodes – manuelles ou automatisées – permettent d’obtenir la totalité des événements et de contourner les limites d’Outlook et de Teams.
Pourquoi l’export « complet » d’un calendrier Teams est-il complexe ?
Contrairement à un calendrier personnel, le calendrier d’équipe (ou calendrier de canal) est stocké dans la boîte aux lettres du groupe Microsoft 365. Les assistants d’export classiques d’Outlook n’y sont pas directement exposés ; de plus, la mise en cache côté client se limite par défaut :
- aux événements des 6 derniers mois ;
- et des 12 mois à venir.
Il faut donc soit déplacer temporairement le calendrier dans un dossier personnel pour profiter de la fonction « Exporter vers un fichier », soit interroger le service Exchange/Graph via un script ou un flux Power Automate.
Prérequis et bonnes pratiques avant de commencer
- Outlook classique pour Windows : la commande Copier le calendrier n’est plus disponible dans le nouvel Outlook (Monarch). Passez en version classique le temps de l’opération (Fichier > Options > Retourner à l’Outlook classique).
- Accès propriétaire ou membre au groupe Teams – sans quoi vous ne verrez qu’une partie des événements.
- Espace disque : l’export complet en CSV d’un calendrier actif sur plusieurs années peut représenter plusieurs Mo.
- Fuseau horaire : Excel importe tel quel l’horodatage. Vérifiez que celui-ci correspond à votre zone avant d’analyser les données.
Méthodes manuelles pas à pas
Méthode A : copier le calendrier dans son espace personnel puis exporter en CSV
Cette technique est la plus fiable pour conserver la mise en forme (sujet, emplacement, participants, etc.) et pour dépasser la fenêtre de quelques semaines affichée dans Teams.
- Ouvrez Outlook classique et affichez la liste des calendriers.
- Cliquez sur le calendrier du groupe concerné.
- Dans le ruban, activez la Vue Liste (Affichage > Changer de vue > Liste). Tous les événements s’affichent sous forme tabulaire.
- Cliquez droit sur le nom du calendrier dans le volet de navigation → Copier le calendrier.
- Sélectionnez un dossier de votre section Calendriers (par exemple Calendrier ou Archive) pour coller la copie.
- Une fois la copie terminée, ouvrez Fichier > Ouvrir et exporter > Importer/Exporter.
- Choisissez Exporter vers un fichier → Valeurs séparées par des virgules (CSV) → sélectionnez la copie du calendrier.
- Enregistrez le fichier, puis ouvrez-le dans Excel ; chaque rendez‑vous correspond à une ligne.
Conseils de dépannage
- Si le bouton Copier le calendrier est grisé, vérifiez que vous êtes bien en Vue Liste et que le calendrier est déplié dans le volet gauche.
- Pour éviter les doublons : une fois l’export terminé, supprimez la copie locale du calendrier.
Nettoyer le CSV dans Excel
La première ligne de l’export contient les en-têtes (Subject, Start Date, End Date, All Day Event, etc.). Avant d’analyser le contenu :
- Formatez les colonnes Start Date et End Date en Date & Heure.
- Filtrez la colonne All Day Event pour isoler les événements de plusieurs jours.
- Supprimez les colonnes vides (Busy Status, Importance…) si elles ne sont pas utiles.
Méthode B : copier‑coller direct depuis la vue Liste
Plus rapide – aucun assistant n’est nécessaire – mais le nettoyage est manuel.
- Même préparation : Outlook classique + Vue Liste sur le calendrier de groupe.
- Appuyez sur Ctrl + A pour tout sélectionner, puis Ctrl + C.
- Ouvrez Excel (ou Notepad) et collez (Ctrl + V). Les colonnes sont séparées par des tabulations.
- Dans Excel, utilisez Données > Convertir pour définir le séparateur et transformer les tabs en colonnes.
Quand privilégier cette méthode ?
Pour un besoin ponctuel ou lorsque le calendrier contient moins de quelques milliers de lignes. Au‑delà, le presse‑papier de Windows peut saturer.
Tableau comparatif des deux approches
Approche | Étapes clés | Avantages | Limites |
---|---|---|---|
A. Copier + Exporter CSV | Instance Outlook classique → Vue Liste → Copier le calendrier → Coller dans Calendriers personnels → Assistant Export (CSV). | Export complet, colonnes propres, aucun filtrage perdu. | Indisponible dans le nouvel Outlook ; contourne seulement la limite de visibilité côté client, pas la politique de rétention serveur. |
B. Copier‑coller depuis Vue Liste | Vue Liste → Ctrl A/Ctrl C → coller dans Excel → convertisseur de données. | Méthode éclair, aucun fichier temporaire, reste compatible Nouvel Outlook (la Vue Liste y revient fin 2025). | Colonnes mélangées, nettoyage manuel, risque de perte de formats (All Day, fuseau, récurrence). |
Automatiser l’export pour des mises à jour récurrentes
Option 1 : Power Automate (sans code)
Power Automate permet de déclencher un flux qui lit les événements Exchange/Graph et alimente un classeur Excel sur OneDrive ou SharePoint.
- Déclencheur : Planifié – Récurrence (par ex. chaque nuit).
- Action 1 : Office 365 Groups / Get calendar view of events.
Champ Group id : renseignez le GUID du groupe Teams.
Définissez une fenêtre Start Time/End Time sur 365 jours. - Action 2 : Apply to each → Add a row into a table (Excel Online).
- Action 3 (option) : déplacez ou archivez les éléments déjà exportés.
Le flux crée (ou met à jour) un fichier .xlsx contenant Nom, Heure de début, Heure de fin, Catégorie, Participants, etc. On obtient ainsi un export automatisé et journalisé.
Option 2 : Microsoft Graph (PowerShell/Python)
Pour un contrôle total sur la plage de dates, les colonnes et les performances, script Graph API :
# Exemple PowerShell avec MSAL.PS (v1.4+)
$TenantId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$ClientId = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
$GroupId = "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"
$Token = Get-MsalToken -TenantId $TenantId -ClientId $ClientId -ClientSecret (Get-Content .\secret.txt)
$Headers = @{Authorization = "Bearer $($Token.AccessToken)"}
$Start = (Get-Date).AddYears(-1).ToString("o")
$End = (Get-Date).AddYears(1).ToString("o")
$Url = "https://graph.microsoft.com/v1.0/groups/$GroupId/calendarView?startDateTime=$Start&endDateTime=$End"
$Events = Invoke-RestMethod -Uri $Url -Headers $Headers -Method Get
$Events.value | Export-Csv ".\CalendrierEquipe.csv" -NoTypeInformation -Encoding UTF8
Et en Python (requête paginée) :
import requests, csv, os, msal, datetime as dt
app = msal.ConfidentialClientApplication(
client_id = os.environ["CLIENT_ID"],
authority = f"https://login.microsoftonline.com/{os.environ['TENANT_ID']}",
client_credential = os.environ["SECRET"]
)
token = app.acquire_token_for_client(scopes=["https://graph.microsoft.com/.default"])
headers = {"Authorization": "Bearer " + token["access_token"]}
start = (dt.datetime.utcnow() - dt.timedelta(days=365)).isoformat() + "Z"
end = (dt.datetime.utcnow() + dt.timedelta(days=365)).isoformat() + "Z"
url = f"https://graph.microsoft.com/v1.0/groups/{os.environ['GROUP_ID']}/calendarView"
params = {"startDateTime": start, "endDateTime": end}
rows = []
while url:
resp = requests.get(url, headers=headers, params=params).json()
rows += resp["value"]
url = resp.get("@odata.nextLink")
with open("CalendrierEquipe.csv", "w", newline="", encoding="utf-8") as f:
fields = ["subject", "start", "end", "location", "organizer"]
writer = csv.DictWriter(f, fieldnames=fields)
writer.writeheader()
for ev in rows:
writer.writerow({
"subject": ev["subject"],
"start": ev["start"]["dateTime"],
"end": ev["end"]["dateTime"],
"location": ev["location"]["displayName"],
"organizer": ev["organizer"]["emailAddress"]["name"]
})
Avantages de l’API Graph
- Passe outre la limitation du cache DAO/Outlook ;
- Supporte la pagination (2 000 événements par page) ;
- Peut extraire des custom fields (importance, bodyPreview…).
Comprendre la rétention Exchange Online
Le comportement par défaut (retention policy) est fixé au niveau du client Outlook (cache OST) : ± 1 an. Le serveur, lui, conserve l’intégralité tant que vous n’appliquez pas d’archivage automatique. Si vos scripts Graph renvoient moins d’événements que prévu :
- Vérifiez qu’aucune politique de rétention n’applique une suppression/archivage après X jours (Centre de conformité).
- Augmentez la plage startDateTime/endDateTime ; Graph coupe silencieusement au bout de 5 ans.
- Assurez‑vous d’utiliser un compte disposant d’un rôle de lecture sur la boîte aux lettres du groupe.
Questions fréquentes (FAQ)
Comment retrouver l’ID du groupe ?
Dans Teams : clic droit sur le nom du canal → Obtenir le lien vers le canal. Le GUID du groupe figure après /group/
.
Les occurrences d’une réunion périodique apparaissent‑elles séparément ?
Oui. Chaque occurrence est une ligne ; la colonne SeriesId permet de regrouper.
Puis‑je exporter vers Google Sheets plutôt qu’Excel ?
Via Power Automate, remplacez l’action Excel par Google Sheets / Add row. Avec Graph + Python, utilisez l’API Sheets après conversion CSV.
Qu’en est‑il des pièces jointes ?
Ni le CSV d’Outlook, ni Graph n’exportent par défaut les pièces jointes. Il faut récupérer chaque /attachments
pour chaque eventId
.
La vue Liste a disparu dans ma version d’Outlook Windows – que faire ?
Assurez‑vous d’être en canal Production (v. 2408+) ; sinon optez pour OWA, qui a réintroduit une Table view similaire en août 2025.
Conclusion
Teams ne propose toujours pas, en 2025, d’export « toute l’année » en un clic pour les calendriers de groupe. Les deux méthodes manuelles détaillées ci‑dessus restent les plus rapides pour un besoin unique ; dès qu’il faut répéter la tâche, l’automatisation via Power Automate ou Graph est incontournable. Choisissez l’approche qui équilibre simplicité, fréquence et volume des données – et souvenez‑vous de vérifier la rétention Exchange afin d’obtenir l’historique complet.