OneDrive/SharePoint : supprimer tout l’historique des versions d’un classeur Excel (en un clic + scripts)

Votre classeur Excel sur OneDrive/SharePoint a explosé en taille à cause de dizaines de milliers de versions ? Bonne nouvelle : vous pouvez supprimer tout l’historique en une seule opération, puis verrouiller la configuration pour éviter que cela ne se reproduise. Voici un guide complet, pas à pas, avec scripts.

Sommaire

Supprimer l’historique des versions d’un classeur Excel en une seule opération

Vue d’ensemble de la question

Un classeur stocké dans OneDrive ou SharePoint Online a accumulé ~20 000 versions et occupe des centaines de Go. L’objectif est de supprimer l’ensemble de l’historique des versions en un seul geste, sans avoir à effacer chaque version manuellement, puis d’empêcher la récidive.

Réponse & solutions (vue synthétique)

ObjectifMéthodeDétails pratiques
Supprimer toutes les versions d’un seul fichierInterface web OneDrive / SharePoint1) Sélectionnez le fichier.
2) Cliquez sur Historique des versions (menu ou clic droit).
3) Dans le panneau, cliquez sur Supprimer toutes les versions puis confirmez.
Résultat : tout l’historique est effacé, seule la version courante reste.
Traitement de plusieurs fichiersAutomatisation (scripts / flux)L’interface ne propose pas d’action « lot ». Pour une bibliothèque entière :
– Script PnP.PowerShell (cmdlet Remove-PnPFileVersion)
– SharePoint Online Management Shell (cmdlets SPO)
Microsoft Graph (énumération /versions) au sein d’un Power Automate ou d’une Logic Apps.
Prévenir le retour du problèmeParamétrage de la bibliothèqueBibliothèque → Paramètres de contrôle de version
– Fixez un nombre maximal de versions majeures (p. ex. 100).
– Éventuellement, limitez ou interdisez les versions mineures si elles ne sont pas nécessaires.
– Documentez et communiquez la politique aux équipes.
Scénario Power BI / Power AutomateConserver les liens tout en nettoyantL’option « Supprimer toutes les versions » ne modifie ni l’URL ni l’ID du fichier : vos flux, dataflows et rapports continuent de fonctionner.
Si vous repartez d’une copie « propre », dupliquez le classeur, mettez à jour les connexions, puis archivez l’original.

Procédure détaillée : supprimer toutes les versions d’un fichier depuis le Web

Dans OneDrive (professionnel)

  1. Ouvrez OneDrive dans votre navigateur et accédez au dossier du classeur.
  2. Sélectionnez le fichier Excel (ne l’ouvrez pas). Cliquez sur Historique des versions.
  3. Le panneau latéral affiche la liste des versions. Cliquez sur Supprimer toutes les versions, puis Confirmer.
  4. Patientez pendant le nettoyage. La taille affichée peut mettre un certain temps à se mettre à jour (voir Propagation du quota).

Dans une bibliothèque SharePoint

  1. Allez dans le site SharePoint → Bibliothèque de documents.
  2. Sélectionnez le fichier → menu Historique des versions.
  3. Dans le panneau, cliquez sur Supprimer toutes les versionsConfirmer.
  4. Vérifiez ensuite la corbeille du site si l’espace ne se libère pas immédiatement.

Important : si l’option n’apparaît pas, vérifiez que vous avez les droits Édition ou supérieurs, et qu’aucune étiquette de rétention, verrouillage de conservation (Litigation Hold) ou politique de rétention ne s’applique. Ces mécanismes peuvent bloquer la suppression des versions.

Automatiser la suppression pour plusieurs fichiers

Option 1 : PnP.PowerShell (recommandé)

Pré-requis : module PnP.PowerShell, permissions suffisantes sur le site, authentification interactive ou App-Only.

Exemple minimal : supprimer toutes les versions d’un fichier

# Connexion au site
Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/SiteA -Interactive

# Supprimer toutes les versions d'un fichier précis

Remove-PnPFileVersion -Url "Shared Documents/Budget.xlsx" -All 

Traiter toute une bibliothèque (tous les fichiers)

$siteUrl = "https://contoso.sharepoint.com/sites/Finance"
$library = "Shared Documents"

Connect-PnPOnline -Url $siteUrl -Interactive

# Récupère tous les éléments de la bibliothèque (par lot pour éviter le throttling)

$items = Get-PnPListItem -List $library -PageSize 2000 -ScriptBlock `
{ Param($items) $items.Context.ExecuteQuery() }

foreach ($item in $items) {
try {
$serverRelativeUrl = $item.FieldValues.FileRef
Write-Host "Nettoyage des versions -> $serverRelativeUrl"
Remove-PnPFileVersion -Url $serverRelativeUrl -All -Force
}
catch {
Write-Warning "Échec sur $($item.FieldValues.FileRef): $($_.Exception.Message)"
}
} 

Filtrer uniquement les fichiers Excel > X Mo

$thresholdMB = 50
$items = Get-PnPListItem -List $library -PageSize 2000 -Fields "File_x0020_Size","FileLeafRef","FileRef","DocIcon"

foreach ($item in $items) {
$isExcel = $item["DocIcon"] -in @("xlsx","xlsm","xlsb","xls")
$sizeMB  = [math]::Round($item["File_x0020_Size"]/1MB,2)
if ($isExcel -and $sizeMB -ge $thresholdMB) {
    $url = $item["FileRef"]
    Write-Host "[$sizeMB Mo] Suppression des versions -> $url"
    Remove-PnPFileVersion -Url $url -All -Force
}

} 

Astuce performance : exécutez les suppressions par batches (p. ex. 500 fichiers), espacez les lots (sleep 10–20 s) et limitez les parallélismes pour éviter le throttling. Conservez des logs (CSV) des fichiers traités et des erreurs.

Option 2 : SharePoint Online Management Shell

Pour des environnements plus anciens ou des administrateurs SPO, vous pouvez combiner les cmdlets SPO pour l’inventaire et PnP pour la suppression des versions (les cmdlets SPO n’ont pas d’équivalent direct « Delete All Versions » de fichier au niveau moderne, d’où la préférence pour PnP).

Option 3 : Microsoft Graph + Power Automate / Logic Apps

Graph expose les versions des fichiers via /versions. Comme il n’existe pas un unique endpoint « delete-all », le flux doit énumérer puis supprimer chaque version.

Schéma de flux Power Automate

  1. Déclencheur manuel ou planifié (répéter chaque nuit).
  2. Étape HTTP : GET des versions du fichier.
    GET /drives/{drive-id}/items/{item-id}/versions?$top=200
  3. Boucle sur la collection renvoyée ; pour chaque id :
    DELETE /drives/{drive-id}/items/{item-id}/versions/{version-id}
  4. Contrôles : gestion des erreurs (429/503), reprise sur incident, journalisation.

Exemple de suppression via HTTP (Logic Apps / Flow)

{
  "method": "DELETE",
  "uri": "https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/versions/@{items('For_each')?['id']}",
  "headers": { "If-Match": "*" }
}

Sécurité & conformité : si des étiquettes de rétention ou un litigation hold s’appliquent, la suppression peut être refusée. Vérifiez les politiques dans le Centre de conformité avant d’automatiser.

Après le nettoyage : quand l’espace se libère-t-il vraiment ?

  • Propagation du quota : la baisse d’occupation n’est pas toujours instantanée. Comptez de quelques minutes à plusieurs heures pour que l’admin center reflète l’espace libéré.
  • Corbeilles SharePoint : pensez à purger la corbeille du site (1er niveau) et celle de la collection (2e niveau) pour récupérer de l’espace immédiatement.
  • Journaux d’audit : un volume important d’opérations peut également être comptabilisé temporairement.

Paramétrer la bibliothèque pour éviter la rechute

Réglages conseillés

  1. Dans la bibliothèque : ParamètresParamètres de contrôle de version.
  2. Conserver uniquement les N dernières versions majeures (p. ex. 50 à 100). C’est le garde‑fou essentiel.
  3. Désactiver ou limiter les versions mineures (brouillons) si elles ne sont pas requises dans votre processus d’approbation.
  4. Éviter les enregistrements à haute fréquence sur un même fichier (scripts, dataflows, ETL). Préférez un stockage base de données ou Dataverse si des mises à jour multiples par heure sont nécessaires.
  5. Mettre en place une alerte (Power Automate, Centre d’administration) lorsque l’utilisation dépasse un seuil (p. ex. 80 % du quota).

Bonnes pratiques d’équipe

  • Éduquez les utilisateurs sur la co‑création Excel : privilégiez des onglets dédiés à l’entrée de données et limitez l’enregistrement incessant de macros.
  • Évitez d’alimenter Power BI directement depuis un unique classeur mis à jour en continu ; préférez des fichiers journaliers/hebdos ou une source transactionnelle.
  • Formalisez une politique de versioning par type de bibliothèque (collaboration vs dossier maître).

Scénarios particuliers (Power BI, Power Automate, Excel Online)

  • Power BI : la suppression des versions n’altère pas l’URL/ID du fichier, les rapports restent valides. Si vous migrez vers une copie « propre », mettez à jour les jeux de données/liaisons.
  • Power Automate : si un flux modifie le classeur à haute fréquence, intégrez une étape de purge planifiée (nuit/week‑end) pour rester sous le seuil de versions.
  • Excel Online / co‑édition : avant une purge massive, fermez les sessions actives pour éviter les conflits de verrouillage.

Guide de dépannage

SymptômeCause probableCorrectif
L’option « Supprimer toutes les versions » n’apparaît pasDroits insuffisants ou politique de rétentionObtenir au moins des droits Édition ou demander à l’admin de vérifier les politiques/étiquettes.
Erreur « fichier en cours d’utilisation »Session Excel Online ouverte / application de bureau verrouillant le fichierFermer toutes les sessions, attendre 1–2 minutes, relancer la suppression.
L’espace disque ne baisse pasPropagation différée / corbeille non purgeéeAttendre la synchronisation, puis purger corbeille niveau 1 et niveau 2 de la collection.
PnP renvoie une erreur 429/503ThrottlingRéduire la parallélisation, introduire des pauses, fragmenter par lots.

Exemples de scripts prêts à l’emploi

PnP.PowerShell : suppression de toutes les versions d’un fichier (minimal)

Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/SiteA -Interactive
Remove-PnPFileVersion -Url "Shared Documents/Budget.xlsx" -All

PnP.PowerShell : journalisation CSV + reprise

$siteUrl = "https://contoso.sharepoint.com/sites/Finance"
$library = "Shared Documents"
$log     = "C:\Temp\versions_purge.csv"

Connect-PnPOnline -Url $siteUrl -Interactive

"FileRef;Status;Message" | Out-File -FilePath $log -Encoding utf8

$items = Get-PnPListItem -List $library -PageSize 1000 -Fields "FileRef","FileLeafRef"

foreach ($item in $items) {
$url = $item["FileRef"]
try {
Remove-PnPFileVersion -Url $url -All -Force
"$url;OK;" | Out-File -FilePath $log -Append -Encoding utf8
}
catch {
"$url;KO;$($_.Exception.Message)" | Out-File -FilePath $log -Append -Encoding utf8
}
} 

Microsoft Graph : pseudo-code pour Flow/Logic Apps

// 1) Lister les versions par page
GET https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/versions?$top=200

// 2) Pour chaque version.id retournée
DELETE [https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/versions/{version-id}](https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/versions/{version-id})

// 3) Répéter jusqu'à épuisement des pages (nextLink) 

Check‑list avant d’appuyer sur « Supprimer toutes les versions »

  • ✅ Backup récent (copie du fichier ou export des versions critiques si nécessaire).
  • ✅ Aucun flux/ETL ne pousse des modifications en continu au moment de la purge.
  • ✅ Vérifié : pas d’étiquette de rétention ou de hold qui bloquerait l’opération.
  • ✅ Ouverture/lock : toutes les sessions Excel sont fermées.
  • ✅ Plan de prévention : limites de versions configurées après nettoyage.

FAQ

La suppression de l’historique casse‑t‑elle les liens (URL, ID) du fichier ?

Non. Seule l’historique est supprimée ; l’URL et l’ID restent identiques, vos intégrations (Power BI, Power Automate) continuent de fonctionner. Puis‑je annuler la suppression de toutes les versions ?

Pas directement. Une fois les versions supprimées et les corbeilles purgées, il n’existe pas de restauration granulaire. Assurez-vous d’avoir une sauvegarde si besoin. Pourquoi la taille affichée ne baisse‑t‑elle pas tout de suite ?

Les compteurs d’espace se mettent à jour de façon asynchrone. Attendez la propagation, puis vérifiez les corbeilles. En cas de volumétrie extrême, cela peut prendre plusieurs heures. Peut‑on limiter automatiquement le nombre de versions ?

Oui. Dans Paramètres de contrôle de version, fixez un nombre maximum de versions majeures et, si nécessaire, désactivez les versions mineures. Et si le fichier dépasse des limites de taille ?

Si le fichier est devenu trop volumineux pour des opérations courantes, travaillez sur une copie « propre » puis remplacez l’original, ou migrez la source de données vers un stockage plus adapté (base, Dataverse).

Modèle d’implémentation (pas à pas)

  1. Identifier les fichiers problématiques (tris par taille dans la bibliothèque).
  2. Nettoyer chaque fichier avec « Supprimer toutes les versions » (OneDrive/SharePoint).
  3. Automatiser pour les autres bibliothèques via PnP.PowerShell ou Graph si nécessaire.
  4. Contrôler le quota et purger les corbeilles.
  5. Sécuriser la configuration de versioning (seuils, pas de versions mineures inutiles).
  6. Surveiller par alertes (Power Automate) et revue mensuelle.

Cas pratique : fichier Excel avec ~20 000 versions (400 Go)

Symptômes : impossible de déplacer/copier le fichier, opérations échouant par manque d’espace. Cause : versions créées en rafale (macro, flux, dataflow). Remède :

  1. Utiliser l’interface pour Supprimer toutes les versions du classeur.
  2. Purger la corbeille de site et, si besoin, la corbeille de collection.
  3. Mettre en place une limite de versions (p. ex. 100).
  4. Analyser les automatisations qui modifient le fichier et les adapter (batch, agrégation, base de données).

Résultat attendu : taille du classeur réduite à la seule version active, espace libéré de plusieurs centaines de Go après propagation.

Bonnes pratiques (récapitulatif)

  • Un classeur n’est pas un entrepôt transactionnel. Pour des écritures fréquentes, préférez un stockage dédié.
  • Fixez des limites de versions dès la création des bibliothèques.
  • Automatisez un housekeeping mensuel (scripts planifiés, alertes).
  • Documentez les responsabilités (propriétaires de bibliothèques) et la procédure de purge.

Scripts de référence (rappel)

# Exemple minimal PnP PowerShell : supprimer toutes les versions d’un fichier
Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/SiteA -Interactive
Remove-PnPFileVersion -Url "Shared Documents/Budget.xlsx" -All

Adaptez la boucle pour traiter plusieurs fichiers ou bibliothèques, avec journalisation et contrôle d’erreurs.

Conclusion

Oui, il est possible de supprimer en un seul clic l’ensemble de l’historique des versions d’un classeur Excel via l’interface OneDrive/SharePoint. Pour des volumes massifs ou des bibliothèques entières, appuyez‑vous sur PnP.PowerShell ou Microsoft Graph. Enfin, verrouillez vos paramètres de versioning pour éviter toute nouvelle saturation.

Sommaire